datspace

103.1 MHz
datspace.studio

patter

A modular synthesizer you patch by talking, on SuperCollider in the browser.

Question
What is the Claude Code of generative music?
Prototype
A browser instrument where you describe a patch the way you'd explain it to another modular person, and an agent builds it in SuperCollider, running in the page as WebAssembly. It writes real SynthDefs through a compiler tested against sclang, edits the patch with 22 tools, and listens to what it made.
Finding
The agent is a good translator once it has ears; with a tool that measures what a module actually outputs, it fixes its own gain staging. It isn't a producer, so patter assumes you know what you want to build. SuperSonic's clock sat about a third of a second off the beat grid, varying between boots, so patter measures the offset every fifteen seconds and subtracts it.
Future
Instruments will take descriptions as well as gestures, and the good ones will still hand you the knob.

"What is the Claude Code of generative music?" I asked that in a voice note in February, and patter is my answer so far.

You describe a synthesis system the way you'd explain a patch to another modular person: two detuned saws into a resonant low-pass, a slow sine on the cutoff, an envelope on a VCA, clocked by a sixteenth-note sequencer in C minor. An agent builds it in SuperCollider, running in the page as WebAssembly, and you keep talking to it while it plays. Swap a module, reroute a modulation, ask for a darkness macro.

Going with the grain

SuperCollider is already a modular system, so patter adds as little as it can. A module is a SynthDef running as a node. A patch cable is a bus. A knob is a control, a macro is a control bus, and hot-swapping a module is a crossfade on the same bus. The agent writes real SynthDefs, with real UGens and argument orders, in JavaScript with sclang's signal semantics: an AST rewrite turns a * b into a BinaryOp UGen when a signal is involved. The compiler is golden-tested against sclang itself, 33 graphs written once in each language and compared. All 377 of the engine's UGen classes are available, from a catalog extracted from sclang 3.14.1 by probing every constructor.

An agent that can hear

The agent's 22 tools edit a patch document, and the page turns each edit into OSC. The most important one is listen. It records a module's output and reports peak and RMS, clipping, spectral centroid, partials, pitch, and an envelope. In testing, from a one-sentence description, the agent built an oscillator into a filter, patched an LFO to the cutoff, listened, rebalanced the gain, listened again, and exposed five labeled controls, in about 36 seconds.

It's a translator, not a producer. patter assumes you know what you want to build. It isn't a make-me-a-dark-techno-track button, and I don't want one.

Listening in

patter runs at datspace.studio. The agent costs money per token, so prompting is mine: it sits behind Cloudflare Access, and the Worker checks the token again on every request. Everyone else can listen in. When I'm working, you get the patch as I build it, with the graph, the code, the mixer, and every knob, running in your own browser. The knobs you turn change only your copy.

The source is at github.com/discohead/patter, under the AGPL, like the SuperSonic engine it runs on.