Workshop Journal · Chapter 03
Finding the voice
A workbench in VCV, and a melody that finally sang
14–15 Jul
14 Jul 2026
The melody didn’t sing
I finally patched the whole instrument into VCV Rack and played it — not rendered it, played it — and the melodies were unusable. Note salad. Two causes, both mine. The looping step buffer was seeded from independent random values, one per slot, so even a perfectly clean loop was a quantised scatter with no line running through it. And the only melodic controls were a probability dice and an ENTROPY knob whose “new” direction just eroded the phrase down to a single held note. The spec had literally written the goal — “moves in lines, anchored around the root” — and the code never once produced it.
This is the exact place a solo project breaks, and I walked straight into it. Alone I can build the thing, render it, unit-test every sample bit-for-bit, nod along to the CSV plots — and none of that tells you it doesn’t sing. Only playing it does. It’s the kind of thing a second pair of ears catches early — and the Synthux Academy residency builds that pair in twice over: bi-weekly sessions that are part critique, and real Spotykach players who’d actually run this firmware. Either would have said “those aren’t melodies” sooner than my plots did. I got there in the end — just the long way round.
So the melody engine gets torn out and rebuilt (milestone M4.7). Gone: capture, the probability knob, the erode half of entropy. In their place, one bipolar MELODY knob — LOOP in the centre, GROW right to vary the phrase you already have, RENEW left to generate genuinely new, structured phrases from a real motivic generator with five switchable characters. Rhythm becomes part of the melody through a per-step gate layer and a live DENSITY control. Composed, not diced. No fresh render this time — the old “melody” isn’t worth publishing and the new one is still under the soldering iron. The picture below is the bug itself: the singing line I aimed for, against the scatter the buffer actually held.
15 Jul 2026
The workbench moved into the computer
The last entry ended with a lesson: only playing the instrument tells the truth. So the VCV Rack experiment stopped being an experiment — Spotymod is now a real Rack module and a permanent part of the development loop, the test surface until real hardware is on the bench. It exposes deliberately too many knobs: every engine parameter that might matter gets one, and playing decides which of them earn physical knobs on the Spotykach — and which collapse into the macro gestures. And it cuts both ways: anyone who doesn’t own the hardware can play the instrument today.
Porting took an afternoon, and that was the plan all along. The engine has been hardware-independent since milestone M1: it doesn’t know what a host is — it reads parameters, processes a block, returns audio. Deterministic, no clocks, no I/O, no heap. The offline render host that produced every demo on this page is one thin adapter around that core; the Rack module is simply a second one. Same engine, note for note — which means every knob you turn in Rack is testing the exact code that will run on the hardware.
Download — current build grab your platform’s .vcvplugin and drop it into Rack’s plugins-<os> folder · Intel Mac? build from source · all versions
15 Jul 2026
The melody sings now
The rework from the last entry is in (milestone M4.7), and it was tested the only way that counts — played, in Rack, for an evening. Gone for good: the capture gesture, the probability dice, the erode-to-one-note half of entropy. In their place a single bipolar MELODY knob. Centre is LOOP — the phrase you have, exactly. Turn right into GROW and the phrase varies itself, one fired step at a time, without losing its identity. Turn left into RENEW and a motivic generator writes genuinely new phrases — arcs, questions and answers, walks around the root — in five switchable characters on the PRIN button. Rhythm finally belongs to the melody too: a per-step gate layer decides which steps sound at all, and DENS thins or fills the line live. Composed, not diced.
No offline render this time, on principle. The last entry was one long lesson in how little a render proves about whether a melody sings — so this one ships as the thing itself. Download the module above, turn MELODY slowly from hard left to hard right, and listen to the same eight notes learn new manners. That’s the proof.
15 Jul 2026
The reverb that moonlights as a delay
The surprise winner of the Rack evenings. Two small milestones grew the shared room into a second instrument: an equal-power MIX knob at the master join (with a proper bypass — at zero the room empties and stops burning CPU), and DIFF, which replaced the old modulation-depth knob (milestones M4.8, M4.9). DIFF is the revelation. Turned down, the room stops being a room: the tail falls apart into discrete slap echoes — a delay in all but name, and with SIZE as its time knob a very playable one. Turned up, every attack melts on entry and the same tank is a dense ambient wash.
Together with DECAY past 100 % — where the tank crosses into a self-sustaining bloom — the room now plays like an instrument: ride MIX as a send fader, DIFF as the material, SIZE as pitch-warping time, DECAY as a sustain pedal that can hold a chord forever. Two renders below, the same plucks worked two ways: DIFF low and dry-ish, answering themselves in echoes — then full-wet, DIFF high, big SIZE and a long DECAY, the same plucks arriving as weather.
One more thing surfaced while dialling that wash in. DIFF was quietly doing three jobs at once: the tank’s density, plus two hidden LFOs riding along on the same knob — one smearing the input diffusers (that’s what actually melts each attack into a wash), one wobbling the tail (a faint pitch-vibrato). Fine until I tried to calm the tail wobble and found I couldn’t without also flattening the wash. So the one knob became three: DIFF is now pure density, SMEAR owns the diffuser smear that makes the wash, and MOD owns the tail wobble. The wet-wash render above is SMEAR pushed up with the wobble kept low — big and still, no seasick tail. Three controls that used to be one, each finally testable on its own.