4

我的设备有 2 个外部扬声器。我怎样才能分别测试它们?

1个只在左边播放声音的功能,一个只在右边播放声音的功能。

谷歌搜索没有成功。也许我使用了错误的术语。

也许使用 WIN32 API 设置平衡?

4

2 回答 2

4

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

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

您可以使用 Audacity 来创建声音。

就 .NET API 而言,您可以通过http://windowsmedianet.sourceforge.net/试试运气

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

编辑:

顺便说一句,您可以使用 waveOutOpen 两次打开同一设备,一次播放 LEFT 声音文件,并在两个单独的 waveOutOpen 设备句柄上独立播放 RIGHT 声音文件,它们都指向同一个物理设备。根据声音的类型,声音会在您选择的扬声器上按预期发出。

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

我不建议使用 balance,因为混音器 API 很难理解,而且你会不小心为 BOTH 播放样本设置 API。

更多信息:

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

于 2012-04-15T07:04:57.970 回答
1

我不认为 .NET 本身有足够的控制权来做你所要求的。您可能必须使用 3rd 方库。看看NAudio,它肯定能做你想做的事。

于 2012-04-15T06:28:54.477 回答