2017-11-16 31 views
0

これで、NAudioのlibを探検しています。ASIOデバイスの特定のチャンネルにn個のオーディオソースを同時に(同時に)送信します

しかし、私はASIOクラスを使用して何かが欠けているかどうかはわかりません。基本的に私の要件は次のとおりです。

  • 動的出力(モノラル)ソースASIOデバイスに、専用チャネル(後で私はおそらく64チャンネルで働くことになります)
  • の各ソースは、ストリーム」への無料う

    : '(同時に複数のソース)セッション中の任意の時点で、デバイスへのn個のオーディオソースは

ように、コードで私のようなものを持っていると思い、各チャンネルのコントロールを持っています10

... 

WaveFileReader source1 = new WaveFileReader(pathToMyFile1); 
WaveFileReader source2 = new WaveFileReader(pathToMyFile2); 
WaveFileReader source3 = new WaveFileReader(pathToMyFile3); 
... 

WaveFileReader sourceN = new WaveFileReader(pathToMyFileN); 

AsioOut out = new AsioOut(); 

... 

/*Now init out...*/ 

... 

out.Play(); 

... 

/* now react on events, possibly within a multi-threaded enviroment*/ 
/* and concurrently send each of these sources to a dedicated channel*/ 
/* as required, (as stated, possibly even many at the same time) */ 

... 

だから私の質問は基本的には次のとおりです。

私は、既存のクラスのいずれかを使用して、このような何かを達成することはできますか?または、私は、インターフェイス(ISampleProvider、IWaveProviderなど)のうちの1つを自分自身でエンパワーメントする必要がありますか、かなり抽象度が下がっていくと確信していますか?

これに任意の入力ありがとう!

答えて

0

MultiplexingWaveProviderは、あなたが望むものに近い何かをすることができます。それについてhereを読んでください。 64チャンネルの作業では、パフォーマンスが問題になる可能性があるため、細かく調整したコードを書く必要があるかもしれません。

+0

入力いただきありがとうございます、私は実装をより深く見ていきます。一般に、ASIOドライバのアクセスが開かれた後、専用チャネルバッファへの書き込みは問題ではありません。 –

+0

はい、バッファに直接書き込む場合は最高のパフォーマンスです –

関連する問題