【问题标题】:WebAudio LFO: shift range from {-1, 1} to {0, 1}WebAudio LFO:将范围从 {-1, 1} 转移到 {0, 1}
【发布时间】:2019-11-02 21:44:10
【问题描述】:

每个关于 WebAudio LFO 的教程都会为 LFO 创建一个振荡器,然后将其路由到增益节点的 gain 参数。

但是 AFAIK 振荡器产生从 -1 到 1 的输出,因此在半个周期内,我们将负值发送到增益乘数。在最好的情况下,它被限制为最小增益 0,在最坏的情况下,它进入负值,有效地使调制波的频率加倍。

如何设置一个简单的 LFO,然后以预期的频率从 0 振荡到 1?

【问题讨论】:

标签: web-audio-api


【解决方案1】:

您可以将 OscillatorNode 与 ConstantSourceNode 组合以达到预期的效果。

const oscillatorNode = new OscillatorNode(context);
const constantSourceNode = new ConstantSourceNode(context);
const gainNode = new GainNode(context, { gain: 0.5 });

oscillatorNode.connect(gainNode);
constantSourceNode.connect(gainNode);

gainNode.connect(context.destination);

oscillatorNode.start();
constantSourceNode.start();

正如你所说,OscillatorNode 将在 -1 和 1 之间振荡。ConstantSourceNode 输出一个值为 1 的恒定信号。如果我们将这两个节点结合起来,我们会得到一个在 0 和 2 之间振荡的信号。然后我们可以使用 GainNode 来将该信号除以 2。结果将是一个在 0 和 1 之间振荡的信号。

【讨论】:

  • 不错的一个。 @Brad 提到的 2 Osc 方法也不错,但 ConstantSource 更通用:我已经修改了您的方法,使 CS 节点输出 -1.0,这有一个 LFO 从振荡器的增益节点中减去而不是添加,因此防止剪辑。
猜你喜欢
  • 2019-10-03
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多