ALSAミキサーで特定の音源を1つだけ出力する音量を設定するには?

ALSAミキサーで特定の音源を1つだけ出力する音量を設定するには?

ALSAを介してさまざまなソース(MP3、CD、音声シンセサイザー)のサウンドを再生するサウンドソリューションがあります。複数のソース(同時に1つだけのサウンド再生)を可能にするために、それをプライマリdmixALSAサウンドデバイスとして設定して、plughwそのデバイス(JustBoom HATサウンドカード)と通信します。この構成はうまくいきますが、ALSAを直接(ライブラリを介さずに)アドレス指定しますsnd_pcm_writei ()snd_mixer_open ()アドレスはsnd_mixer_elem_tオブジェクトを使用して取得します。はいいいえPulseAudio または Jack サーバーを使用します。

今私の質問は次のとおりです。他のすべての音源に影響を与えることなく、この特定の音源(CD)の出力音量をどのように設定できますか?これsnd_mixer_selem_set_playback_volume_all ()により、ミキサー内のすべての音源(CDだけでなくMP3や音声も含む)の音量が変わることがわかります。しかし、CDとMP3をミュートし、案内放送のために音声を最大音量に設定したいと思います。

答え1

デフォルトでは、ボリュームはプラグインに到達するまで影響を受けませんdmixsoftvolデバイスの上に別々のデバイスを作成しますdmix

pcm.somedevice {
    type plug
    slave.pcm {
        type softvol
        slave.pcm "plug:dmix"
        control {
            name "Some Playback Volume"
            card 0                        # must be same card number
        }
    }
}

関連情報