动态地将n个音频源(并发)发送到ASIO设备上的特定通道

时间:2017-11-16 16:41:22

标签: c# audio naudio asio

所以我一直在探索NAudio lib。

但是,我不确定我是否遗漏了使用ASIO课程的内容。基本上我的要求如下:

  • 动态输出(单声道)信号源到ASIO设备,每个信号源到专用信道(稍后我可能会使用64个信道)
  • 自由流动'在会话期间的任何时间向设备发送n个音频源(同时有多个源)
  • 控制每个频道

所以在Code I中有类似的东西:

...

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 :(得分:0)

MultiplexingWaveProvider可以做一些接近你想要的事情。阅读它here。对于64通道工作,您可能会发现需要编写自己的微调代码,因为性能可能会成为一个问题。