我目前正在开发一个脚本,该脚本应该能够在声卡上输出8个音频通道(.wav文件)到8个不同的通道。我的脚本有点工作,但我有同步问题。我能够听到通道之间的时序在播放期间发生变化,这非常关键。
目前我正在使用线程来启动每个声道。
我的问题是,如果你们对我如何在频道/线程之间实现更好的同步有任何建议? 我仍然想使用sounddevice,因为它在映射(左或右通道)我的输出通道时效果很好。
提前谢谢大家。
答案 0 :(得分:0)
同步不同的流非常困难(很可能是不可能的)。您应该一次只使用一个Stream
(或OutputStream
)个对象。在单个流中处理8个通道应该不是问题。
您可以使用8个频道的play()功能,也可以创建处理8个频道的自定义回调功能,并在Stream或OutputStream中使用。
<强>更新强>
无法在流中使用多个设备,另请参阅issue 29 on Github。您可以尝试使用其他主机API。你有声卡的ASIO驱动程序吗?使用ASIO,您通常会获得一个具有多个通道的设备。 如果这不起作用,您可以尝试询问PortAudio mailing list。
输入数据应该是一个二维NumPy数组,每个通道有一列。请查看Stream类的callback
参数的文档。