所以,我决定在我的程序中使用 JAsioHost ( https://github.com/mhroth/jasiohost ) 通过 ASIO 输出音频。
与 ASIO 的交互是通过AsioDriverListener
接口实例完成的。void bufferSwitch(long sampleTime, long samplePosition, Set<AsioChannel> activeChannels)
每次想要播放新样本时,ASIO 主机都会调用它的方法。如果我想输出单声道声音,我只需在activeChannels
. 但是,如果我想让事情变得更复杂,因此需要知道确切的通道配置怎么办?
在简单的测试存根程序 ( http://pastebin.com/sC870VJR ) 中,该activeChannels
集合打印如下:
#{#<AsioChannel Output Channel 0: HD Audio output 1, ASIOSTInt32LSB, group 0, inactive>
#<AsioChannel Output Channel 1: HD Audio output 2, ASIOSTInt32LSB, group 0, inactive>}
所以我可以知道每个频道的索引。问题是 - 如何确定哪个频道是真正的左,右,中等等?..或者没有办法,我应该把它留给用户,谁会手动告诉他们的位置?