在调整频率时,是否可以在C#中生成恒定声音?

Che*_*hev 8 .net c# audio winforms

是否有可能在C#中产生一个恒定的声音并随着它的频率操纵它的频率?

我试过这样的事情:

for (int i = 500; i < 15000; i += 1)
{
    Console.Beep(i, 500));
}
Run Code Online (Sandbox Code Playgroud)

但是同步,循环等待每个蜂鸣声完成.所以我尝试了这个:

for (int i = 500; i < 15000; i += 1)
{
    new Thread(x => Console.Beep(i, 500)).Start();
}
Run Code Online (Sandbox Code Playgroud)

我认为这将是产生频率不断增加的恒定声音的开始.然而,它仍然口吃.有没有办法实现这一目标但更顺利?

Mus*_*sis 7

如果您想要实时执行此操作(即根据用户输入动态更改频率),这将非常困难,并且需要您编写软件合成器.在这种情况下,您可能想尝试使用像NAudio这样的库(尽管我不是100%肯定NAudio会进行实时合成).

另一方面,如果你只想预先生成一个具有连续提升音调的WAV文件然后播放它,这非常容易.

编辑:第三种方法是播放MIDI声音并将控制变更信息发送到MIDI设备,以逐渐将portmanteau应用于演奏音符.这也很容易,但缺点是你无法确定它在其他人的计算机上的确切声音.

  • 你可以百分百肯定... http://mark-dot-net.blogspot.com/2009/10/playback-of-sine-wave-in-naudio.html (3认同)