我正在创建一个小项目,最终将在明年的最后一年项目中使用。
所以现在我创建了一个使用USB(虚拟COM port)的小传感器并返回一个从0到100的值。我有一个进度条,它基本上升和下降取决于来自的返回值传感器通过虚拟COM端口。
现在我的问题就在这里。当传感器推得足够硬并且返回值100时,我想发出一个小的声音(这部分已完成并正常工作)。但我也希望当传感器的值在50到95之间时,会产生一个音调并通过扬声器输出。
音调应该是连续的,所以如果用户按下传感器,并且假设值为65,如果用户没有从传感器上移除压力,它应该继续输出平坦的音调。如果用户按下了一点点,让我们说返回值为75,我想增加音调频率。
最重要的是它是来自传感器的值的连续音调,从50到95,其中50将发出低频,95将输出更高的频率。这应该是实时的。
代码全部通过C#完成,我想使用C#库。我从未使用DirectX,如果没有必要,我不太愿意下载一个庞大的图书馆。
我愿意购买一些小型图书馆或使用开源图书馆,只要图书馆的价格不超过50美元或在该范围内。
答案 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上不支持“方法”。可能这将使用更少的资源然后生成一个波然后播放它。