2011年6月17日 星期五

PulseAudio 主音量與各聲道獨立控制

PulseAudio 在預設的情況下,調整主音量(Master)會跟著調整程式本身的音量(PCM),當你調整其中一個音量控制時,另一個就會被影響。

此時我們可以透過修改 /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common 與 /etc/pulse/daemon.conf 來達到用 Master 控制全域音量且不影響各程式的 PCM 音量。
  1. 在 /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common 中找到 [Element PCM] 這個區塊,並將 volume 從 merge 改成 ignore。
  2. 在 /etc/pulse/daemon.conf 中找到 ;flat-volumes = yes ,並將它的註解拿掉改成 flat-volumes = no。

不知道是不是 PulseAudio 實作的問題,以上的設定在 PulseAudio 剛啟動的時候會變成音量全開,一定要動過主音量以後才會變正常。一個比較醜的懶人方法是在 start-pulseaudio-x11 這個 script 裡加上這兩行:

amixer -D default sset Master "`amixer -D default | grep 'Front Left: Playback' |awk '{print $4-1}'`"
amixer -D default sset Master "`amixer -D default | grep 'Front Left: Playback' |awk '{print $4+1}'`"

這兩行會把 PulseAudio 的 Master 音量先降低 1 單位以後,再加 1 單位回去,讓 PulseAudio 的音量控制正常工作。