Stoatworks Labs

Astable

Six 555 timers on a television, for Resolume

Betav0.1.1Plugin & ModuleC++ / GLSL
Astable — Six 555 timers on a television, for Resolume
No screenshot. This one's configuration inside another application.

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 gets fed. The renderer puts down a fixed amount of energy per sample interval and spreads it over the distance the beam covered, so brightness following dwell time is just what equal energy per unit time means, rather than something bolted on afterwards.

Everything follows from that, and nobody added any of it as a feature. Two square waves into X and Y give four dots, because the beam sits at a rail, jumps to the next in a single interval and sits again, so 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 where the beam is slowest. Take the capacitors instead of the outputs and you get 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's phase-locked, so two channels a capacitor's tolerance apart beat at a few hertz and wander through every phase relationship. That crawl is most of the charm, and it's also why the four dots take a full beat period to all turn up.

The controls are parts, not sliders. Resistors run 1 kΩ–1 MΩ and capacitors 1 nF–100 µF, as a decade plus a fine multiplier, so a value reads like a real part: 100 nF × 1.01 is a 100 nF capacitor that's 1% high, which is what two parts out of the same bag are. The panel shows proper units too: 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 alone.

The tube's 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 left in, 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, so the sensible way in is to start from a preset. Each of the seven is a whole breadboard rather than a set of slider positions.

Astable is one half of a pair with vectrix, which credits the same source. vectrix is an oscillator and a pedalboard into a lab scope, Astable is six 555s on a breadboard into a television with resistors and capacitors for controls, and it borrows 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 this for real with actual 555s and an actual 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 early days. All 24 checks in tools/verify.sh pass on macOS. In short: ten timer setups from 120 Hz to 34 kHz hold their period and duty within 0.01% of the datasheet formula, the capacitor stays between its thresholds, pin 5 modulation and a pin 4 reset both come back to the datasheet period, the four-dot figure puts all its light in four spots, the coil's time constant and the beam's total light behave, and all seven presets render and differ. 82 swept parameters change the picture, with 5 skipped and the reasons given. Render cost on macOS is 0.377 ms a 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: it's listed as SW Astable under idstring AT01, it made a clip from Arena's Sources tab with the component values showing in Arena's own inspector, and the 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's never run on a GPU in Resolume, it's never been instantiated in Arena on macOS, and nothing was timed on Windows. Nothing's been checked against a real 555 either. The model follows the datasheet and the measurements agree with the datasheet, which shows it's consistent with itself and says nothing about a part on a breadboard. Nobody's done more than look at it in the host, so whether eighty-seven controls in eleven groups are usable or just present is still open. No real audio has reached it from a host, so how it reads Resolume's 64-bin FFT is an assumption. No OpenFX port and no user guide. Try it in your own rig before you trust it in a show.

Watch it running

Astable video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead