ALSAを介してさまざまなソース(MP3、CD、音声シンセサイザー)のサウンドを再生するサウンドソリューションがあります。複数のソース(同時に1つだけのサウンド再生)を可能にするために、それをプライマリdmix
ALSAサウンドデバイスとして設定して、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
デフォルトでは、ボリュームはプラグインに到達するまで影響を受けませんdmix
。softvol
デバイスの上に別々のデバイスを作成します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
}
}
}