请参见下面的代码。我如何理解事情:
beat
是在-1和1之间振荡的方波。
将beat
连接到multiplier.gain
将beat
的方波添加到默认增益1。结果是增益在0到2之间振荡。
当tone
连接到multiplier
时,我希望听到440Hz的声音持续2秒钟,然后停顿2秒钟,然后再听到声音,依此类推。 / p>
但是,在我希望增益为0的地方,我仍然听到一个声音,只是静音。 我在做什么错了?
我在Windows 10上都使用Chrome 74和Firefox 66进行了测试。
代码:
<!doctype html>
<meta charset=utf-8>
<script>
var context = new window.AudioContext();
var tone = context.createOscillator();
var beat = context.createOscillator();
beat.frequency.value = 0.25;
beat.type = "square";
var multiplier = context.createGain();
tone.connect(multiplier);
beat.connect(multiplier.gain);
multiplier.connect(context.destination);
tone.start();
beat.start();
</script>
<button onclick="context.resume()">Play</button>
答案 0 :(得分:1)
问题在于,“正方形”类型实际上并未在-1和1之间振荡。范围从-0.848到0.848或多或少。将GainNode的增益AudioParam设置为此值应该可以。
npm link
要查看振荡器的实际输出,可以使用Canopy。它可以运行Web Audio代码,然后可视化结果。
例如,如果执行以下代码段,它将为您显示相应的波形。
multiplier.gain.value = 0.848;
我希望这会有所帮助。