0

そこで、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>}

だから私は各チャンネルのインデックスを知ることができます。問題は、どのチャネルが実際に左、右、中央などであるかを判断する方法です。または、方法がないので、ユーザーに任せて、手動で位置を教えてください。

4

2 に答える 2

1

ASIOの目的は、マルチチャネルオーディオインターフェイスに高性能の抽象化を提供することです。

それが設計されたドメイン(つまり、プロのオーディオアプリケーション)では、チャネル数は多くの場合2をはるかに上回り、チャネルのペアがステレオバスであるかどうか、およびどのチャネルがどちらであるかは、ユーザーがどのように接続したかによって異なります。それらのインターフェースの入力と出力。

ASIO APIは、チャネルのルーティング情報(名前ラベルや接続先など)を取得する手段を提供していません。よくあることですが、オーディオインターフェイスのコントロールパネルソフトウェアにもこの機能があります。
これはASIOの長年の赤字でした。

チャネルのグループ(ステレオまたは5.1バスなど)の使用は、純粋に慣例です。少なくともステレオアプリケーションでは、左チャンネルは通常、シーケンシャルペアの小さい番号のチャンネルです。

MacOSXを使用している場合、CoreAudioは名前チャンネルと意味のあるオーディオルーティングデータの両方を提供します。ASIOはアプリケーションとCoreAudioAPIの間の薄いラッパーとして機能するため、これを取得できます。

于 2013-01-05T19:38:39.900 に答える
0

1つのチャンネル(チャンネル1など)にのみオーディオを出力するコードを記述し、どちらの側が再生されるかを聞くことができます(リグが正しく設定されていると仮定します)。各チャンネルについて同じことを行います(2つ以上の場合... 2つだけの場合は、1つのチャンネルのテストを停止できます)中央のチャンネルは、質問で参照している「モノラル」チャンネルと同じになります。 。乾杯

于 2013-01-05T18:55:08.330 に答える