參考文檔
① alsa pcm plugin
② alsa pcm softvol
③ alsa pcm rate converts
框架一 |
plug:equalizer |
plug:pulse或dmix |
kernel |
driver |
codec |
總結: equalizer消耗cpu嚴重。實測還經常出現bus error錯誤。equalizer選擇可以用alsaequal或者mbeq,甚至可以自己寫。dmix爲alsa-lib自帶。pulse audio爲開源軟件。軟件處理eq,低採樣率可能需要重採樣,會帶入噪音。如果需要mic同時工作,可能導致播放卡頓,這也導致了筆者很痛苦。
框架二 |
plug:pulse或dmix |
hw:0,0 |
alsa |
kernel |
driver |
codec(dsp) |
總結: 適中。筆者沒有硬件測試。
框架三 |
hw:0,0 |
alsa |
kernel |
driver |
codec(dsp,混音) |
總結: 無敵,但昂貴。筆者沒有硬件測試。
- 配置文件
- dmix
pcm.dmix {
type dmix
ipc_key 321456 # any unique value
ipc_key_add_uid true
slave {
pcm "hw"
}
}
- equalizer
#LINE = POWER(10, DB / 20) - 1
pcm.equalizer {
type equal;
# 31.25Hz@-6db
channel0q 1.2247449;
channel0g 0.0000000;
# 62.5Hz@-8db
channel1q 1.2247449;
channel1g 0.0000000;
# 125Hz@8db
channel2q 1.2247449;
channel2g -0.108749;
# 250Hz@2db
channel3q 1.2247449;
channel3g -0.108749;
# 500Hz@-3db
channel4q 1.2247449;
channel4g -0.498812;
# 1KHz@0db
channel5q 1.2247449;
channel5g 0.1220184;
# 2KHz@-1db
channel6q 1.2247449;
channel6g -0.108749;
# 4KHz@-12db
channel7q 1.2247449;
channel7g -0.748811;
# 8KHz@3db
channel8q 1.2247449;
channel8g 0.0000000;
# 16KHz@5db
channel9q 1.2247449;
channel9g -0.205671;
# Modify the line below if you don't want to use sound card 0
slave.pcm "plug:pulse";
# or if you want to use with multiple applications output to dmix
# slave.pcm "plug:dmix"
}
pcm.equal {
type equal;
}