问题描述
我很难理解为什么会引发此错误:
Debug.ts:8未捕获的错误:开始时间必须严格大于 以前的开始时间
奇怪的是,它只会在我刷新页面约4/5次时引发此错误。大概有1/5的机会可以正常工作。这是我的代码:
let synth = new Tone.MetalSynth({
portamento: 0,volume: -15,envelope: {
attack: 0.001,decay: 1.4,release: 1,},harmonicity: 18.1,modulationIndex: 12,resonance: 1000,octaves: 1.5,});
synth.chain(Tone.Destination);
let notes = ['A2','B2','C3','D3','E3','F3','G#3'];
let html = '';
for (let i = 0; i < notes.length; i++) {
html += `<div class="whitenote" onmouSEOver="noteDown(this)" data-note="${notes[i]}"></div>`;
}
document.querySelector('.container-4').innerHTML = html;
function noteDown(el) {
let note = el.dataset.note;
synth.triggerAttackRelease(note,'16n');
}
解决方法
我收到此错误是因为多个声音/音符同时与 triggerAttackRelease()
一起排队。对我来说,我发现使用多个 Synth 实例(每个不同的声音/音符一个)是最好的方法。但是,请注意不要产生过多的 Synth 实例。