6

我曾尝试以低毫秒速率使用 Console.Beep() 两个“同时”播放两个频率,但哔哔声之间的停顿会破坏它。我已经尝试研究它,但除了我正在寻找的 DirectSound 之外,我什么也没找到,也不知道从哪里开始。我所需要的只是用 C# 编写一个程序,用一个扬声器同时播放两个或多个频率。

谢谢。

4

5 回答 5

2

我建议您查看 DirectSound,它具有很好的 .NET 绑定。您可以使用两个(或更多)Buffer对象并调用它们的Play方法来同时播放它们。

本教程展示了如何通过动态合成声音在 C# 中实现一个简单的鼓机。希望能帮助到你。

于 2011-01-16T00:18:18.097 回答
0

尝试使用 MIDI。这个例子应该让你开始。它使用了几个人高度推荐的 MIDI 库。

于 2011-01-16T00:12:55.217 回答
0

Console.Beep() 是同步的,直到声音结束才返回。

试试简单的 DirectMedia 层 ( SDL.net )。

于 2011-01-16T00:21:15.667 回答
0

这是一些非常简单的示例代码,可让您播放 WAV 或 MIDI 文件。这样,您可以编写一次代码,然后如果您想更改音效,只需维护 wav 或 mid 文件。

播放任何声音文件 - C#(使用 DirectX 9.0 进行托管代码)

于 2011-01-16T00:52:33.427 回答
0

如果您事先知道频率,则可以将它们合成为波形文件(大胆或其他类似程序),然后使用SoundPlayer类播放波形文件。

string path = /*path goes here*/;
player = new SoundPlayer(path);
player.Play();

如果您需要在运行时合成它们,则必须手动编写文件。这是一个 SO question,您可以参考它来构建波文件。

于 2011-01-16T04:24:40.887 回答