在Tone.js中如何实现多个音符按顺序依次播放?
Tone.js 多音符顺序播放的简洁实现方案
你现有代码的核心冗余点是硬编码了前序音符的时长累加逻辑,只需要新增一个变量累计播放起始时间,即可支持任意数量的音符顺序播放,优化后代码如下:
let startAt = 0; for (let i = 0; i < arrays.length; i++) { const note = arrays[i].pitch; const duration = arrays[i].timing; synth.triggerAttackRelease(note, duration, startAt); // 累计当前音符时长,作为下一个音符的起始时间 startAt += duration; }
如果需要后续扩展序列控制能力(比如循环播放、变速、中途暂停/跳转等),也可以直接使用Tone.js内置的Tone.Part接口实现,更符合框架设计规范:
// 加载音符序列 const notePart = new Tone.Part((time, noteItem) => { synth.triggerAttackRelease(noteItem.pitch, noteItem.timing, time); }, arrays).start(0); // 启动传输器即可播放 Tone.Transport.start();
内容的提问来源于stack exchange,提问作者kevinmcurran
相关产品推荐
相关产品推荐

