
sox が jack から入力を受け取り、何か (私の場合はローパス フィルター) を実行して、処理されたストリームを jack に出力するようにするには、どうすればよいでしょうか。
sox foo.wav bar.wav lowp 1000.0
入力 wav を受け取り、別の wav に出力しますが、次のようなものが必要です。
sox JACK_INPUT JACK_OUTPUT lowp 1000.0
ジャックを使用して任意のサウンド ソースを JACK_INPUT に接続し、Sox がロー パス フィルターを適用した JACK_OUTPUT をジャックの処理チェーン内の他のポートに接続できます。
これが不可能な場合は、代替案の提案をいただければ幸いです。ソリューションは Linux 上の jack で動作し、ローパス/ハイパス フィルタリングが可能で、できれば sox のような biquad フィルタが使用できる必要があることに注意してください。接続に一意の名前を付けて、スクリプトが各スピーカーに対して個別のフィルタを起動できるようにすると、さらにポイントが上がります。
よろしくお願いします。
答え1
SoX には JACK ドライバーがありません。JACK ドライバーを書くのはそれほど難しくありませんが、SoX のアーキテクチャにより、レイテンシは常に必要以上に高くなります。
単純なIIRフィルタリングだけが必要な場合は、次のようなLADSPAホストを使用してください。ジャックラック適切なプラグイン、例えばマティアス・ナゴルニ著またはbuttlow_iir
/butthigh_iir
などからスティーブ・ハリスのコレクション。