这个项目能做什么
Waveform Playlist 是一个运行在浏览器中的多轨音频编辑器与播放器,基于 React、Tone.js 和 Web Audio API 构建。它可在画布上渲染波形,并支持拖放式片段编辑,是 Audacity 等桌面软件的网页替代方案。
README 中描述的核心能力:
- 多轨编辑:每条轨道可包含多个片段,支持拖动移动和修剪手柄。
- 波形可视化:画布渲染,带缩放控制,并可选使用预计算峰值以加快速度。
- 效果:提供 Tone.js 效果库(混响、滤波器、失真等),支持实时参数控制和主效果链。
- 录音:基于 AudioWorklet,带实时波形、VU 表、叠录和插入替换(Web Components 版本)。
- WAV 导出:可导出单个片段或完整混音,并显示进度。
- 注释:时间同步的文本注释,支持键盘导航和拖动编辑。
- MIDI:解析 MIDI 文件、钢琴卷帘可视化,以及 Sound 或 PolySynth 播放。
- 主题:支持深色和浅色模式。
- TypeScript:包含类型定义。
使用方式基于组件。典型设置将 UI 包裹在 WaveformPlaylistProvider 中,提供通过 createTrack 和 createClipFromSeconds 创建的轨道,并组合 PlayButton、PauseButton、StopButton 和 Waveform。Hooks 涵盖音频(useAudioTracks)、传输控制(usePlaylistControls)、播放动画、缩放、动态效果和 WAV 导出。Tone.js 和 @dnd-kit/react 是需单独安装的 peer 依赖。
项目按一组包组织:浏览器组件和 hooks、核心类型与工具、框架无关的时间线引擎、样式化 UI 组件、Tone.js 播放引擎,以及峰值提取。可选包增加 MIDI、注释、录音、共享 AudioWorklet 处理器、频谱图渲染,以及基于 HTMLMediaElement 且保持音高的播放速率。
实验性 Web Components 层(基于 Lit,无需 React)提供声明式 daw-track 和 daw-clip 元素、命令式编辑器 API、原生 Web Audio 与 Tone.js 之间的适配器选择、带碰撞检测的片段移动/修剪/分割、撤销/重做、键盘快捷键、文件拖放、支持混合拍号和速度变化的节拍器、速度自动化,以及 WAM 2.0 插件托管,并可选在浏览器内进行 Faust DSP 编译。一份规范文档描述了元素目录和迁移阶段。
文档包括实时交互示例、入门指南和 API 参考。浏览器支持要求现代 Web Audio API 实现(Chrome、Firefox、Safari、Edge)。项目采用 MIT 许可证,源自 Sourcefabric 的 Airtime 项目。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。