ALSAでハイパスフィルタを介してオーディオ出力を送信するには?

ALSAでハイパスフィルタを介してオーディオ出力を送信するには?

私は複層住宅に住んでいますが、私の音楽にベースがあれば隣人が聞くことができます。解決策として、スピーカー(ヘッドフォンを除く)を介して着信オーディオにハイパスフィルタを適用するようにALSAを設定したいと思います。この目標をどのように達成できますか?

ベストアンサー1

これは私に当てはまる部分です~/.asoundrc。私のスピーカーは、hw:3ALSAでマークされているUSBオーディオデバイスに接続されています。私の個人設定にはhw3mix上記のデバイスがすでにあります。ここ、複数のクライアントストリームをに混在させますhw:3。注釈付きの行に示すように、他のオプションも可能です。

pcm.hw3highpass {
    type ladspa
    slave.pcm "plug:hw3mix";
    # you can choose a different hardware device (no mixing) like this:
#    slave.pcm "plughw:0,0";
    # and you can even specify basic mixing in the same line:
#    slave.pcm "plug:dmix:0"

    # but note that the following doesn't work, we need 'plug' to
    # convert to/from floating point
#    slave.pcm "hw3mix";

    path "/usr/lib/ladspa";
    plugins [{
        label hpf
        input {
            controls [ 1000 ]
        }
    }]
    hint {
        show on
        description "Highpass filter for hw:3"
    } 
}

pcm.!default plug:hw3highpass

ハイパスフィルターはラスパプラグイン(タグhpf)。私のライフスタイルには他のプラグインが役に立つかもしれません。コンプレッサーを追加

私が2回呼び出したプラグインは、plugフォーマット変換を自動的に実行するやや魔法のようなプラグインです。浮動小数点を要求するLADSPAとインタフェースする必要があります。フィルタチェーンを表示してコマンドを実行して、浮動小数点変換が行われていることを確認できますaplay -v some.wav。スレーブ定義plug:にプレフィックスがない場合は、hw3mix「ALSA lib pcm_params.c:2162: (snd1_pcm_hw_refine_slave) スレーブ PCM を使用できません」という秘密のエラー メッセージが表示されます。plug:最後の行にデフォルトのエイリアスがない場合は、「aplay:set_params:1292:アクセスタイプは利用できません」という別の秘密のエラーメッセージが表示されます。いやLinux!

ALSA文書は理解しにくく、オンラインで見つけた他の解決策は不必要に複雑だったので、私自身の質問に答えています。 LADSPAプラグイン部分のid代わりに数字を使用するか、手動でfloatを実行するための2つの追加の名前付きデバイスを定義します。label- >ここに示されているプレフィックスを使用する代わりに、整数変換を使用したり、最後の行で行ったように、デバイスplug:に直接エイリアスを割り当てる可能性についての言及はありません。plug:...基本を理解すると、構成がどれほど簡単で、ALSA / LADSPAがどれほど有用で強力かを驚きました。

Volker Schatzのチュートリアルが見つかりました。「ALSAの詳細を見る」これらを把握することが不可欠です。明らかに、ALSAは彼のチュートリアルが書かれてからわずかに変更されました。たとえば、彼はDmixが機能していないと言っており、パラメータを持つデバイスにはエイリアスは許可されていません(私のエイリアスはpcm.defaultそのようなエイリアスの1つです)。

おすすめ記事