Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过将方波与音调相乘来创建节拍?_Javascript_Audio_Web Audio Api_Synthesizer - Fatal编程技术网

Javascript 如何通过将方波与音调相乘来创建节拍?

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之间振荡的方波

将拍数连接到乘数。增益将拍数的方波添加到默认增益1。结果是增益在0和2之间振荡

由于音调连接到乘法器,我希望听到440Hz的音调两秒钟,然后暂停两秒钟,然后再次听到音调,依此类推

然而,在我预期增益为0的地方,我仍然听到一个音调,只是静音。我做错了什么

我在Windows10上测试了Chrome74和Firefox66

代码:


问题是“正方形”类型实际上并不在-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();