Repolode
Tonejs

Tonejs/Tone.js

一个基于 Web Audio 的框架,用于在浏览器中创作交互式音乐与合成器。

Star
14,889
Fork
1,087
未关闭 Issue
50
最近提交
6天前

这是什么?

Tone.js 是一个运行在浏览器中的 JavaScript 框架,基于 Web Audio API 用于创作交互式音乐。它提供类似 DAW 的全局 Transport,用于同步和调度事件,并内置合成器、采样器和效果器,可以自由组合连接。

除了现成的组件,它还提供底层构建模块,便于自定义合成器、效果器和控制信号。时间既可以用秒表示,也可以使用 "8n"、"1m" 等音乐时值,回调函数会接收到采样精度的时间用于调度。Player 和 Sampler 可以加载音频文件,其中 Sampler 会对采样做音高移位,以填补音符之间的空缺。

项目可通过 npm 安装,也可以在 HTML 页面中直接从 unpkg 引入。由于浏览器要求用户交互后才能播放声音,应用需要在点击或按键事件中调用 Tone.start()。

核心功能

  • 01全局 Transport 用于同步和调度事件,类似 DAW 的编排视图。
  • 02内置单音和复音合成器,包括 FMSynth、AMSynth、NoiseSynth 和 PolySynth。
  • 03Sampler 与 Player 支持加载音频文件,Sampler 可跨音符进行音高移位。
  • 04内置多种效果器,可串联或并联连接。
  • 05参数为音频速率的 Signal,支持渐变和自动化曲线。
  • 06支持 "4n"、"8t" 等音乐时值表示法,也可使用秒。

适用场景

  • 开发基于浏览器的音乐音序器或鼓机。
  • 在网页中制作交互式生成音乐或音频可视化效果。
  • 使用 Web Audio 快速原型化合成器和效果器。
  • 为网页游戏或音乐教学应用加入基于采样的乐器。

快速上手

  1. 1

    从 npm 安装 Tone.js

    npm install tone
  2. 2

    在项目中导入 Tone.js

    import * as Tone from "tone";
  3. 3

    创建合成器并连接到扬声器,在用户点击后播放音符(需先调用 Tone.start())

使用前须知

  • 浏览器在用户操作之前会阻止音频播放,因此必须在用户事件中调用 Tone.start()。

标签

#web-audio#music#audio-synthesis#javascript#typescript#scheduling#sampling#samples#synthesis#tone

常见问题

Tone.js 是什么?
一个基于 Web Audio 的框架,用于在浏览器中创作交互式音乐与合成器。 Tone.js 是一个运行在浏览器中的 JavaScript 框架,基于 Web Audio API 用于创作交互式音乐。它提供类似 DAW 的全局 Transport,用于同步和调度事件,并内置合成器、采样器和效果器,可以自由组合连接。
Tone.js 可以免费使用吗?用的什么许可证?
Tone.js 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
Tone.js 还在维护吗?
活跃维护中。Tone.js 最近一次提交是在 2026年11月1日。
Tone.js 适合用来做什么?
开发基于浏览器的音乐音序器或鼓机。 在网页中制作交互式生成音乐或音频可视化效果。 使用 Web Audio 快速原型化合成器和效果器。 为网页游戏或音乐教学应用加入基于采样的乐器。
Tone.js 怎么安装和运行?
从 npm 安装 Tone.js: npm install tone 在项目中导入 Tone.js: import * as Tone from "tone"; 创建合成器并连接到扬声器,在用户点击后播放音符(需先调用 Tone.start())
在哪里获取 Tone.js?
源代码和安装说明在 GitHub 上:https://github.com/Tonejs/Tone.js

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目