一个 techno 音乐机器,装在单个 HTML 文件里,渲染结果可验证

查看原文 HN 讨论

文章摘要

RACK-02 是 SSX360 做的一台「模块化 techno 机器」,它的全部——合成引擎、音序器、效果链、离线渲染器和那套模拟 Eurorack 面板的界面——都装在一个 HTML 文件里,零外部依赖,打开浏览器就能跑,存到本地也照跑不误。页面自己的元描述写得很准:「单个 HTML 文件里的生成式模块化 techno 机器。欧几里得音序、复节拍、触发条件、实时人声输入、24 位分轨导出,全在浏览器里。」

上手引导刻意写得极简:「这是一台自己造 techno 循环的小机器。按下按钮它就开始播放。不喜欢听到的?按 Reroll 换一整套新的。转动任意旋钮改变声音。就这么多——玩就是了。」(首页只有两个入口:「▶ 开始」和「我就随便看看」。)

界面按 Eurorack 的方式排布,每个模块标着 HP 宽度:Clock(8HP,Swing / Human / Density / Chaos / Duck / Master,以及一个每 8 小节自动变异的 Evolve 开关)、Kick(12HP)、Rumble(12HP,把底鼓送进长混响腔再低通并做侧链闪避,「整首曲子的地板——把它当独立分轨导出」)、Bassline(14HP,可选根音与音阶:弗里几亚、自然小调、洛克里亚、半音阶;运动方式:静止、行走、八度跳跃;振荡器:锯+方波、纯方波、FM 咆哮、脉冲/PWM、超级锯、谐波渐变)、Hats / Clap / Perc / Tom(各 6HP)、Stab(12HP)、Drone(6HP,持续的失谐双振荡器配慢速滤波)、Air(6HP,谐振噪声带,「房间的底噪和上行音效」)、Vox(实时麦克风或线路输入)、Grain(重采样器)、Cross-mod(音频率交叉调制)、MixerPatchbayOutputAutomationMIDI out

音序器的交互设计是全篇最见功力的地方,也是「生成式」三个字的落点:点击一个步进格会在「自动 → 强制开 → 强制关」三态间循环;Shift+点击设置棘轮(一格内 2/3/4 次重触发);Alt+点击设置触发条件(1:2、2:2、1:4、4:4、25%/50%/75% 概率、fill、not-fill);每条音轨的长度可以独立设成 2 到 32 步,不等长的轨道会彼此相位错开——这就是复节拍。贝斯线有独立的两条泳道:一条点音高(点击沿音阶升,Shift 降),一条点演奏法(点击加重音,Shift 加滑音)。每个模块右上角有两个小符号:◎ 把该模块锁住,不受 Reroll、Mutate 和骰子影响;⏜ 只随机化这一个模块。往任何模块上拖一个 wav 文件,就能在合成器声部之上叠一层采样。

演奏部分全是按住生效的瞬时键:F 是 Fill(密度和混乱度上升)、D 是 Drop(只留底鼓和低频轰鸣)、S 是 Stutter(节拍重复)、G 是 Freeze(把混响尾音挂住)、V 是 Throw(人声延迟发送与反馈拉满)、C 是 Cut(掐掉干声只留尾巴)。滤波器是双极的——中间是关,往左低通,往右高通。场景 A–D 可以存四套完整状态,再用 Chain 把它们编成走位:机器会按小节走过每个槽位并换场景,图案是硬切,旋钮是在 1/2/4 小节里渐变过去

标题里那个让人费解的「可验证的渲染(verifiable renders)」,页面自己给了解释:导出是离线渲染的——快于实时、采样级精确、不会掉帧。可以导出循环、分轨、整曲或鼓组,分轨打包成一个 zip 且全部对齐小节线,直接拖进 Ableton 就在网格上;也可以导出 MIDI,还能选择是否把尾音包进去。自动化同理:Arm 之后在运行时转动任意旋钮,动作会被写进一条 4 小节的泳道循环下去,并被烘焙进每一次导出。Grain 模块(从机器自己几个瞬间之前的输出里切出颗粒,变调打散后再扔回去;Send 打开馈送,Spray 决定往回够多远)和 Cross-mod 模块(一个真正的振荡器以音频率接到目标参数上,「边带本身就是音色,而不是抖动」,并按 Ratio 跟踪贝斯音高,整数比保持谐和,Fine 把它拉进金属噪声)都能离线渲染,所以导出的云团和你听到的完全一致。唯一渲染不了的是实时人声——页面的说法很干脆:离线渲染里没有麦克风,所以人声得用 Capture live 实时录。

还有几处诚实到有点罕见的产品说明:托管版没法导出音频,因为「发布出去的页面只能保存很短的一份文件类型清单,而音频不在其中」——想导出音频、分轨或 MIDI,得打开你本地那份 rack.html;不过 patch 的 JSON 在托管版上是能存的。托管页面会记录匿名的聚合使用数据(哪些控件被用了、被转到多远、哪些参数被导出了),页面直说「仅聚合,无账号,无个人数据,你输入的任何东西都不会被读取。本地副本什么都不发」。MIDI out 可以用机器自己的音序器去驱动 Ableton 或硬件(需在 Audio MIDI Setup 里启用 IAC Driver)。页面右下角常驻一个负载表:CPU、每小节调度的声部数、音频延迟——旁边写着一句「导出是离线跑的,所以就算现场卡顿,重的 patch 在导出文件里也绝不会掉采样」。整个页面还做了完整的浅色/深色主题适配。

HN 评论精华

这条 Show HN 拿到 240 分、约 48 条评论。必须先说明两点实情:作者 ssx360 全程没有在帖子里发过一条评论,也没有写 Show HN 自述,所以关于实现细节的问题基本都没有答案;其次,讨论的绝对主角不是音乐,而是「单文件、零依赖」这个形态本身