FireFlow

Workshop Journal · Chapter 16

Anything but the multiplexer

Two mux breakouts lie on the desk waiting for somebody to measure them. What gets built instead: a drone engine, deleted the same week — an FM engine, built at three percent motivation — a knob that lets the two decks hear each other, a button that turns every other knob into its own modulation depth, a knob that pulls one deck’s melody onto the other’s chord, and depth knobs that go bipolar — gliding right of noon, stepping left of it — a resonance leveller built twice and withdrawn the same day — a balance knob that places each deck across the stereo field while the reverb it feeds stays in the middle, and a plate that stops being a blueprint and becomes one dark surface — then, at the fab, the four-layer board that will measure the multiplexers, eight dollars for five, and finally that board on the desk with its printing unreadable, which is how it ends up needing a map drawn by hand — and, at last, a soldering iron, twenty-four legs at the first attempt and one joint that came out as a silver bead — and, at last, a finished board: the through-hole parts, a multimeter over every rail, ±12 V, and the Patch Submodule seated on top with one red LED lit while the measurements it exists for start running

18 Aug–17 Sep

18 Aug 2026

What I built instead of measuring a multiplexer

Two multiplexer breakouts have been lying on the desk for a week. The 60 HP panel has more knobs than the board has analog inputs, so they get read through chips like these, and before any of that can be trusted the pair has to go on a breadboard and somebody has to measure how long a channel takes to settle after the address lines change. It is an afternoon.

Two small purple breakout boards on a wooden desk, each carrying a single wide-body chip and a row of header pins soldered through. The nearer one is turned so its silkscreen reads: Y0 to Y7 down one side, GND, VCC and VEE at the corner, the select lines along the top. Behind them sit an orange circuit board, a couple of black round components and a bare breadboard, all out of focus.
the afternoon in question, still lying exactly where it was put down

Here is what got built instead. SWARM: an additive drone engine, fourteen sine partials per deck, two rounds, four spectral characters, a modulation section rebuilt from the ground up. Eighty-three commits, about 14,200 lines. Then it was played, and it still was not an instrument anybody wanted to touch — so all of it went back out. A tag holds it, the specs sit in the attic, the removal was two commands.

fourteen sines a deck — and not one of them left

Two findings outlive it. The slow breath at the bottom of the modulation lane was not slow but frozen: pitch unchanged bit for bit on 93.9 % of control ticks, and the test defending it passed with more margin once the drift was switched off. And HARM, the control that always sounded out of tune, was bending the second overtone by 420 cents where four and a half was the whole idea.

Plus one take, which is now the only evidence the engine was ever here.

Session recording · SWARM, second round · “Jazz is in the Fire”

The multiplexers are still on the desk.

21 Aug 2026

I opened Rack at three percent motivation, and it was already doing it

v2.21.6 · FEED, the first FM engine in here · and a new patch to boot into

Honest first: this week I ran out of steam.

The date this project is building toward is one I picked myself. It is not a real deadline. It is what was left over after the residency said no, back in chapter 10 — a stand-in. And nobody gets out of bed excited to finish the stand-in.

So the week went the way weeks go when the reason is thin. Build a whole new engine. Fit two new knobs to the panel. Delete one of them again the next morning, along with every piece of the instrument that had grown around it in a day. Have a long, serious argument with the AI about whether this should even be one box or three. Nothing in that list is wrong. It just never added up to a feeling.

The thing I built while not feeling it

It is called FEED, and it works like this. Two sine waves. One of them you hear. The other one you never hear — its only job is to shake the first one, and how hard it shakes decides whether the result sounds like a flute, a bell, or a bell somebody dropped.

one pair — the sine you hear, and the sine that shakes it

One knob does the interesting part. Turn it down and each pair listens only to itself: steady, in tune, well behaved. Turn it up and it stops listening to itself and starts listening to its neighbour instead — which is running at a slightly different pitch, and now the two of them are arguing. Six pairs sit in a ring, and every one of them drives the next.

the ring — turn BOND down and it falls apart into six calm voices

And that is the whole point of it: the movement is not added, it is a consequence. There is no slow wobbler in there, no random walk, nothing painted on afterwards. Six things pulling on each other never quite repeat and never quite settle. It moves because it cannot help it.

