如何在不同的扬声器上播放声音?

时间:2012-04-15 06:21:31

标签: c# .net

我的设备有2个外部扬声器。我怎么能分开测试呢?

1个仅在左侧播放声音的功能,仅在右侧播放声音的功能。

用Google搜索没有成功。也许我使用的是错误的条款。

也许使用WIN32 API设置余额?

2 个答案:

答案 0 :(得分:4)

如果您正在谈论立体声扬声器系统设置中的2个扬声器,那么您的解决方案很简单。

创建仅在左声道播放的声音,然后播放。然后,创建一个只在右声道播放的声音,播放它。

您可以使用Audacity创建声音。

就.NET API而言,你可以试试http://windowsmedianet.sourceforge.net/

你可能需要的是http://msdn.microsoft.com/en-us/library/ms712636(VS.85).aspx,因为它们整齐地包裹着它们。

编辑:

BTW,你可以使用waveOutOpen打开同一个设备两次,并且一旦播放LEFT声音文件,并在两个独立的waveOutOpen设备处理器上独立播放RIGHT声音文件,它们都指向同一个物理设备。根据声音的类型,声音将根据您的选择在您选择的扬声器上出现。

此外,如果您想以编程方式创建声音,只有LEFT频道意味着音频文件中的每个其他PCM样本都应为0。

我不建议使用余额,因为混音器API很难理解,并且你会意外地为两个播放的样本设置API。

更多信息:

您可以使用http://msdn.microsoft.com/en-us/library/system.media.soundplayer(VS.80).aspx播放WAV文件。如果您没有WAV文件,但想要播放来自MemoryStream的内容,请找到一种在音频样本数据前面插入某种形式的WAV标题的方法。你不会是第一个尝试它的人:)

答案 1 :(得分:1)

我认为.NET本身并没有足够的控制力去做你要求的事情。您可能不得不使用第三方库。查看NAudio它一定能够做你想做的事。