FireFlow

Workshop Journal · Chapter 09

The bucket brigade · CPU hunt, part II

FLUX stops being tape, two days paying the CPU bill, a delay too strange to stay an effect, and two cracks somebody else found

28 Jul–3 Aug

28 Jul 2026

The clock is the instrument

FLUX has been a tape echo since the fork. It is now a bucket-brigade delay, modelled on the Deluxe Memory Man. A bucket brigade is what it sounds like: the signal is handed down a chain of 8192 tiny buckets, one step per tick of a clock. Nothing is stored at an address, so there is no such thing as reading it back from 300 ms ago — the delay time is simply how fast you tick. Speed RATE up and everything still in the chain comes out pitch-shifted. Tick slowly and the highs don’t survive the trip, which is why long delays go dark. No filter is doing that.

same buckets, same signal · only the tick speed changed

Two knobs got their real names. DUST became DRIVE and sits inside the loop, so every repeat saturates again. ROT became STAGES, 512 to 16384 — physically that is swapping the chip, five octaves of brightness at a fixed delay time. And the delay-time modulation lane finally reaches the clock: ±2 octaves, with the Memory Man’s whole chorus range in the bottom tenth. No knob was added.

Then DRIVE turned out to be inaudible — not silent, just 14 dB quieter across the knob, because the makeup gain was shrinking the saturator’s ceiling. Fixing that made FEEDBACK bloom too early, so DRIVE was divided back out of it. On the Seed one line costs 5.61 % of the block budget at its worst, and the delay memory dropped from 4.19 MB to 128 KB. Shipped as v2.15.0.

Session recording · take 97 “Bungee on Bodybrigade”, unedited

28 Jul 2026

It boots humming

Dropping the module in used to get you polite silence and a table of code defaults. It now gets you a drone. The init patch is a snapshot of a session that was worth keeping — touch nothing, and that is already what comes out. Shipped as v2.15.1, in the current build.

the wrong kind of drone · the right one is in the player below
Session recording · take 100, the init patch as it boots

30 Jul 2026

Two days, nothing to hear

Filed under: venting · see the addendum

The CPU hunt has swallowed two days and produced not one audible change, which makes profiling the last job on this project that AI has sped up by exactly nothing — so here is a drone instead.

one audio block, priced · orange is what actually got shaved

Addendum · 31 Jul 2026

It landed. The workload the whole hunt was chasing is the full eight-voice instrument with the bucket-brigade delay on top; laid out the ordinary way, in the far SRAM, it measured 108.9 % of one audio block — the polite way of saying the sound stops. Moving the audio hot set into the chip’s tightly-coupled instruction memory took it to 102.8. Keeping the instrument’s state in the tightly-coupled data memory took about half a point more. Compiling at -O3 — the last thing tried, and the cheapest — took it to 99.5 % in the real audio callback. Under the gate by 0.46 of a percentage point, which is less a margin than a rounding error with an opinion. Link-time optimisation was measured too, and rejected.

So: two days, and still nothing you can hear. That was always the point — the drone below is the same one, it just fits now.

A Daisy Seed board drawn as a live performer on stage, playing DECK A with SYNTH and WAVE on its left and DECK B with BODY and SAMPLER on its right, FLUX, GRIT and ROOM as pedals in front; a glowing chain of capacitors labelled BBD ANALOG DELAY fades out to one side, a FORM / SONG arrangement timeline runs overhead, and a meter reads CPU 94% STABLE.
Session recording · take 104, the current build, unedited

2 Aug 2026

Too strange to be an effect

A bucket brigade does something a tape echo cannot: it bends the pitch of what is already inside it. Push it, and the repeats come back in tune and on the grid, with long gaps between them. Wonderful. Also completely useless as something you hang across a finished mix — it does not colour the music, it writes some. Too strange to be an effect. So it stopped being one.

BBD is the fifth engine, and the first with nothing to play: no oscillator, no sampler, no voices. Put a deck on it and that deck stops making sound and starts eating it — the other deck plays through it, and the same five lanes that used to shape a voice now set the clock, the feedback, the mix. It is the first patch on this instrument where the second half is not a second instrument, but what happens to the first one.

no new sound source · the second deck is now an effect the first one plays through

That cost the decks a proper audio path to each other, which was most of the work and none of the fun — and it paid, sideways, for something that has been sitting on the ideas list since the sampler landed: resampling. Now that one deck hears the other at full rate, letting the sampler record what the other deck is playing stops being a plumbing problem and becomes a question of which button. FLUX, meanwhile, lost its job and went back to being a tape echo, which it is better at. Whether any of it was worth doing is not an argument to have in writing. Take 106 is below. Shipped as v2.17.0, in the current build.

Session recording · take 106 “Eternal Buckets”, unedited · an experiment, not a demo

3 Aug 2026

Somebody read the whole thing

Olli — Blipps — read this diary. Not skimmed: all forty-two entries, end to end, a week of evenings to get through them, and then he went and played the module long enough to find something in it. That is a lot of somebody else’s week spent on a project only its author had ever heard. Thank you.

one reader, the whole log · the copper mark is what he found waiting at the end of it

What he found was a click. Right channel only, and only while the bucket brigade’s COLOR is moving. COLOR hands the two stereo lines different stage counts, MOTION moves COLOR at the lane’s rate, and every time a count changed the delay line was resized underneath the playhead — the read index jumped to a different charge packet, and the output filter turned that step into an impulse. The test that existed proved a stage change left the engine finite. Nothing proved it left the engine continuous, so the crack lived in the one gap the tests left open.

where the second pair of ears comes from · Blipps and Schlötz, playing their own thing

The fix: the ring now always spans its full memory, the stage count only picks how far behind the write head to read, and a change crossfades from the old tap to the new one over a few ticks. Fixed stages stay bit-identical — if they don’t, the fix is wrong. Shipped as v2.17.1, in the current build. Which is the part worth keeping: an instrument only one person has ever played has bugs shaped like that person’s habits. I never push COLOR that hard. Blipps did.

Session recording · take 112 “Music for Schlipps and Bloetz”, the click-free build, unedited

3 Aug 2026

Every knob says what it does

The faceplate got a redesign, which mostly means it stopped lying. SCAN sat beside MELO and LEN beside SUB on every engine — true on one deck, decoration on the other five. Now each engine writes its own words at the knob, REC shows up only where it records, and MELO is called VARY, which is what it always did.

the second pair of ears keeps earning its keep · a staircase where the room was promised a glide

Then Blipps came back with another one: turn SMEAR up and the room went gritty, as if something cheap had been sampled into it. To save CPU, the slow random drift inside the reverb was only refreshed now and then and stood still in between, so the room jumped where it should have slid. It slides now, and the saving survived. Shipped as v2.18.1, in the current build.

the answer that worked · the dry sound steps aside for the swell, and comes back when it goes

Which leaves the bloom. Wind DECAY up far enough and the reverb starts feeding itself, and it comes back louder than anyone asked for. A lid alone was not the answer — quick enough to catch the swell, it pumped. So the room got a soft ceiling that moves in seconds, and past the point where it takes over, the dry sound steps aside and lets the tail through. DECAY reads out in percent now, so that point is visible instead of hunted by ear.

Session recording · take 118 “Click with very long decay”, unedited · the bloom with the dry sound getting out of its way

FireFlow — a workshop journal for a small ambient groovebox.

Back to top