连续音生成

时间:2011-06-27 19:00:55

标签: c# .net

我正在创建一个小项目,最终将在明年的最后一年项目中使用。

所以现在我创建了一个使用USB(虚拟COM port)的小传感器并返回一个从0到100的值。我有一个进度条,它基本上升和下降取决于来自的返回值传感器通过虚拟COM端口。

现在我的问题就在这里。当传感器推得足够硬并且返回值100时,我想发出一个小的声音(这部分已完成并正常工作)。但我也希望当传感器的值在50到95之间时,会产生一个音调并通过扬声器输出。

音调应该是连续的,所以如果用户按下传感器,并且假设值为65,如果用户没有从传感器上移除压力,它应该继续输出平坦的音调。如果用户按下了一点点,让我们说返回值为75,我想增加音调频率。

最重要的是它是来自传感器的值的连续音调,从50到95,其中50将发出低频,95将输出更高的频率。这应该是实时的。

代码全部通过C#完成,我想使用C#库。我从未使用DirectX,如果没有必要,我不太愿意下载一个庞大的图书馆。

我愿意购买一些小型图书馆或使用开源图书馆,只要图书馆的价格不超过50美元或在该范围内。

2 个答案:

答案 0 :(得分:2)

嗯,实际上你不需要为此购买图书馆。您可以使用免费 NAudio库。它允许您创建和播放WAV个文件。看看功能。 这也可能有所帮助:

现在您可以轻松地执行以下操作:

loop_to_detect_sensor_input()
{ 
   freq = somefunction(SensorValue);
   generate_audio = SomeFunc1(freq);
   Play_the_generated_audio;
}

答案 1 :(得分:1)

从C#2.0开始,System.Console有一个Beep变体,它需要频率和持续时间:http://msdn.microsoft.com/en-us/library/4fe3hdb1.aspx。我从未使用它,但您可以将0-100强度范围扩展到频率范围。您可以在后台线程中异步播放蜂鸣声。持续记录可能很难,这需要精确的计时。另一个缺点可能来自MSDN页面备注部分:64位版本的Windows Vista和Windows XP上不支持“方法”。可能这将使用更少的资源然后生成一个波然后播放它。