Good work. Still no feeling.

Friday morning, at maybe three percent

I opened Rack to see how bad it was. That is the honest reason — not to work on it, to assess the damage.

And it was doing it. The one thing this whole instrument was ever built for: set it going, take your hands off, and it keeps arriving somewhere. Not a loop. Not a recording playing back. It kept moving, and I kept listening, and at some point I stopped waiting for it to get boring.

So I did the only sensible thing. Hit record and touched nothing.

Session recording · “Set and forget” · one take, no knob touched after the record button

Nearly five minutes, unedited. What you hear at minute four is the same patch as minute one. It just went there on its own.

Then I made it the patch you open into

Every version of this instrument boots on a factory patch, and every one so far was designed — values picked, tested, argued about. This one was not designed. It was played, it was liked, and it was saved exactly as it stood. Forty-two of its seventy-one settings moved.

It also breaks a few of this project’s own habits, all of them by accident. It is the first factory patch whose tempo is off the floor. The first where one of the two decks starts in step time on purpose. And the slow weather-walk that has quietly drifted the modulation in every patch before it is parked at zero here. This one does not need it — the engine is already restless.

Download — v2.21.6 grab your platform’s .vcvplugin and drop it into Rack’s plugins-<os> folder · add a FireFlow and press play · all versions

The deadline is still a stand-in. A good morning did not fix that, and I am not going to pretend it did. But a date you set for yourself and a thing that actually works are two different objects, and this week the second one turned up without being asked.

The multiplexers are still on the desk.

22 Aug 2026

The two decks stop ignoring each other

Two decks, one output, and until this week nothing between them but a mute. That is CHOKE: while the deck you give priority to plays, the other one may not start a note. Five snapped positions — and a probe says they were really three. A knob that was a switch.

Now it is a knob. A hair off noon, a follower listens to the priority deck and leans on the other one while it sounds. Nothing muted, no note refused, just room. Keep turning and the old mute comes back on top.

the inner half makes room — the outer half still takes it

Two things were wrong first. The duck’s floor was named −16.5 dB and delivered −1.6. And the detector read the priority deck raw — so a deck morphed all the way away, dead silent, still pushed the other one down. It reads what you hear now.

Noon is still exactly nothing: depth zero, gain exactly 1.0, every multiply the duck adds an identity. Both render gates still match their old hashes.

Not settled yet. What I am trying right now is the depth pushed past its own floor — somewhere between 100 and 120 % — with attack and release pulled down to almost nothing, so the duck snaps instead of breathes. That is a different effect, and I do not know yet whether it belongs on this knob.

under test, not decided — the same duck with the brakes off

The take below is a test drive, not music — the new duck against the new FM engine, hands on both knobs. It wanders.

Test drive, not a take · CHOKE duck against FEED · “Side FM”

22 Aug 2026

Hold MOD, and every ring becomes a depth

v2.21.7 · the MOD pad becomes a layer · experimental, hardware unproven

The MOD pad in the corner of the panel has been print only since the plate was drawn — nothing behind it, nothing to press. It latches now, lamp lit while it holds, and while it holds every knob whose ring is drawn in its deck’s colour shows its modulation depth instead of its sound value. Let go and the sound comes back. Both sets live in the patch.

the ring is the affordance — the lamp says whether it means anything

A plain ring means the knob keeps its sound function even latched — the clock, ENG, CHOK, MOD itself. Rack drew a second, brighter ring on top of the printed one for about an hour; it went again, because hardware cannot draw one and the lamp already says whether the layer is up. Twenty-one depths per deck, six in the middle, every one of them zero at boot except the six the engine already owned. The init patch sounds exactly like it did yesterday.

A crop of two groups on deck A of the dark plate, each framed by mint corner brackets: #04 MOTION on the left, #05 VOICE on the right. Every knob is a dark disc with a single white pointer. MOTION carries SHAP, SMTH and RANG in a row above the larger MOD and DENS; VOICE carries ATK, DEC, RES and SUB above FILT, TIMB and DPTH, with a lit yellow lamp beside ATK and a dimmer one beside FILT. All of them are ringed in bright mint green except MOD, which alone keeps a plain dim blue-grey ring — the ring every knob used to have.
every ring here owns a depth except MOD’s

