参考文档
① 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;
}