VERDRAHTEN generative system

How to build a patch that plays itself

Verdrahten is a free modular synthesizer that runs in a browser. This page is the whole of how it works: the three layers a system is made of, what belongs in which jack, the modules that invent a part for you, the ones that play what you wrote down, and how to hand the result to somebody else.

Start patching

On this page

What it is

A modular synthesizer is a set of small machines with no wiring between them until you put it there. Verdrahten is that, in a page, with nothing to install and no account. It is built for generative music: you do not perform on it and you do not draw a timeline. You wire up something that decides what happens, connect it to something that makes sound, and leave it running.

Everything is synthesized and nothing is sampled. The parts that need per-sample logic, meaning the oscillators, the ladder filter, the shift register, the Euclidean generators and the drum voices, run in AudioWorklets on the audio thread; the rest is built from native Web Audio nodes. Every sound you hear is rendered by your own machine, including when several people are in a room around one rack.

Five minutes in

  1. Open the SYSTEM menu and pick one of the thirty-odd systems that ship with it. First Light is the canonical one: a shift register into a quantizer, mutating a note at a time.
  2. Press Space, or RUN in the toolbar, and listen.
  3. Turn one knob. CHANCE on TURING is the knob worth turning first: at zero the melody loops forever, at the top it is noise, and the interesting part is the bottom quarter.
  4. Pull a cable out and put it somewhere else. Nothing you can do to a patch is destructive, and Ctrl or Cmd with Z undoes it anyway.

The i button on any panel says what that module is for and then goes through its jacks one at a time, telling you what to patch into each input and where each output usually goes. Hovering a jack gives you the same line as a tooltip, and it is the jack's accessible name too, so a screen reader gets the advice rather than three cryptic letters.

The three layers

Every system here is the same three things, patched together with cables.

1. Something that pulses

CLOCK taps the transport and carries the tempo, the swing and the pulse width. Tempo is deliberately not a global setting: it belongs to the clock, because a system without a clock has no tempo to speak of. CHAOS free-runs with no transport at all, and FOLLOW can take its pulse from live audio, either the microphone or a file loaded into FILE.

2. Something that decides

TURING, EUCLID, TOPO, SEED, BLOOM, CHANCE, DIVIDE, LOGIC, BURST and GRAVITY turn one pulse into rhythm, melody and density. SEQ-8, GRID, METRO and PROG are the other half of the same layer, for the parts you would rather decide yourself.

3. Something that sounds

VCO, MACRO, COMPLEX, BENJOLIN, MODAL, BASSLINE, DRUMS, KICK, and then filters, envelopes and effects on the way to OUTPUT.

CONDUCTOR sits on top of all three and works at the scale of a piece rather than a bar. Its A, B and C outputs drift at golden-ratio-related periods so they never truly realign, and STAGE divides the whole cycle into sections. Patch STAGE into cutoffs and pattern densities and a patch stops being a texture and starts having an arc.

Patching

Cable colour tells you what is flowing: orange is audio, blue is control voltage, green is a gate, violet is a clock. Nothing stops you patching audio into a CV input, and that is usually the interesting part.

Signals and amount knobs

Signal Convention
Pitch CV 1.0 is one octave, 0.0 is C4
Gate 0 or 1, threshold 0.5
Trigger a short pulse to 1
Audio nominally −1 to 1

Everything is an audio-rate signal, which is why any output can drive any input.

The thing that catches everyone. Every CV input has its own amount knob, the small dial named after the jack, and it starts at zero. Patching the cable is only half the job: turn the amount up to let the modulation through, exactly as on hardware. A patched input that appears to do nothing is almost always this. The readout under a knob helps you see it, because it reports what the module is actually running at, read off the jack after the amount knob. Cable in, number not moving, amount still at zero.

What to patch where