Whether it survives hardware is the open question. In Rack a knob can be in two places at once. A pot cannot — let go of MOD and it sits where your hand left it while the value underneath is something else, so the next touch jumps. Nobody has solved that pickup yet. Experimental on purpose — and in the current build anyway.

Two minutes below of the layer being used and nothing else. Not music — depths pulled up and down under the latch to hear what the new ones actually do.

Not a take · depths moved live under the MOD latch · “Half the way to holy glitch land”

23 Aug 2026

PULL, and the bass takes the chords with it

v2.21.8 · chord gravity between the decks · first listen

PULL is a bipolar knob in the centre, directly right of CHOKE. Which way you turn it says which deck leads; how far you turn it says how often a note on the other deck lands on the leader’s chord instead of on its own scale. How often, not how hard — near the middle one note in a while gets caught, at full deflection every one does. Centred it does nothing, and the engine renders byte for byte what it did before the knob existed.

A caught note that is already sounding keeps listening. When the leader’s chord moves underneath it, it slides onto the new one over the same short glide a scale change has always used, rather than waiting for its next strike.

the dice are thrown once per note, and only the winners leave the scale

The take below runs it backwards from the way it was designed. The bass deck leads with its COLOR at zero, so its “chord” is a single pitch class — and the deck that actually plays the chords is the one being pulled, landing on whatever the bass just played and stacking its own chord on top of that. The bass line drags the harmony behind it. Nobody wrote that mode; it falls out of a chord being a set that is allowed to have one member.

Session recording · v2.21.8 · PULL toward the bass deck, the chords following it

Yesterday’s release notes said PULL had not been heard yet. It has now — but the dead zone at noon and the straight line from there to full are still first-try numbers, and the 60 HP plate had no free slot for the knob: the GLOBAL row re-pitched to four, the other three shifted 6.5 mm left to make room.

Download — v2.21.8 grab your platform’s .vcvplugin and drop it into Rack’s plugins-<os> folder · put one deck in a chord and turn PULL off centre · all versions

23 Aug 2026

The plate stops fidgeting

VOICE was the only two-row group on the plate running on three heights: two small knobs crowded to the left, a hole in the middle, and the filter alone on a line of its own, because a large cap does not fit the 13 mm pitch it shared with its neighbours. The row changed instead of the knob. FILT is a large cap again, centred, small–LARGE–small — the same figure TIMING has had since the graphics round. Both rows are written from one pitch and one centre line now, so they cannot drift apart again.

The 60 HP hardware panel running as a module: a near-black plate with an empty header strip across the top. Two mirrored decks, deck A framed in mint corner brackets on the left and deck B in orange on the right, each group numbered and named in small monospace — ENG, SEQUENCE, CAPTURE, MOTION, VOICE, PITCH, FLUX, LEVEL. Every knob is a dark disc with a single white pointer. In VOICE the lower half reads small, LARGE, small: TIMB, a large centred FILT, DPTH — the same figure as TIDE, a large MRPH and PACE in the centre column's TIMING group. Between the decks sit GLOBAL with SCAL, DRFT, CHOK and PULL, then TIMING and ROOM, and a single row of jacks runs along the bottom.

Download — v2.21.9 grab your platform’s .vcvplugin and drop it into Rack’s plugins-<os> folder · add the hardware panel and look at VOICE · all versions

Then I stopped drawing and made something. The take is a patch nobody touches: started and left alone, every move in it the instrument modulating itself.

Session recording · v2.21.9 · a patch left alone, no hands on it after it started

29 Aug 2026

Left of noon, and every depth knob grows a second half

v2.21.10 · the MOD depths go bipolar · a new patch to boot into

Hold MOD and turn a wreathed knob. Right of noon it does what it always did: that lane's modulation, gliding.

Left of noon is the same lane, read differently. It is sampled at the lane's own slot boundaries and held, so the target steps between values instead of sliding between them.

Noon is off. A small dead zone sits around it, so off stays reachable on a real pot the way it already is on GRIT and PULL.

