Javascript 如何通过将方波与音调相乘来创建节拍?
请参阅下面的代码。我对事物的理解: 拍是在-1和1之间振荡的方波 将拍数连接到乘数。增益将拍数的方波添加到默认增益1。结果是增益在0和2之间振荡 由于音调连接到乘法器,我希望听到440Hz的音调两秒钟,然后暂停两秒钟,然后再次听到音调,依此类推 然而,在我预期增益为0的地方,我仍然听到一个音调,只是静音。我做错了什么 我在Windows10上测试了Chrome74和Firefox66 代码:Javascript 如何通过将方波与音调相乘来创建节拍?,javascript,audio,web-audio-api,synthesizer,Javascript,Audio,Web Audio Api,Synthesizer,请参阅下面的代码。我对事物的理解: 拍是在-1和1之间振荡的方波 将拍数连接到乘数。增益将拍数的方波添加到默认增益1。结果是增益在0和2之间振荡 由于音调连接到乘法器,我希望听到440Hz的音调两秒钟,然后暂停两秒钟,然后再次听到音调,依此类推 然而,在我预期增益为0的地方,我仍然听到一个音调,只是静音。我做错了什么 我在Windows10上测试了Chrome74和Firefox66 代码: 问题是“正方形”类型实际上并不在-1和1之间振荡。范围大致在-0.848到0.848之间。将GainNo
问题是“正方形”类型实际上并不在-1和1之间振荡。范围大致在-0.848到0.848之间。将GainNode的gain AudioParam设置为该值应该有效
multiplier.gain.value = 0.848;
例如,要查看振荡器的实际输出,可以使用。它可以运行Web音频代码,然后将结果可视化
例如,如果执行以下代码段,它将显示相应的波形
var osc = new OscillatorNode(context);
osc.type = "square";
osc.connect(context.destination);
osc.start();
我希望这能有所帮助。你能解释一下0.848这个数字吗?或者指出一个解释,我想这不仅仅是随机现象。振荡器是有带宽限制的,而且正如我刚刚学到的那样,以某种方式规范化了。但是我恐怕对这个值没有一个简单的解释。这个神奇的数字是用计算机计算出来的。您可以禁用它,但来自带限振荡器的振铃仍然存在。动态范围将大于1,但这在这里可能并不重要。
var osc = new OscillatorNode(context);
osc.type = "square";
osc.connect(context.destination);
osc.start();