|
← 判断力与美学 ← Judgment & Aesthetics
SAE 判断力与美学 · 余项之美
SAE Judgment & Aesthetics · Beauty of the Remainder
2026-09-25

只是一个玩具

Just a Toy

Han Qin (秦汉)

乌克兰开发者 Valentyn Danylchuk(itch.io 用户名 mini000)今年七月发布了一个叫 beeper 的东西。他管它叫"玩具减法合成器"(toy subtractive synth):只有十六个可调参数,用方向键操作,空格键切换延音与独奏。十二组预设音色(对应键盘上的 1 到 9、0、减号、等号)配上内置的演示循环,组合出一百四十四种起点,剩下的交给手指去试。整个实现只有约一千八百行 C 代码,最初写给 ESP32 嵌入式硬件,后来重新编译成 WebAssembly,就能在浏览器里弹。九月,Hackaday 报道它在 Tanmatsu 这块 ESP32-P4 掌机上跑起来的样子,才让更多人注意到它。

Danylchuk 自己写得很清楚:"没有 MIDI,没有保存,没有和弦级复音——它就是一个带点学习潜力的音乐玩具。"这句话值得多停留一秒。市面上几乎所有合成器软件,无论是专业插件还是教学工具,最终都会朝着"功能完整"还个方向凿去:加保存、加复音、加 MIDI 映射、加预设管理——每一步都是把一个活的、还在长的声音装置,往一个已经被行业彻底命名过的范畴("合成器")里塞。那个范畴本身就是已构:凿构循环走到头的沉淀物,稳定、可复制、可当作商品陈列。beeper 的特别之处在于,它在能往那个方向走的时候,主动刹住了。十六个旋钮不是技术限制,是设计选择——这个选择让它始终卡在"玩具"和"工具"之间那道还没被焊死的缝隙里。

更值得注意的是它的双重生存状态:同一份逻辑,一半活在 ESP32 的寄存器和中断里,一半活在浏览器的 WebAssembly 沙盒里,且以 MIT 协议整份公开在 GitHub 上,任何人都能拿去 fork。这意味着 beeper 的结构逻辑没有被锁定在某一种"最终形态"里——它随时可能因为一次 fork 长出新的分支,长成完全不同的东西。这正是余项区别于已构的地方:已构是被交付、被定名、不再变化的对象;余项则始终携带着"还没被判定完"的开放性,它的下一步是什么,连作者自己也没有把话说死。

为什么是现在,而不是等它被写进"极简合成器玩具"这类回顾性谱系之后?因为一旦被那样命名,beeper 就会从一个正在被人摸索、被人 fork、被人在评论区争论"到底好不好玩"的活物,变成一个案例、一个引证、一个已经有了盖棺定论的注脚。Hackaday 的报道本身就是艺术界(这里更准确地说是极客文化的评判机制)正在慢慢靠近它、但还没有把它彻底摁进某个类别里的那个瞬间——评论区里还在争论它到底算"玩具"还是"教具",这场争论本身就是余项还没冷却的证据。现在看它,看到的是判断力尚未闭合前的那个状态;再晚一点,看到的就只会是判断力已经闭合之后的说明书。

mini000.itch.io/beeper ↗

In July, Ukrainian developer Valentyn Danylchuk (itch.io handle mini000) released something called beeper — what he calls "a toy subtractive synth." Sixteen controls, no more. You steer it with arrow keys, toggle sustain and solo with the space bar. Twelve preset timbres, mapped to the keys 1 through 9, 0, minus, and equals, cross with a handful of built-in demo loops to give a hundred and forty-four starting points, and after that you're on your own. The whole thing is about eighteen hundred lines of C, written first for ESP32 embedded hardware, then recompiled to WebAssembly so it plays in a browser. It sat quietly for two months until Hackaday wrote it up in September, showing it running on a Tanmatsu handheld built around the ESP32-P4.

Danylchuk states his own constraint plainly: "No MIDI, no saving, no chord level polyphony: it is just a music toy with some potential for learning." That sentence is worth sitting with. Nearly every piece of synthesizer software, professional or pedagogical, eventually chisels itself toward completeness — save states, polyphony, MIDI mapping, preset browsers — each addition another cut that pushes a living sound device into a category the industry has already fully named and priced: "the synthesizer." That category is itself already-construct, the settled sediment of a finished chisel-construct cycle. What makes beeper different is that it could keep cutting in that direction and chose not to. Sixteen knobs isn't a technical ceiling; it's a decision, and that decision is what keeps the thing wedged in the unwelded gap between toy and tool.

There's a second thing worth noticing: the same logic lives two lives at once, half in an ESP32's registers and interrupts, half in a browser's WebAssembly sandbox, and the whole source sits MIT-licensed on GitHub, open to anyone's fork. That means beeper's structural logic was never locked into one final shape — the next fork could grow it into something else entirely, and even its author hasn't foreclosed what that might be. This is exactly what separates a remainder from a construct: a construct is delivered, named, done changing; a remainder keeps carrying the open question of "not yet judged," and nobody, including its maker, has settled what comes next.

Why does it matter to look at this now, before it gets folded into some retrospective lineage of "minimalist synth toys"? Because once it's named that way, beeper stops being a thing people are still poking at, still forking, still arguing over in comment threads about whether it's actually fun — and becomes a case study, a footnote with its verdict already stamped. The Hackaday writeup is itself the moment when geek culture's own judgment apparatus is slowly closing in on it without having pinned it down yet — the comments underneath are still arguing over whether it's a toy or a teaching tool, and that unresolved argument is the proof the remainder hasn't cooled. To look at it now is to catch judgment before it closes. Any later, and all that's left to see is the instruction manual written after the verdict.

mini000.itch.io/beeper ↗