one knob, one lane — the sign picks the reading, the distance picks how much

Left is not an inverted right. The sign says which reading the target follows; the distance from noon says how much. At the same distance either way you get the same amount of modulation — one gliding, one stepping.

Where to hear it: FLOW with SMOOTH up. In STEP at SMOOTH 0 the two halves are the same signal, exactly, because the lane is already a staircase and sampling a staircase changes nothing. Go looking there and you will decide the knob is broken.

One caveat, honestly. The grid rarely catches a lane's extremes, so the held reading swings a little less than its gliding twin — 0.905 against 0.941 peak to peak at SMOOTH 0.7. That is what sample-and-hold does, but it means the left half is a touch gentler at the same distance from noon.

I turned it by hand this morning and kept all three positions as they stand. The width of the dead zone is still a guess. A mouse lands on an exact noon, so Rack cannot answer that one — it is a question for a 9 mm pot, and the pot does not exist yet.

The lamp double-pulses now

The latch re-points every wreathed knob on the plate at once, so forgetting it is engaged is the expensive mistake. A steady lamp just becomes furniture.

Two short flashes, a gap, then a longer dark tail, twice a second. An even blink was tried next to it and rejected: at this rate it reads as a loose contact, not as a signal.

The patch you now open into

A fresh module no longer boots the 2.21.6 sound. This one revises its predecessor rather than replacing it — twelve of seventy-two panel values moved, and every structural decision stayed: FEED against WAVE, deck B stepped, the same tempo and scale.

What is new in kind: the MOD layer boots with something dialled. Five depths sit off noon out of the box — SUB on deck B, DETUNE on both, MORPH and REV_DIFF in the centre column. Latch MOD on a fresh patch and you will see them away from centre. That is the patch, not a fault.

Here it is as it boots. Record on, hands off.

Session recording · the new init patch, straight through, nothing touched

Six and a half minutes, unedited.

The depth knobs now run −1..+1 instead of 0..1. Patches from earlier versions are not converted — this is a development alpha and saved patches may break between releases.

Download — v2.21.10 grab your platform’s .vcvplugin and drop it into Rack’s plugins-<os> folder · hold MOD and turn a knob left · all versions

29 Aug 2026

TAME, built twice and kept neither

A leveller on the master bus that hunts down the resonances that stick out and pulls them down — soothe, roughly. I built one. Then, when the first turned out to be answering a question nobody had asked, I built a completely different second one.

The first waited for a resonance to stand still before touching it, on the theory that a tone which holds its pitch is the one that tires the ear. On a real take the loudest peak drifts about two octaves a minute, and the longest it ever holds still is a quarter of a second — against the three seconds that version needed before it would open. It never engaged once. Not tuned wrong: the premise was false for this instrument.

one waited for something that never happens — the other did its work too quietly to hear

The second one works, and that is what killed it. Nineteen bands, the three worst offenders cut, the level handed straight back so the block cannot quietly become a volume knob — so single bands move about a decibel and a half and the loudness does not move at all. I listened to it at every setting it can reach and could barely hear it. Push it far enough that you can, and what you hear is damage. So main went back to the commit before the first spec: a tag holds both attempts, and the repo carries no trace of either.

The multiplexers are still on the desk.

30 Aug 2026

PAN, and the room stays where it is

v2.22.0 · a bipolar balance knob per deck · the reverb send stays centred

One knob per deck, placing that deck across the stereo field. Noon is exactly unity — both channels at gain 1.0, every multiply an identity, every render hash unchanged.

Only the side you turn away from moves; the other stands at 1. What that costs is stated: at a hard stop the far channel's content is gone.

The send is not panned. The dry deck walks off to one side and the tail it feeds stays in the middle — and the gate defending that exists because folding PAN into the deck gain would have looked like a tidy-up.

the deck moves across the field — the room it feeds does not

Two slots were already being held empty for it, one on each panel. No control moved and no row was re-pitched.

Then the mod ring turned out to be moving the whole mix

Both decks read their own drift lane, on the assumption that two decks meant two drifts. They do not: at equal rate the two lanes correlate at r = 1.0000. Same signal, so the ring swung the entire mix to one side instead of opening a stereo image.