Jack What it wants Where it usually comes from
CLK a stream of pulses CLOCK, DIVIDE, CHAOS, FOLLOW
RST one pulse to start again CLOCK's BAR, CONDUCTOR's CHNG
V/OCT pitch, an octave per volt QUANT, SEQ-8, METRO, CHORD, PROG, ARP
GATE or TRIG a gate or a trigger EUCLID's HIT, TURING's GATE, GRID's lanes, BURST
IN anything audible an oscillator, DRUMS, MIX-4's SUM, live INPUT
L and R a stereo pair, or one cable into L TAPE, FILE, DRUMS, DUCT, ISO
a named CV jack something slow and shaped ADSR, LFO, DRIFT, CONDUCTOR, S&H

A voice is usually four cables: something that decides into V/OCT, the same module's gate into an ADSR, the envelope into a VCA's CV, and the audio through that VCA to OUTPUT. BASS, BASSLINE, DRUMS, KICK, MACRO and COMPLEX fold all of that into one panel, which is why a bare trigger already plays them.

The generative modules

These are the ones that invent a part from a couple of knobs, which is what a rack that is left running wants.

The written sequencers

For the parts of a piece that are decided rather than found. They take their clock from the patch like everything else, so a written part is played by the same cables as a generated one, and the two mix freely.

Groups and meta modules

A working voice is rarely one panel, so once you have built one you can keep it. Select panels by dragging a box across bare rack, then GROUP draws a labelled frame around them. A group is only a frame: the modules stay ordinary modules and nothing about the sound changes.

SAVE AS MODULE keeps the selection as a meta module: the panels, the cables between them and every knob position, stored in your browser and listed under MY MODULES. Clicking it stamps the whole thing back down, wired as you left it. A voice you worked out once does not have to be rebuilt. Only cables with both ends inside the selection travel with it.

Rooms

Pressing ROOM opens the rack to other people and gives you a link to hand out. Everyone in the room sees the same modules, the same cables and the same knob movements, along with each other's pointers and selections, and everyone renders the audio on their own machine. The server stamps an order onto the edits so that several people can hold one rack between them; it does not synthesize anything and it does not know what a cable is.

Two things move actual audio, and both are things you do on purpose. A file dropped on a FILE panel is uploaded so the others can hear it, and the panel says so as it happens. And TO ROOM on an INPUT panel puts a live microphone on the air to the room, one person at a time, sent browser to browser rather than through the relay. A direct connection means the people in the room can see your IP address, the way any call does.

A room link is also a share link. Rooms are cleaned up after a day with nobody in them, so somebody who clicks an old invite gets the patch it started from rather than an error.

Tape and recording

TAPE is a four-track deck inside the rack. It records what you patch into it, overdubs, and plays back at any speed or in reverse, and its output is a signal like any other, so what the tape caught can be patched back into the system that made it. Modulating SPD with an LFO detunes what it already has.

Separately from the tape, a session recorder captures the master output and saves it as a WAV file. It is held in the tab until you save it, so it caps at about ten minutes: there is no way to stream audio to disk from a page, so the ceiling is memory rather than a policy. For anything longer, record in takes.

Saving and sharing

The current system is saved to your browser as you work: every knob, switch and selector, the module positions, the sequencer's steps, plus tempo, swing and master volume. Reload and you are exactly where you left off.

SHARE packs the entire system into the URL and copies it to the clipboard. A fifteen-module patch comes to roughly 300 characters and a seventy-module one to about a thousand: the session is reduced to a compact binary form that addresses modules, parameters and jacks by index, deflated, then encoded into the part of the link after the #, which browsers never send to a server. Nothing is uploaded and no copy is kept. Audio is left out, so a link carries the patch but never the tape or a loaded sample.

SAVE keeps the rack under a name of its own, in a library alongside the built-in systems. EXPORT writes a system.json and IMPORT reads one back. Saved systems live in one browser, so export or share is how one travels to another machine.

Privacy

No accounts and no cookies. Your rack lives in your browser's local storage, share links carry the patch in the URL itself, and audio is processed in the page: the microphone stays there unless you put it on the air yourself, and the tape never leaves at all.

Rooms are the one exception, and only while you are in one. Your display name, your pointer, your selection and your edits are relayed to the other people in that room. The patch and its edit log stay on the relay so that somebody following the link later walks into the rack rather than an empty one, and are deleted after a day with nobody in the room. Names, pointers and selections are passed between the people present and never written down.

What it does not do

Open the synthesizer