一比特声音工坊

复古游戏音乐人编写 1-bit 配乐时,可边听边处理处理器周期超支,直接导出真机代码。

给 ZX Spectrum 这类早期家用电脑写配乐的人,必须用极少的处理器时间控制蜂鸣器发声。一段旋律稍微复杂,就可能抢走游戏逻辑需要的计算时间。创作者在浏览器里选择真机型号或模拟器参数后,把音符、节奏和音色变化排进一条可试听的时间线。

时间线的最小格子不是普通乐谱拍子,而是处理器实际执行指令的周期。创作者拖动一段节奏时,界面立刻显示这段会占用多少周期、蜂鸣器会怎样翻转,以及角色移动或画面刷新可能在哪些位置受阻。超出预算的段落会以波形和听感同时暴露出来。

游戏程序员可以把某段节奏冻结成机器码乐句,附带所需周期和调用条件。音乐人随后调整旋律,系统会标出哪些代码段需要重新导出。项目页还能并排试听模拟器输出与真机录音,收集不同硬件上的失真差异。

产品先支持单声道蜂鸣器、短循环音乐和可直接嵌入的汇编代码导出。重点是让创作者边听边处理硬件限制,复杂的多芯片音频编曲留给后续版本。

为什么是现在

9 月 5 日的实验文章把蜂鸣器写入、延迟和走调拆到具体指令周期。S1 9 月 9 日观测时,它在 Hacker News 新品流第 16 位,获 91 points 和 26 comments,让更多复古开发者正面碰到“声音与游戏逻辑争用周期”的问题。S2

目标用户

核心用户是给 ZX Spectrum 48K 游戏或演示写蜂鸣器音乐的人。他们通常在旋律已能播放,却需要塞进游戏主循环时遇到问题。此时每段乐句都会与输入、角色移动和画面更新争夺周期。音乐人与程序员还可能是两个人,需要共享可复现的周期清单,而不只是音频文件。

最小切入点

浏览器端先锁定 ZX Spectrum 48K 与单声道蜂鸣器。用 JSSpeccy 3 的 WebAssembly 架构承载 Z80、画面与音频执行。S3 编辑层只处理短循环、音符时值和端口翻转事件。每次修改后,记录指令 T-state、端口写入与帧边界。周期预算先允许程序员手工填写,不推测完整游戏负载。导出交给 sjasmplus,生成可读汇编、机器码和周期清单。S4 首版不接多芯片编曲,也不承诺模拟器与所有真机完全同声。

以小博大

首批用户集中在 ZX Spectrum 复古开发社区、demoparty 和 1-bit 音乐圈。可发布几组同一乐句的周期时间线、模拟输出与真机录音,附可下载工程。再把导出的短循环提交给现有开源游戏或比赛作品,形成可核验样例。围绕具体引擎制作导入模板,比泛泛宣传“浏览器编曲”更容易获得试用。

竞品与缝隙

BeepolaGoogle
Beepola 已能用传统 tracker 网格编写 ZX Spectrum 48K 蜂鸣器音乐。它内置多种历史与现代播放引擎,还能编译歌曲并导出汇编代码。对熟悉 pattern、engine 和 Z80 工具链的人,这条流程已经足够成熟。它的核心抽象仍是音符、效果列和播放引擎,而不是逐段展示指令周期。创作者通常要编译后,再到模拟器或程序中判断卡顿。不同乐句对主循环、画面刷新和输入扫描的影响,没有与声音放在同一时间线上。可切入的缝隙是把周期预算变成直接可编辑的音乐约束。导出时再附上调用条件和受影响代码段,减少音乐人与程序员之间的反复试错。
BintrackerGoogle
Bintracker 是可编程的芯片音乐工作站,支持 ZX Spectrum 蜂鸣器等多种平台和引擎。它采用 MAME 作为模拟后端,可导出二进制、汇编和 ZX Spectrum TAP。插件、MDAL 抽象和内置命令环境,使它适合研究新引擎。现有产品仍以通用 tracker 和引擎适配为中心,配置与扩展能力较重。它没有把某段旋律占用的 Z80 周期,直接映射到游戏主循环。音乐人也难以在拖动节奏时,看见蜂鸣器翻转与画面受阻位置。其覆盖平台很广,反而给专做 48K 单声道工作流留下空间。这个产品可把试听、周期诊断和可嵌入代码收进一个较窄流程。代价是引擎数量和编曲自由度短期内会明显少于 Bintracker。

怎么赚钱

采用个人版一次性买断,包含浏览器编辑器、离线项目和汇编导出。真机对照、团队项目共享与更多机型适配,可另设年度升级包。

反方视角

逐指令周期预览很容易给出虚假的确定性。内存争用、中断、代码装载地址和自修改代码,都会改变实际时序。若编辑器只测独立乐句,嵌入游戏后仍可能卡顿或走调。要提高可信度,就得接入完整程序快照和调用上下文,工程复杂度会迅速上升。真机录音还受机器版本、音频采集链和音量处理影响,难以自动判定差异来源。用户群本身较窄,许多老手已有 tracker、汇编器和模拟器组合。若周期诊断不能明显减少往返测试,他们不会为了更漂亮的时间线迁移。

依据与来源

共引用 4 条可核验来源
讨论快照· Hacker News
ZX Spectrum: Experimenting with 1-Bit Sound
热度
91 分
评论
26 条
抓取时名次
第 16 位
发帖时间
快照时间
截至 抓取
查看 Hacker News 讨论阅读原文
来源核对
S3

项目说明其浏览器模拟器支持 ZX Spectrum 48K、128K 和 Pentagon,包含 beeper 音频。模拟核心在 Web Worker 中运行,并以 WebAssembly 执行 Z80、画面和音频处理。

S4

官方项目说明 sjasmplus 是 Z80 交叉汇编器,支持 ZX Spectrum 专用指令与 SAVESNA、SAVETAP 等输出能力,也支持多种导出形式。

Telegram 频道