ALSA를 통해 다양한 소스(MP3, CD, 음성 합성기)의 사운드를 재생하는 사운드 솔루션이 있습니다. 여러 소스(동시에 하나만 사운드 재생)를 허용하기 위해 이를 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
}
}
}