Astronaught
A video signal put through a Space Echo

What it does
Astronaught is a model of the Roland RE-201 Space Echo with a picture where the audio should be. A loop of tape is pulled past an erase head, a record head and three playback heads at equal intervals. A twelve-position Mode Selector decides which heads are listening, an Intensity control feeds the head mix back onto the tape so every repeat is another generation, and a three-spring reverb tank hangs off the input in parallel.
The whole thing rests on one decision: the tape is indexed by position, never by time. A frame is laid down wherever the tape had got to when it was recorded, and it stays put. A playback head sits a fixed distance down the path, so it reads whatever has arrived under it. The delay isn't stored anywhere. It's just how long the tape takes to cover the head spacing.
Three behaviours come out of that with no code of their own. Turning Repeat Rate drags every echo already on the tape, because the material doesn't move, only the speed the heads reach it at. Roland describe this in both directions: the pitch rises as the tape speeds up, then falls again as the thinner recording reaches the heads. The picture comes back torn and rolled, because a frame is written down the tape while the tape's moving, so it covers a stretch of it and a head almost never lands on a boundary. And the three echoes wobble independently, because each head reads a different point on the tape and so sees the speed error from a different moment, which is the chorus the machine's known for.
The head geometry isn't a set of tuning constants. Roland's own documentation says the three playback heads sit one after another at equal intervals, so their delays are locked at 1 : 2 : 3 and there's one delay control rather than three. The twelve-position selector is copied from the printed table rather than worked out, and the obvious guess is wrong: positions 1 to 4 are echo only and the only combination among them is heads 2+3, so there's no dry 1+2 and no dry 1+2+3 anywhere on the machine.
There's one place where a picture and an audio signal don't behave alike, and I haven't hidden it. A video signal is unipolar, so its echoes can't cancel: three heads over a bit of the picture that hasn't moved are three copies of the same value, every time. Modelled literally, eight of the twelve selector positions went flat white at any useful Intensity. So the head bus is levelled before the feedback, the record amplifier's headroom is shared between input and regeneration, and the spring tank is a normalised one-pole. All three departures are written up in the source next to the code that does them.
- A tape loop indexed by position, so changing Repeat Rate drags the echoes already recorded instead of re-timing them — measured, not asserted: after a 500 ms to 125 ms change, head 1 is still reading 450 ms-old material
- Three playback heads locked at 1 : 2 : 3 by their spacing, and the RE-201's twelve-position Mode Selector transcribed from Roland's printed table — including the three head combinations the machine does not offer
- The vertical tear and roll that a raster written down a moving tape produces, and the stretch that comes with reading it back at a different speed
- A transport that is never quite steady, so each head sees the speed error from a different moment and the three echoes chorus against each other rather than wobbling in unison
- Tape saturation as a true limiter, head gap loss and hiss along the scan, and dropouts — all inside the feedback loop, so every repeat is another generation rather than a quieter copy
- A three-spring reverb tank in parallel with the tape, live in the eight selector positions that have it, with a Dispersion control for how much a spring blooms as it decays
- Head Spread, which moves the playback heads along the path — something the hardware could only do with a screwdriver
- Ten factory presets, from a single tight slapback to a loop past unity that builds
Where it stands
Released as v0.1.3. v0.1.1 only changed the Windows installer, which no longer touches the system PATH (the earlier one could overwrite it). v0.1.2 fixes the tape loop destroying itself at its first rebase, which at the default Repeat Rate happened seventeen minutes into a show and left every head reading the frame just written. Not ideal. v0.1.3 only changed the name Resolume lists it under, now SW Astronaught, so the Stoatworks plugins sit together in its browser. It's been loaded and rendered in Resolume Arena 7.27.1 on macOS and on Windows, the Windows one on Mesa llvmpipe, which is a different GLSL compiler and the reason for running it there. Both hosts read all 27 parameters with nothing truncated, both detect the host clock as milliseconds, and a factory preset applies, holds through live rendering and only drops to Custom on a real edit. Twenty-one checks pass from a clean universal build: the Mode Selector matches a second, independent transcription of Roland's table (including the three combinations that mustn't exist), the head spacing and delay range match Roland's published figures, the GLSL tape read matches a separate C++ version on every row, a bypassed Astronaught returns the picture byte for byte, and the drag and the chorus are measured rather than assumed. It costs 0.93 ms a frame at 1080p on an Apple M4 Max. Still open: nobody's dragged a slider by hand, since every control was driven over Resolume's REST API; no NVIDIA or AMD driver has run it; there's no OpenFX build, and there can't be one without reimplementing the loop; and none of it has been through a show.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead