我曾尝试以低毫秒速率使用 Console.Beep() 两个“同时”播放两个频率,但哔哔声之间的停顿会破坏它。我已经尝试研究它,但除了我正在寻找的 DirectSound 之外,我什么也没找到,也不知道从哪里开始。我所需要的只是用 C# 编写一个程序,用一个扬声器同时播放两个或多个频率。
谢谢。
我建议您查看 DirectSound,它具有很好的 .NET 绑定。您可以使用两个(或更多)Buffer
对象并调用它们的Play
方法来同时播放它们。
本教程展示了如何通过动态合成声音在 C# 中实现一个简单的鼓机。希望能帮助到你。
尝试使用 MIDI。这个例子应该让你开始。它使用了几个人高度推荐的 MIDI 库。
Console.Beep() 是同步的,直到声音结束才返回。
试试简单的 DirectMedia 层 ( SDL.net )。
这是一些非常简单的示例代码,可让您播放 WAV 或 MIDI 文件。这样,您可以编写一次代码,然后如果您想更改音效,只需维护 wav 或 mid 文件。
播放任何声音文件 - C#(使用 DirectX 9.0 进行托管代码)
如果您事先知道频率,则可以将它们合成为波形文件(大胆或其他类似程序),然后使用SoundPlayer类播放波形文件。
string path = /*path goes here*/;
player = new SoundPlayer(path);
player.Play();
如果您需要在运行时合成它们,则必须手动编写文件。这是一个 SO question,您可以参考它来构建波文件。