支持原创音乐生成、DJ Remix 制作与离线音频导出的实验项目。原创音乐使用 Tone.js,DJ Remix 使用 Python 音频处理工具,支持从歌曲高潮或其他片段分离人声、保留音高变速,重新编写鼓组、贝斯、和声与 Drop,并导出可播放的 MP3/WAV。仓库保留一首可运行的原创示例《余温 / Afterglow》,也可替换曲目数据、调整 BPM、移调、随机种子,或组合已有声音配方。
成品 MP3/WAV 默认写入 Git 忽略的 artifacts/ 或本地 releases/ 目录。Git 保留源码、编曲预设、制作记录和 releases/afterglow/manifest.json;歌曲音源、分轨、模型与 DJ 成品音频在本地保存。采样库、合成器与导出工具属于可复用工程资源。
需要 Node.js >=22.12、npm,以及支持 Web Audio 的浏览器。
npm ci
npm run dev打开终端输出的地址即可使用试听台。页面默认加载《余温》的 hook,支持 full / hook / loop、BPM、移调、seed、分层试听与 WAV 导出。
CLI 通过 Chromium 的 OfflineAudioContext 渲染。只导出 WAV 不需要 FFmpeg;导出 MP3 或启用响度母带时,需要带 libmp3lame 的 FFmpeg 和 FFprobe。
npx --yes playwright install chromium
npm run render -- --track afterglow --seed 261013 --format both --out artifacts/audio/afterglow
npm run render -- --version hook --format wav --out artifacts/audio/afterglow-hook
npm run render -- --helprender 支持 full、hook、loop 三种版本,以及 90–170 BPM、−12–12 半音、uint32 seed、44100/48000 Hz 和 16/24 bit WAV。相同源码与参数会得到确定性的编曲触感;seed 只改变可控的细节变化,不改写主题的时序。
- 在
src/tracks/新增TrackDefinition,再将曲目加入src/tracks/registry.ts。 - 在
src/music/arrangements/组合段落、和声、Hook 与短版裁切。 - 在
src/engine/复用或新增合成器,把事件映射到可独立控制的声音层。 - 使用
src/music/validation.ts、src/music/mixer.ts和src/audio/wav.ts复用参数校验、分层路由与 WAV 测量。
内置的 emotional-pop、cinematic-guofeng、guofeng-club 编曲与声音配方可以直接作为创作起点。它们描述的是合成方法和路由,不绑定某一首成品。
最新的独立器乐 《风经过的地方 / Where the Wind Passes》 是一首 84 BPM、3 分 46.86 秒的钢琴抒情曲:D 大调写作,最终副歌整体上移两个半音到 E 大调;钢琴、弦乐、大提琴、长笛、竖琴使用本项目采样,贝斯、pad、合唱垫、钟琴与部分鼓组由 Python 合成。它不经过 Tone.js 页面,谱面在 scripts/presets/wind-passes.json,由 scripts/wind_passes.py 离线渲染、混音并导出 320 kbps MP3 / 24-bit WAV,音频保存在本地 releases/wind-passes/。复现命令:
artifacts/dj-tools/bin/python scripts/wind_passes.py all可以选取副歌、高潮或其他合适的演唱片段制作 Remix,保留完整唱句,并用人声切片做节奏或旋律回应。制作流程包括人声分离、保留音高的变速、伴奏重编、Build / Drop 设计、侧链混音与 MP3/WAV 母带导出。具体歌曲的素材选择和编曲由制作脚本与预设控制。
最新 DJ 改编为 《Flowers — Glasshouse Flip》:分离副歌人声,完整保留一次 14 小节副歌,以新写的钢琴、贝斯、Hook 和鼓组替换原伴奏,编排 Piano House → UK Garage 两次 Drop。主版为 128 BPM、98 秒,另有 33.75 秒试听,MP3/WAV 保存在本地 artifacts/audio/flowers-reimagined/。来源、采样署名和素材准备要求见制作记录。
准备好本地音源、分轨与采样后,可以复现编曲与母带:
artifacts/dj-tools/bin/python scripts/flowers_glasshouse.py allrender 与 master 可分别执行编曲和母带;Python 依赖见 scripts/requirements-dj.txt,另需 FFmpeg。
新增的 《夜航线 / Night Transit》 展示另一种 DJ 主导风格:原创 Peak-time Bass Techno 器乐贯穿全曲,只在蓄力、Break 和 Drop 尾部插入少量有许可的英文干声。主版为 132 BPM、117.56 秒,音频保存在本地 artifacts/audio/night-transit/;使用 artifacts/dj-tools/bin/python scripts/club_dj.py all 可复现。该示例使用 CC BY-NC 4.0 音源,仅按非商业本地实验记录,短句占比少不等于版权豁免。
后续的 《折返频率 / Switchback》 为 136 BPM、142.58 秒的 Club Tool:重新写作器乐动机与 80 小节编排,中段改用新写的中文合成男声,经过降调电台声、升调加速切片、声码与停带处理。直接人声约占 6.55%;完整 MP3/WAV 和 28.24 秒中场试听保存在本地 artifacts/audio/switchback/。准备好本地干声后,使用 artifacts/dj-tools/bin/python scripts/switchback.py all 复现;来源与客观验证见制作记录。
此前的 DJ 调研与首次片段版、整首保留版仍保留,分别位于 artifacts/audio/flowers-dj/ 和 artifacts/audio/flowers-dj-full/。通用工具 scripts/dj_remix.py 提供人声分离、保留音高的变速、渐速开场及 MP3/WAV 导出。
npm test
npm run build
npm run test:browser自动检查覆盖参数边界、乐谱裁切、WAV 编码、浏览器渲染和页面交互。峰值、RMS、响度和时长是客观测量,不能替代人工耳听;仓库不对任何平台传播结果作保证。
通用钢琴和原声采样位于 public/audio/,各目录的署名与许可说明随采样保存。只在需要对应配方时加载它们,新增曲目时请继续保留来源与授权记录。
新增 声音素材库 01:43 项 CC0 音频,包括 VSCO 马林巴/木琴与实录打击乐、原创电钢琴/Sub/Reese/Pad、转场、三组 8 小节鼓与编曲循环,以及 Lo-fi Soul / UK Garage / Ambient Mallets 的可播放示例。运行开发服务后打开 /palette.html 或使用创作台页脚链接,即可分类试听和下载;资产位于 public/audio/palette/,音高、BPM、SHA-256、来源和测量保存在该目录 manifest.json。
复现使用 scripts/build_sound_palette.py build,离线验证使用 verify;轻量 Python 依赖见 scripts/requirements-palette.txt,另需 FFmpeg。浏览器检查运行 npm run test:palette。新目录的 CC0 许可只覆盖其中的素材,详见 署名与许可。这些素材已做客观检查,人工耳听尚未完成。
src/tracks/ 曲目定义与 registry
src/music/ 类型、校验、随机源、编曲与混音选择
src/engine/ Tone.js 合成器与离线渲染
src/audio/ WAV 编码、测量与波形数据
public/audio/ 可复用采样及许可说明
scripts/ CLI、浏览器检查与导出库
tests/ 编曲、音频编码和导出测试
docs/mp3-export.md MP3 与响度导出说明