如何生成动态音频信号

时间:2010-08-09 01:48:46

标签: c# c++ audio

我希望使用耳机端口作为控制信号来控制一些电子伺服系统。我需要能够生成脉冲宽度调制信号并快速改变脉冲宽度。我宁愿在C#中这样做,但c ++也可以选择。任何想法是如何做到这一点?

4 个答案:

答案 0 :(得分:1)

您可以查看如何进行midi输出。

我只用C ++做过这个,所以使用C#就是用interop,但这里有一个简单的介绍。

http://midiio.sapp.org/doc/windowsmidi/

在SO出现之前很久,这里就是一个类似问题的一些很好的答案。

http://www.groupsrv.com/computers/about164021.html

答案 1 :(得分:1)

假设您在谈论普通型无线电控制伺服系统,您所说的正脉冲为1-2毫秒宽,脉冲重复频率为20-50赫兹。 1毫秒是坚硬的,2毫秒是硬 - 右,1.5毫秒是居中。脉冲序列上的任何类型的抖动都会导致伺服不稳定。

这可能是一个非常难以在设计用于发出声音的卡上见面的规范。

您可以更轻松地使用外置微控制器生成PWM信号,并通过串行端口进行控制。假设我的目标是快速完成工作,我可能会使用Arduino板(Atmel ATMega328,在硬盘上非常容易使用硬盘)。

答案 2 :(得分:0)

看起来它可能就是您所需要的:

http://www.codeproject.com/KB/audio-video/CS_ToneGenerator.aspx

(谷歌搜索“c#dsp音频发生器”中的第三项)

编辑:如果您需要能够快速更改音调参数,那么您将进入软件合成领域。有许多低延迟(基本上是实时的)软件合成器(Reaktor是我能想到的)。所有这些都可以管理简单的音调生成,就像你所追求的那样,并且大多数都可以由MIDI驱动(这将使MIDI成为可行的选择,与我刚才在另一个答案的评论中所说的相反)。只要您将MIDI连接到特定的音源/软件合成器,MIDI就可以。

答案 3 :(得分:0)