Alsa
如何將 dmix 與 ladspa 外掛結合到預設設備
有一段時間,我已經放棄了所有的聲音守護程序,只用了 dmix 外掛就過上了幸福的生活。然而,最近我對 youtube 影片的不同音量感到惱火,並決定插入壓縮器和限制器。恕我直言,這是一個非常理想的設置。
但很可惜,我沒有運氣。我讓播放工作或捕捉,但從來沒有兩者兼而有之。我想根本的問題是我缺乏理解,所以我的基本問題是:
- 我在哪裡可以找到關於 alsa 和 .asoundrc 的良好文件,這些文件不僅僅是範例,還可以解釋我得到的錯誤消息(見下文)。
- 有沒有人在包含 ladspa 外掛的無守護聲音設置中取得成功?
- 有人知道原因,甚至是我的特定問題的解決方案(如下所述)嗎?
對於那些有耐心追隨我的困境的人來說,他們來了。我已經能夠播放這樣的聲音了
aplay -D ladspaChain /usr/share/skype/sounds/CallBusy.wav
但我無法通過預設設備播放。
pcm.!default { type plug slave.pcm { type asym playback.pcm "ladspaChain" capture.pcm "dsnooper" } }
沒有-D ladspaChain,我得到
aplay: pcm_params.c:170: snd1_pcm_hw_param_get_min: Assertion `!snd_interval_empty(i)' failed.**
或者我試過
pcm.!default { type route slave.pcm { type asym playback.pcm "ladspaChain" capture.pcm "dsnooper" } ttable { 0.0 1 # left channel 1.1 1 # right channel } }
在這種情況下,播放有效,但 arecord 給了我
arecord: set_params:1081: Sample format non available Available formats: - S32_LE
我在https://forums.gentoo.org/viewtopic-t-733367-start-0.html上找到了一個完整的答案(這與 Permat 和 Ramesh 的答案非常吻合):
ciaranhearne:“基本上我必須先將 Dmix 定義為外掛,然後才能使用它”
雖然這僅適用於 alsa,但我無法讓 pulsaudio/ apulse工作(對於 skype)。當我將脈衝設置為直接使用 dmix 時,它起作用了,但它獨占了設備並且 alsa 不再起作用。讓脈衝使用遠離卡的 pcms 根本不起作用。
解決方案是創建兩個 dmixes。我現在有
- 一種永久插入 ladspa 外掛的方法(在我的情況下是限制器)
- 預設設備工作(firefox很高興)
- 沒有脈衝音頻
- Skype 仍然通過 apulse 工作
導出 APULSE_PLAYBACK_DEVICE=plug:duplexPulse
脈衝Skype
這是我現在的 .asoundrc
#-------------------------------------------------- # Cards #-------------------------------------------------- pcm.audiophile { type hw card 0 } ctl.audiophile { type hw card 0 } #-------------------------------------------------- # Normal alsa #-------------------------------------------------- pcm.!default { type plug slave.pcm "duplex" } pcm.duplex { type asym playback.pcm "ladspa" capture.pcm "dsnooper" } # --- ladspa chain --- pcm.ladspa { type ladspa slave.pcm "dmixplug" path "/usr/lib/ladspa"; plugins [ { label fastLookaheadLimiter input { #InputGain(Db) Limit (db) Release time (s) controls [ 9 -3 10] } }] } pcm.dmixplug { type plug slave.pcm "dmixer" } pcm.dmixer { type dmix ipc_key 1234 slave { pcm "audiophile" period_size 1024 buffer_size 4096 rate 44100 } } pcm.dsnooper { type dsnoop ipc_key 2048 ipc_perm 0666 slave.pcm "audiophile" slave { period_time 0 period_size 1024 buffer_size 4096 rate 44100 } bindings { 0 0 1 1 } } #-------------------------------------------------- # special entries for pulseaudio/apulse #-------------------------------------------------- pcm.duplexPulse { type asym playback.pcm "dmixerPulse" capture.pcm "dsnooper" } pcm.dmixerPulse { type dmix ipc_key 1234 slave { pcm "audiophile" period_size 1024 buffer_size 4096 rate 44100 } }
使用外掛(也接受表格)而不是路由作為類型,這意味著您可以跳過一級嵌套。