Deck B's pan now reads deck A's lane, negated. The cost, taken deliberately: deck B's own depth ring no longer reaches it.

The take below is from before that fix — six minutes, unedited, 50 dB of travel between its extremes. It is the recording that made the problem audible.

Session recording · v2.22.0 · PAN by hand, before the ring was corrected

Nothing here has been heard against an alternative: the balance law, the 30 ms smoothing copied from LVL, the lane the ring rides. All first-try.

30 Aug 2026

The plate stops being a blueprint

Three tinted zones, a printed ember silhouette, baked fades, seam gradients, a raster of dashed drawing frames. All struck. One continuous dark surface now, in a single rect.

Zone identity moved into the groups — a white wash that lifts the field, an accent wash that says whose it is. DECK A and DECK B went with it, because the tint says that now.

The 60 HP hardware plate as one unbroken dark surface, with no dashed frames and no printed silhouette. Groups are marked instead by softly lit rounded fields: mint-green ones across deck A on the left, orange ones across deck B on the right, and neutral blue-grey ones down the centre for GLOBAL, TIMING and ROOM. Every knob is a dark cap with a thin accent collar and a single white pointer in its group's colour; small lamps sit beside ATK, FILT, TIMB, SONG, COLR and LVL. The bottom band of each LEVEL group reaches sideways past the deck edge as an L to hold SEND, so deck A reads PAN GRIT SEND and deck B reads SEND GRIT PAN. Along the bottom a single row of dark jacks with pewter rings carries no group legends at all, only the caption under each socket, with a square SHFT keycap at the far left and a square MOD keycap at the far right.
one surface, and not one control moved to get it

The parts stopped being Rack's, too. Dark cap with an accent collar and pointer, dark barrel with a pewter ring, a square keycap that fills a third of the way when engaged. A black cap said nothing about which deck the hand was on.

SEND moved into LEVEL where it belongs; LEVEL's frame grew a foot past the deck edge to hold it. The jack row lost its group legends — a caption under each socket already named it.

And the mod rings left the print. Silkscreen cannot switch, so drawing them only under the latch was a plate decision, not a cosmetic one. The cost, plainly: the aluminium panel marks its modulatable knobs nowhere at all.

Download — v2.22.0 grab your platform's .vcvplugin and drop it into Rack's plugins-<os> folder · add the hardware panel and turn PAN off centre · all versions

The multiplexers are still on the desk.

3 Sep 2026

Eight dollars of real hardware, and an argument about SMD

The test coupon has gone to the fab. In a few days there will be a board on this desk that nobody rendered — the first piece of this project you could drop on the floor.

It is 100 × 80 mm, four layers, and it is not a prototype of the instrument. One Daisy Patch Submodule, both mux footprints next to each other, seven pots, a probe point on each COM node, and eight questions it exists to answer — the first of them being how long a multiplexer channel takes to settle.

Which means the two breakouts that have been lying here since 18 August are not going on a breadboard after all. They are being outvoted by a circuit board.

Then the argument. The whole thing is SMD — 0805 parts and SOIC chips, the largest of which has twenty-four legs at 1.27 mm pitch. I have never soldered any of that and said so, at some length. HAL was not impressed: the only difference is that you need a magnifier and flux, you tack down one leg, and the rest goes almost by itself. I remain sceptical. I am doing it anyway, because five boards cost eight dollars, and as money-destruction machines go this one is underpowered.

The multiplexers are still on the desk. About a week longer.

15 Sep 2026

The boards are here, and I cannot read them

Five green rectangles in an envelope. Every part has its name printed beside it, which sounds helpful right up until you look.

The parts sit two millimetres apart. The names need five. So they overlap, and in the busy corner they are one grey smudge.

Which leaves me holding a board I cannot read. I cannot tell which pad wants the 10 k and which wants the 0 R — and that is the whole job.

So I drew the map the board should have come with

The 100 × 80 mm board drawn from above, every part a coloured rectangle at its measured size and place. Down the left, three dark chips beside a column of green and copper rectangles. Across the middle, the large pale outline the Daisy module covers. At the right, a tall connector, a stack of blue capacitors and a row of yellow test pads. A darker band runs the full width below the middle, and under it seven big square potentiometers, two dark mux chips and several dozen small grey, mint and copper rectangles. Eight numbered red circles sit in the margins, each on a thin line pointing into the area it names, with the key printed below the board.
the same board the fab sent, with the parts told apart by colour

