下面的文件使用 ToneJS 播放稳定的八分音符。根据计时记录,这些 8 分音符正好相隔 0.25 秒。
但是,它们甚至听起来都不是。音符之间的时间间隔明显不规则。
为什么会这样?有什么可以做的吗?或者这是 Javascript/webaudio-api 的性能限制?我已经在 Chrome、Firefox 和 Safari 中对其进行了测试,结果都是一样的。
感谢您提供有关此的任何信息或建议!
<!DOCTYPE html>
<html>
<head>
<title>Tone Timing Tester</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.32/Tone.min.js"></script>
</head>
<body>
<button onclick="start()">Start</button>
<button onclick="stop()">Stop</button>
<form>
<input id="bpm" type="number" value="120">
<button type="button" onclick="submitBPM()">Enter BPM</button>
</form>
<script type="text/javascript">
var synth = new Tone.Synth().toDestination()
Tone.Transport.scheduleRepeat(function(time){
console.log('time', time);
synth.triggerAttackRelease('C4', '8n')
}, "8n");
async function start() {
await Tone.start()
Tone.Transport.start();
}
function stop() {
Tone.Transport.stop();
}
function submitBPM() {
var bpm = document.getElementById('bpm').value;
Tone.Transport.bpm.value = bpm;
}
</script>
</body>
</html>