用途:Tone.js 是构建浏览器交互式音乐应用的 Web Audio 框架,适合创建合成器、采样器、乐器、步进音序器、鼓机、DAW,为游戏添加音效或音乐,实现与声音同步的可视化、实时音频效果处理,以及精确调度的音乐事件。
主要能力:提供高层音频抽象,包含音频图与路由(toDestination、chain、并联连接)、时间与调度("4n"、"8n"、"2m" 等乐理记谱与秒数)、全局 Transport、合成器与复音(PolySynth)、采样器与播放器、效果器(滤波、延迟、混响、失真)、参数自动化(rampTo、setValueAtTime、exponentialRampTo)、音画同步(Tone.Draw.schedule)、Loop 与 Sequence 模式。
使用方式:必须先由用户交互调用 await Tone.start()。音频节点连接至 Tone.Destination,可串联效果器。调度回调必须使用传入的 time 参数以保证采样级精度,例如 new Tone.Loop((time) => { synth.triggerAttackRelease("C4", "8n", time); }, "4n").start(0)。加载样本后需 await Tone.loaded() 再播放。用完节点应调用 dispose()。
适用场景:浏览器音乐工具、游戏音效、实时效果处理、交互式声音反馈与可视化同步。
限制与注意:浏览器自动播放策略要求用户交互;避免用 setInterval 或省略 time 参数,否则会漂移;基础 Synth 为单音,和弦需用 PolySynth;样本未加载完成前播放可能失败。资料还包含通知音与 UI 音效的设计原则、频率与时长建议及无障碍要求,未提供收费、平台或具体版本信息。