关于WebAudio LFO的每个教程,都会为LFO创建一个振荡器,然后将其路由到增益节点的gain
参数。
但是AFAIK振荡器产生的输出从-1到1,因此对于半个周期,我们将向负乘法器发送一个负值。最好的情况下,它被限制为最小增益0,最坏的情况下它变成负值,从而有效地使调制波的频率加倍。
您如何设置一个简单的LFO,然后以预期的频率从0振荡到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之间振荡。