2013-02-20 204 views
0

我是音频编程新手,我有一个任务要做,我不知道该怎么做。如果你能指引我走向正确的方向,那对我来说意义重大。单声道多声道播放器

我想通过一个声音设备的所有通道播放不同的mp3文件,例如7.1声卡,通过所有8个单声道。但我想单独控制它们,我的意思是能够播放,暂停,停止和其他标准播放器选项。

我一直在测试MultiplexingWaveProvider,它工作得很好,但我没有选择播放或停止音乐等。然后我尝试了ASIO驱动程序,尝试为每个频道分别处理每个频道但最后一次呼叫我给ASIO构造函数覆盖了第一个。我怎样才能使这个工作?使用Naudio还是其他免费库?

这里是我的代码

AsioOut waveOutdevice1 = new AsioOut(); 
waveOutdevice1.ChannelOffset = -1; 
waveOutdevice1.Init(input1); 

AsioOut waveOutdevice2 = new AsioOut(); 
waveOutdevice2.ChannelOffset = 1; 
waveOutdevice2.Init(input2); 

waveOutdevice1.Play(); 
waveOutdevice2.Play(); 

回答

0

无法打开AsioOut的多个实例。你必须提供多通道输入。 MultiplexingWaveProvider是你需要使用的。我不确定你的意思,你没有选择玩和停止 - 你只是使用游戏。如果您想播放某些频道但不播放其他频道,则可以实现另一个WaveProvider,它可以在从其来源读取和输出静音之间进行切换。换句话说,所有频道都在播放,但其中一些频道正在播放静音。

+0

嗨,马克,谢谢你的回答。你能否指点我一个可以切换WaveProvider的例子,因为我尝试过没有成功,除此之外我还有一个问题,如果我这样做并切换WaveProvider,那么听众不会注意到其他频道中的差距?怎么办? – Efrain 2013-02-28 03:48:30