我尝试以低毫秒速率使用Console.Beep(),两次“同时”播放两个频率,但是蜂鸣声之间的暂停会使它失效。我已经尝试过研究但是我什么也没找到,除了我正在寻找的DirectSound之外,我不知道从哪里开始。我所需要的只是制作一个程序,用一个扬声器同时播放两个或多个频率,用C#。
感谢。
答案 0 :(得分:2)
我建议你看看DirectSound,它有很好的.NET绑定。您可以使用两个(或更多)Buffer
个对象并调用他们的Play
方法同时播放它们。
This tutorial展示了如何通过动态合成声音在C#中实现简单的鼓机。希望它有所帮助。
答案 1 :(得分:0)
尝试使用MIDI。 This example应该让你入门。它使用了一些人们高度推荐的MIDI库。
答案 2 :(得分:0)
Console.Beep()是同步的,直到声音结束才会返回。
尝试Simple DirectMedia Layer(SDL.net)。
答案 3 :(得分:0)
这里有一些非常简单的示例代码,可让您播放WAV或MIDI文件。通过这种方式,您可以编写一次代码,然后只需要维护wav或mid文件,如果您想对声音效果进行更改。
Play Any Sound File - C#(使用DirectX 9.0作为托管代码)
答案 4 :(得分:0)
如果您事先知道频率,可以将它们合成为波形文件(大胆或其他类似程序),然后使用SoundPlayer类播放波形文件。
string path = /*path goes here*/;
player = new SoundPlayer(path);
player.Play();
如果需要在运行时合成它们,则必须手动编写文件。 Here's您可以参考构建wave文件的问题。