Astable
Six 555 timers on a television, for Resolume

What it does
An FFGL source plugin for Resolume Arena and Avenue — six 555 timers on a breadboard, patched into the X, Y and brightness of a television's deflection yoke. Nothing here is drawn as a shape. Each timer is simulated at the component level, and whatever its output and its capacitor are doing is what the yoke is fed. The renderer deposits a fixed quantum of energy per sample interval and spreads it over the distance the beam covered, so brightness proportional to dwell time is what equal energy per unit time means rather than a term applied on top.
Everything follows from that, and none of it is a feature that was added. Two square waves into X and Y give four dots, because the beam sits at a rail, crosses to the next in a single interval and sits again — the corners get nearly all the light and the crossings are faint lines. An RC on an output turns the dots into lines, brightest at the end the beam is slowest at. The capacitors instead of the outputs give curves, because the capacitor waveform is an exponential between Vcc/3 and 2Vcc/3, so every edge of the figure bends. One timer's capacitor into another's pin 5 is FM, because the control-voltage pin is the threshold, so driving it sweeps both frequency and duty. And a yoke is magnetic: coil current lags voltage through L/R, so fast edges round off and the figure is squarer at low frequency than at high.
The figure precesses and breathes because the oscillators are free-running and nothing is phase-locked, so two channels a capacitor's tolerance apart beat at a few hertz and walk through every phase relationship. That crawl is the charm, and it is also why the four dots take a full beat period to all appear.
The controls are parts rather than sliders. Resistors are 1 kΩ–1 MΩ and capacitors 1 nF–100 µF, as a decade plus a fine multiplier, so a value reads off like a real part — 100 nF × 1.01 is a 100 nF capacitor that is 1% high, which is what two parts out of the same bag are — and the panel shows the real units: 10.0 kR, 101.0 nF, 76% high, 1.34 ms. Reset is pin 4, and off holds the output low and discharges the capacitor. The Maddi mark/space trick puts a pot across the timing path so charge and discharge share one total resistance, which moves the duty and leaves the period where it was.
The tube is measured too. Eight phosphors come from a real table: P4 is the monochrome television white and the default, P22 is a colour set's three phosphors driven as one white with the red's millisecond lag intact, and the other six are vectrix's scope phosphors. Changing phosphor changes the brightness, because the efficiencies are real. There are eighty-seven controls in eleven groups, and the honest answer to how to use it is to start from a preset — each of the seven is a whole breadboard rather than a set of slider positions.
Astable is the other half of a pair with vectrix, which credits the same source: vectrix is an oscillator and a pedalboard into a lab scope, and Astable is six 555s on a breadboard into a television, with resistors and capacitors for controls. It uses vectrix's beam renderer. Both were inspired by Ms Mad Lemon's What A 555 Timer Looks Like On A CRT TV and its follow-ups, which do exactly this with real 555s and a real television.
- Six 555 timers simulated at the component level — capacitor, two comparators, flip-flop, and pins 4 and 5 that do what they do
- Resistors and capacitors as real parts, with a decade and a fine multiplier, and the values read off in real units
- A patch bay: any channel's output, capacitor or filtered output into X, Y or Z
- A magnetic yoke with an L/R lag per axis, deflection gain and an amplifier rail that clips
- Brightness from dwell time, because the renderer spreads a fixed energy quantum over the distance the beam covered
- Eight phosphors from a measured table, including P22's three phosphors driven as one white with the red's lag intact
- The Maddi mark/space trick: the duty moves and the period does not
- A tube face with focus, persistence, aspect, corner radius and overscan
- Seven presets, each a whole breadboard rather than a set of slider positions
- Universal macOS bundle and a Windows x64 DLL
Where it stands
v0.1.1, and honestly early. All 24 checks in tools/verify.sh pass on macOS: ten (Ra, Rb, C) triples from 120 Hz to 34 kHz hold period and duty to within 0.01% of the datasheet formula measured from the edges the yoke sees, with the part extremes of 2.08 µs and 208 s exact against the flip-flop's own clock; the capacitor runs between V5/2 and V5 to within 0.04%, at rest and with pin 5 driven; a channel whose pin 5 has been driven hard for three seconds is back at the datasheet period within 0.000% once the CV is removed or pin 4 is pulsed; the duty goes 26% to 89% while the period holds to 0.000%; 100% of a frame's light lands in four spots, accumulated over one 7.4 Hz beat; a 2 ms coil's fitted time constant is 0.44% out and its trace is at 63.40% one τ after the step; total light varies 0.0103% across a 100:1 range of sweep speed; all seven presets render, all differ, and the first is byte-identical to the defaults; and no name or display string exceeds FFGL's 16 characters. All 82 swept parameters measurably change the picture, with 5 skipped and the reasons given. Render cost on macOS is 0.377 ms/frame at 720p, 0.394 at 1080p and 0.871 at 4K. On 21 September 2026 the x64 DLL was registered, loaded and instantiated in Resolume Arena 7.27.1 on win-lab, listed as SW Astable under idstring AT01 among 24 video sources, instantiated from Arena's Sources tab where it created a clip with the component values reading off in Arena's own inspector, and Arena's preview monitor showed the four dwell dots two square waves put on a yoke. That VM has no GPU — OpenGL came from Mesa llvmpipe — so it has never run on a GPU in Resolume, has never been instantiated in Arena on macOS, and nothing was timed on Windows. Nothing has been checked against a real 555: the model follows the datasheet and the measurements agree with the datasheet, which is internal consistency rather than a claim about a part on a breadboard. Nothing longer than a look was exercised in the host, so whether eighty-seven controls in eleven groups is usable rather than merely present is still open. No real audio has reached it from a host, so Resolume's 64-bin FFT mapping remains an assumption. No OpenFX port and no user guide. Check it in your own rig before trusting it in a show.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead