VIBECODING SUBMISSION · 2026
Twelve rooms
you can hear.
同一个引擎,十二种被策展过的状态。每个声景都只是一个参数组合——音高、脉冲、距离、章节与随机种子——但组合出来的是十二间不同的房间:有的适合清晨工作,有的属于凌晨三点。
全部在本机生成:没有音频文件被加载,没有采样,没有网络请求。你现在听到的每一个音,都是浏览器实时算出来的。
12策展声景
38,000 / 88,000移动 / 桌面点数
0外部请求
100%本地合成
The Collection
每条都可以「试听」(就地播放,不离开本页)、「打开」进入完整乐器并由该参数初始化,或「下载」一段 60 秒的本地合成 WAV。
产品与实现
这份提交版把此前标记为「未制作」的功能真正做出来了,并且明确区分什么是可运行的、什么仍是路线图。
| 能力 | 状态 | 实现位置 |
|---|---|---|
| 实时生成声音(四声部:拨奏和弦块 + 低频呼吸 + FM 钟声 + 空间回声) | 已实现 | audio.js |
| 实时生成画面(WebGL 38,000–88,000 点 / 批量 Canvas 11,000 点兜底) | 已实现 | renderer.js |
| 三根滑杆影响音乐走向(音高 / 速度与亮度 / 空间) | 已实现 | app.js · audio.js |
| 12 个策展声景 + 索引页 + 就地试听 | 已实现 | soundscapes.js · curator.html |
| 长格式本地导出(60 秒 WAV / 2400px 艺术海报 / 3840×2160 无品牌条收藏海报) | 已实现 | audio.js · app.js |
| 本机档案、调谐参数分享、双击清除本机数据 | 已实现 | app.js |
| 账号、支付、云端同步、通知交付 | 未实现(明确不提供) | — |
技术栈:零依赖。原生 WebGL(自写 GLSL)、原生 Canvas 2D、原生 Web Audio、原生 DOM。唯一的第三方文件是本地打包的 GSAP,仅用于首屏入场,缺失时页面照常可用。
诚实边界:没有服务端,因此没有账号、支付、云端同步或跨设备档案;本地文件模式下浏览器存储不是保密边界;安全门禁未对当前版本运行,清单中如实标注为未执行。
验证与复现
所有结论都有可重跑的命令,而不是描述。
cd signal-void # 主验收(45 条断言) node scripts/validate.cjs # 声音:不是嗡鸣、三根滑杆都真的改变声音 node work/verify-sound-character.cjs node work/diagnose-audio-level.cjs # 移动端:三档机型 + 强制无 GPU 的 Canvas 兜底 node work/measure-mobile.cjs node work/measure-mobile-canvas.cjs # 渲染器与无障碍 node work/verify-renderer-lifecycle.cjs node work/a11y.cjs
交付清单与哈希:release-manifest.json。设计与动效契约:design/。变现假设与验证顺序:MONETIZATION-PLAN.md。