星期三, 11月 12, 2008

PulseAudio & Skype 新解!

PulseAudio 還是有不完全的地方阿.. 今天剛考完期中考本來想跟同學打個SC (not CS!) 開了cedega 進去SC 發現沒聲音, 囧掉了, 沒法已經開了遊戲打完那場(還是贏嘛, 喔喝喝) 開始了我與PA 奮鬥的旅程..

Cedega 之所以沒聲音其實我也不太確定為什麼.. 總而言之應該是ALSA 跟 PA 接軌的地方有點問題(因為wine 並沒有直接支援 PA, 所以應該是透過libasound 再由 PA 輸出). 網路上的同好似乎也都有相同無解的問題, 後來看到這篇 又挑起我的希望. 其重點是把 PulseAudio 當作ALSA 其中一個channel, 用dmix 來混合輸出.

步驟記錄一下:
( ~/.pulse/default.pa )
找到
#load-module module-alsa-sink

在他下面加兩行:
load-module module-alsa-source device=dsnooped
load-module module-alsa-sink device=dmix
這是讓pa 把聲音輸出到 dmix, 且增加一個source: dsnooped(等一下解釋), 接下來再把
load-module module-hal-detect
comment 掉, (改成 #load-module module-hal-detect )
然後重開pulseaudio, 重新登出登入或是 (killall pulseaudio && pulseaudio -D)
如此一來, pa 就會輸出到 dmix, 成為alsa 的屬下! (誤

接下來是改 ~/.asoundrc
如果你有照pa 官方或是網路上很多的教學, 可能已經把pcm.!default 設成輸出到pulse, 那麼你可以把 pcm.!default, ctl.!default 刪掉了, 留pcm.pulse & ctl.pulse 就好.

此外, 我又加了
pcm.dsnooped {
type dsnoop
ipc_key 12345
slave {
pcm "hw:1,0"
channels 1
}
}
是要讓skype 不霸佔整個input source.
---
好了! 在這邊大概是告一段落. 接下來就依自己的喜好而調整設定了.
若是希望程式使用 pulseaudio (可以調整個別程式的音量) 且程式直接支援pa, 那當然是直接選pulseaudio, 若只支援alsa, 則選 pulse (pcm.pulse). 若不希望使用pa, 則自行選其他的.

Skype 方面的設定. 我是將input 選 dsnooped (alsa), output兩個選pulse (pa through alsa) 這樣能正常講話又不會把音樂調小聲連 skype 都變小聲.

Cedega 的地方由於之前說過了, pa 用起來有問題, 所以選default (alsa) 來輸出聲音. 這樣就沒問題了!
--------------------
使用dsnoop 的原因是, 我跟朋友玩遊戲時會需要使用 mumble, 可是如果我選我的alsa input source 的話, skype 有電話來我就不能接了, 因為 alsa input 不給分享 source, 但是透過alsa 的 dsnoop plugin, 就可以分享這個input source (其實就有點像dmix).

沒有留言: