这个项目能做什么

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 项目。