【问题标题】:Modeling an analog psuedo random LFO signal (low pass filtering in Javascript)模拟模拟伪随机 LFO 信号(Javascript 中的低通滤波)
【发布时间】:2017-11-13 23:13:38
【问题描述】:

我正在编写一个 Javascript 程序,以编程方式为程序生成的音乐创建 MIDI 信号,该信号使用外部输入来修改/操纵声音以响应环境的变化。

我正在尝试做的一件事是弄清楚如何对模拟伪随机低频振荡器 (LFO) 信号进行编程,如下图中的虚线所示:

此信号将驱动 MIDI 效果,如弯音或调制。

该函数应采用单个值输入来控制信号波动的剧烈程度。当输入为 0 时,产生的信号应该为 0,或一条平线。并且随着输入值的增加,信号会按比例变得越来越不稳定。

我觉得我知道如何生成实现这些目标的 step 函数(如上图中的实线),但我不知道 如何“平滑”它(即低通滤波器)以获得像虚线一样的连续曲线。最终,平滑/连续/模拟函数将被采样,例如,每 100 毫秒,并作为新的 MIDI 弯音指令进行广播,等等。

【问题讨论】:

标签: javascript audio signal-processing midi digital-analog-converter


【解决方案1】:

我只会使用现有的动画库,例如 TweenJS。 https://www.createjs.com/docs/tweenjs/modules/TweenJS.html 这些库通常用于视觉用途,但也可以通用。

未经测试,但请尝试以下方法:

const cc = {
  modwheel: 0
};
createjs.Tween.get(cc).to({modwheel: 127}, 1000);

然后,只需每 100 毫秒观察一次 cc.modhweel 属性或任何您想要的“帧”。

另见:https://stackoverflow.com/a/13501577/362536

【讨论】:

  • 太棒了!我不敢相信我没有想到这一点,我什至自己用补间来制作动画。但是,是的,这是一个完全同构的问题。谢谢你帮我看到。我在想我最终将不得不使用一些非常复杂的电路模拟器或其他东西。
猜你喜欢
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多