Colour is the value. Grey is 0 R, copper is 1 k, mint is 10 k, blue is a capacitor. Open one reel, fit every rectangle of that colour, close it again.

The full plan goes further: it names all seventy-eight parts, one at a time, and puts a dot on pad 1 of each — read out of the board file rather than guessed. On the chips that dot is the notched end. The LEDs get a bar on the cathode as well, because an LED fitted backwards is a very quiet LED.

Two footprints stay empty on purpose — C_COM16 and C_COM8, outlined in dashed red. They are there in case the measurement asks for a capacitor on COM. It has not asked yet.

The full plan, every part named · it is too wide to print here, and it is the sheet I will actually be squinting at.

Five goes at it

I still have not soldered a twenty-four-leg chip at 1.27 mm pitch. HAL's advice has not changed: magnifier, flux, tack one corner leg, the rest follows.

The comfort here is arithmetic. Eight dollars bought five boards. Board one is allowed to be a disaster. Board two a smaller one. By board five I am supposed to be a person who solders.

The multiplexers are still on the desk. They have company now.

16 Sep 2026

Board one, and nothing caught fire

Four SMD soldering videos, which is three more than were needed, and then I did it. HAL was right: magnifier, flux, tack one leg, the rest almost places itself. Recorded here once, and not mentioned again.

The whole 100 × 80 mm board lying on a dark mat with a red and white pen across it. Down the left edge three black SOIC chips are soldered in place, a row of small resistors above them and the LED pads between still empty. The middle of the board is the large empty outline the Daisy Patch Submodule seats into. At the bottom right the two mux chips are fitted and surrounded by dozens of tiny resistors, some places filled and some still bare gold. The potentiometer footprints and the audio jack along the bottom left have not been touched.
board one at the end of the day — every surface part on, nothing through-hole yet

The twenty-four-leg mux went first, which is roughly learning to drive on the motorway. It is not pretty. Every leg sits on its own pad and nothing bridges, but one trace beside it has lost its mask — bared, not cut, as far as ten times magnification can tell me. I am choosing to believe the loupe.

After the chip the resistors feel like sticking stamps on envelopes. 1002 is a 10 k, 1001 is a 1 k, the map says which colour goes where, and each reel gets opened once. R_REFB2 got the better of me and now wears a silver bead about the size of the part it holds down. It measures 10 k anyway.

Tomorrow the through-hole parts, then ±12 V on the header and a probe on the points this board exists for. If nothing gets hot, the Patch Submodule goes on top and the settling test finally runs — the afternoon of 18 August, twenty-nine days later.

The multiplexers are off the desk. The sixteen-channel one is soldered down, badly, by me.

17 Sep 2026

The SMD boss, first try

Through-hole day: seven pots, the jack, the button, the power header. After yesterday's twenty-four legs, none of it was frightening.

And the part I had been dreading for a month was already behind me. The sixteen-channel mux went down at the first attempt and stayed down — every leg on its own pad, continuity where it belongs and nowhere else.

Then, in order, because there are only five boards: multimeter over every rail and every neighbouring pad, ±12 V on the header with nothing on top, and only after nothing got warm, the Patch Submodule into its sockets.

The finished coupon on a wooden desk, powered. The green board carries seven black knobs in two rows along the top and a 3.5 mm jack at the right; the orange Daisy Patch Submodule is seated across the middle on its sockets, with a purple USB cable plugged into it. A grey ribbon cable loops out of the black ten-pin power header at the left and up to a Eurorack case standing behind the desk. A single red LED is lit at the edge of the submodule.
power from the rack, submodule on top, one red LED

One red LED. That is the entire light show, and it is the best thing this project has produced since the first note.

The measurements are running as I write this — settling time first, then the rest of the eight questions. Results when they are in.

Both multiplexers are on the board now: soldered, powered, and being measured. The desk is clear.

FireFlow — a workshop journal for a small ambient groovebox.

Back to top