SoXでトーンを簡単に合成できます。いくつかのつまずきがありましたが、私は最終的にそれを理解することができました。
SoXとPulseAudioのインターフェイスに問題が発生したため、sox
生データをにパイプするだけpaplay
です。
パイプラインは退屈なので、スクリプトを作成しました。
$ cat sox-paplay
#!/bin/bash
: ${HZ:=44100}
: ${NCHAN:=6}
: ${SINK:=mysink}
sox -c $NCHAN -n -t raw -r $HZ -L -b 16 - "$@" | paplay --no-remix --no-remap --raw -v -p --rate $HZ -d $SINK --channels $NCHAN
例えば
sox-paplay synth sine 1000 gain -5 remix -m 0 0 1 0 0 0
remix
効果は、単に特定のチャネルに結果を送信するために使用されます。より強力ですが、ここでは基本的な機能のみを使用します。この例では、6チャンネルのデバイスがあり、3番目のチャンネルにトーンを送信しています。
PulseAudioデバイスをラップするALSAデバイスを最初に作成しましたが、ALSAを使用してチャネルマッピングを制御することは不可能であることがわかりました。そのため、カスタムチャネルマップがALSAのデフォルトとどのように異なるかに応じて、ランダムチャネルが混在していました。私が持っている理由はここにある--no-remix --no-remap
中でpaplay
、上記; soxコマンドの生のチャンネルの順序が必要です。
Linuxのオーディオには、より良いドキュメントとエラー報告があればいいと思います。
コマンドラインからPulseAudio Equalizerを設定する方法を示した最近投稿した回答に興味があるかもしれません。