【问题标题】:How to generate dynamic audio signal如何生成动态音频信号
【发布时间】:2010-08-09 01:48:46
【问题描述】:

我希望使用耳机端口作为控制信号来控制一些电子伺服系统。我需要能够生成脉冲宽度调制信号并快速改变脉冲宽度。我更愿意在 C# 中执行此操作,但 c++ 也是一种选择。有什么想法可以做到这一点吗?

【问题讨论】:

  • 我会担心音频输出的延迟。如果你想做高速伺服控制,那可能就不行了。

标签: c# c++ audio


【解决方案1】:

您可以寻找如何进行 midi 输出。

我只用 C++ 做过这个,所以用 C# 是用互操作的,但这里是一个简单的介绍。

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

早在 SO 出现之前,这里就有类似问题的一些不错的答案。

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

【讨论】:

  • MIDI 并不擅长可靠的跨设备音色生成(至少可以这么说)。我想象着整条生产线都在倒塌,最终发现罪魁祸首是前一天晚上安装的新声卡。
【解决方案2】:

假设您谈论的是普通型号的无线电控制伺服系统,您谈论的是 1-2 毫秒宽的正向脉冲,脉冲重复频率为 20-50 赫兹。 1 毫秒是左侧硬过,2 毫秒是右侧硬过,1.5 毫秒是居中。脉冲串上的任何一种抖动都会导致伺服不稳定。

在设计用于发声的卡上,这可能是一个非常难以满足的规范。

您可以更轻松地使用外置微控制器生成 PWM 信号,并通过串行端口对其进行控制。假设我的目标是让某些东西快速运行,我可能会使用 Arduino 板(Atmel ATMega328,在一个使硬件黑客非常容易的板上)。

【讨论】:

  • 基尔乔伊。您可能认为将手机插入的调制解调器也是一个坏主意。 :)
【解决方案3】:

这看起来可能是您需要的:

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

(来自谷歌搜索“c# dsp 音源”的第三项)

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

【讨论】:

    【解决方案4】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-23
      • 2011-11-05
      • 2021-08-06
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多