C# 连续音调生成

C# 连续音调生成,c#,.net,C#,.net,我正在创建一个小项目,最终将在我明年的最后一年项目中使用 所以现在我已经使用USB(虚拟)创建了一个小型传感器,并返回0到100之间的一组a值。我有一个进度条,它基本上会根据传感器通过虚拟COM端口返回的值上下浮动 现在我的问题就在这里。当传感器被足够用力地推入并且返回值100时,我想发出一个小的信号(这部分已经完成并工作了)。但我也希望当传感器的值在50到95之间时,会产生一个音调,并通过扬声器输出 音调应该是连续的,因此如果用户按下传感器,假设值为65,如果用户没有从传感器中移除压力,它应该

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

所以现在我已经使用USB(虚拟)创建了一个小型传感器,并返回0到100之间的一组a值。我有一个进度条,它基本上会根据传感器通过虚拟COM端口返回的值上下浮动

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

音调应该是连续的,因此如果用户按下传感器,假设值为65,如果用户没有从传感器中移除压力,它应该继续输出平音。如果用户再用力一点,比如说返回值75,我想增加音调频率

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

代码都是通过C完成的,我想使用C的库。我从未使用过,如果不是真的需要,我也不愿意下载一个巨大的库


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

好吧,实际上你不需要为此购买图书馆。你可以使用免费的图书馆。它将允许您创建和播放文件。看看这些功能。 这也可能有帮助:

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

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

从C#2.0开始,System.Console有一个蜂鸣音变体,其频率和持续时间为:。我从未使用过它,但你可以将你的0-100强度范围扩展到一个频率范围。您可以在后台线程中异步播放蜂鸣音。可能最难的是持续地保持音符,这需要精确的时间。另一个缺点来自MSDN页面备注部分:“64位版本的Windows Vista和Windows XP不支持此方法”。这可能比生成一个波形然后播放要少很多资源。

可能会重复“通过控制台扬声器播放指定频率和持续时间的嘟嘟声”我认为,从内存(可能是错误的)来看,它是通过内置在电脑中/连接在主板上的扬声器播放的,而不是通过Windows音响系统播放的,而且并非所有现代电脑都有这样的扬声器。这可能会也可能不会影响OP,但我认为我应该提到它。@StephenKennedy说得对。他必须决定这对他是否合适,这是一个权衡。大多数设备都有某种扬声器,至少用于BIOS POST消息。问题可能在于声音的质量,或者他是否想使用耳机。语气不会是100%连续的,但这是迄今为止最简单的解决方案。然而,(我只是在Windows 64位上进行了经验验证)。@PeterMortensen是的,MSDN文章的评论提到“64位版本的Windows Vista和Windows XP不支持此方法”。NET2.0版本没有提到它,我想是因为该功能出现得比Vista更早。