所以我有每个音频接口有 18 个输入通道。来自这些设备的数据通过使用名为 PortAudio 的库的 C++ 程序提供。问题是,当我开始让每个设备的通道数超过 13 个时,它开始出现paInputOverflow
问题,因为它无法处理似乎使用单个recordCallback
函数的负载。 (甚至尝试使用空回调函数,但仍然遇到paInputOverflow
问题,因此与代码无关)
首先,我认为可以有一种方法来选择要使用的通道,允许我拆分它们并让不同的回调处理不同的通道,但这看起来只有 MacCore 和 ASIO 支持,而我使用的是 ALSA。
其次,我的想法是将输入通道分成两个设备,基本上为前 9 个通道使用一个虚拟设备,为其他 9 个通道使用第二个虚拟设备。
我尝试使用pactl load-module module-remap-source
,虽然它确实创建了一个重新映射,但它没有将其检测为 PortAudio 中的单独输入“设备”。还尝试编辑/etc/asound.conf
并尝试以这种方式分割它们:
使用类似这样的东西:
pcm_slave.firstdevice {
pcm "hw:5,0"
channel 18
}
pcm.firsthalf {
type plug
slave.pcm {
type dsnoop
ipc_key 12345
slave firstdevice
bindings [ 0 1 2 3 4 5 6 7 8 ]
}
}
pcm.secondhalf {
type plug
slave.pcm {
type dsnoop
ipc_key 12345
slave firstdevice
bindings [ 9 10 11 12 13 14 15 16 17 ]
}
}
不幸的是,这根本不起作用。我怀疑我可能做错了什么。但此时我已经没有主意了。任何帮助将不胜感激。
PS.:我使用的具体发行版是 Ubuntu 18.04。
答案1
不要"hw:5,0"
尝试通过别名来引用该卡,例如"hw:M-Audio18"
.您可以使用以下命令获取别名
aplay -l