我正在尝试创建一个简单的函数,以赫兹(毫秒)playTone(freq, dur)
播放音调。freq
dur
我无法让函数等待上一个笔记完成,然后再开始一个新的。我的代码在下面,使用sleep
这个站点的一个函数。我还不了解 JS 的同步/异步的东西,我想让事情尽可能简单。任何人都可以帮助我的代码工作吗?目前所有的音符都一起演奏。
<script>
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
function playTone(freq, dur) {
var audio = new AudioContext();
var osc = audio.createOscillator();
var gainNode = audio.createGain()
gainNode.gain.value = 0.2
osc.frequency.value = freq;
osc.type = "square";
osc.connect(gainNode);
gainNode.connect(audio.destination);
osc.start(0);
osc.stop(dur);
}
for (var i = 0; i < 20; i++) {
playTone(440 + 10 * i, 1);
sleep(1000);
}
</script>