我正在用 C++(开源)为树莓派开发一个汽车收音机应用程序;https://github.com/vinthewrench/carradio
我在 ALSA api 和 Signstek USB DAC 上取得了一些成功,但我想要一些关于如何解决与使用 4 个扬声器相关的问题的建议。
我的代码目前只知道左右通道,并且 snd_pcm_writei 调用“默认”设备。
我相信我可以添加另一个 USB DAC 给我 4 个通道(正面和背面),但我不清楚如何编写代码来与所有 4 个对话。我怀疑答案是创建某种形式的混合虚拟设备前通道和后通道并执行 snd_pcm_open 并调用该设备。
那么问题来了?配置 ALSA 以集成前后通道并让 ALSA 完成所有混音工作的正确方法是什么?
我对如何设置 ALSA 仍然一无所知,而且一直在反复试验。
非常感谢。
您需要设计建议:不要使用两个不同的声卡直接通过 ALSA 驱动相同输出的通道。原因是每个声卡都有一个稍微不同的主时钟,两个通道对的时钟会分开,一段时间后(当你最不期待的时候)你的应用程序会开始出现有趣的错误。
因此,要么使用可以重新采样并纠正时钟漂移的东西(例如 Pulseaudio)。或者找一些有4通道的USB声卡,有很多选择。
如果你是受虐狂并坚持这样做,请查看多插件,并注意其顶部的附加
route
或插件。plug