You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:15:00