そこで、JAsioHost(https://github.com/mhroth/jasiohost)を使用して、プログラムでASIOを介してオーディオを出力することにしました。
ASIOとの対話は、AsioDriverListener
インターフェースのインスタンスを介して行われます。ASIOホストは、void bufferSwitch(long sampleTime, long samplePosition, Set<AsioChannel> activeChannels)
新しいサンプルを再生するたびにそのメソッドを呼び出します。モノラルサウンドを出力したい場合は、のすべてのチャンネルに同じデータを書き込むだけ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>}
だから私は各チャンネルのインデックスを知ることができます。問題は、どのチャネルが実際に左、右、中央などであるかを判断する方法です。または、方法がないので、ユーザーに任せて、手動で位置を教えてください。