Stoatworks Labs

(re)gauss

CRT interference and degaussing for Resolume

Releasedv0.1.5Plugin & ModuleC++ / GLSL
(re)gauss — CRT interference and degaussing for Resolume
Half a second into a degauss, rendered by the plugin's own offline harness in a headless GL context — not a Resolume screen capture. The picture is dimmed and swollen because the coil has pulled the high tension down, and the trails on the left are phosphor persistence following the beam where the field dragged it.

What it does

An FFGL effect for Resolume Arena and Avenue. A colour CRT paints its picture by steering three electron beams with a magnetic field; put another magnetic field anywhere near it and the beams go somewhere else. That is the whole plugin.

It models one vector field over the tube's face and reads it once per electron gun, and the three faults everybody recognises fall out of that rather than being drawn. The picture leaning is the field's strength. The coloured fringes on every edge are its gradient — the three cathodes sit in different places, so their beams fly different paths and see different fields, which is why a fridge magnet on the glass fringes savagely and the Earth's field does not fringe at all. The wrong colours are the field measured in shadow-mask pitches: displace a beam by one whole phosphor width and the gun meant for the red stripe lands squarely on the green one, which is why a magnetised corner goes green rather than merely dim.

The Degauss button is not an animation played over the top. It fires a decaying alternating field — a real automatic degausser is a coil in series with a thermistor, which is why it dies away over a second or two — and the mask's own magnetisation is walked down by the same envelope. So pressing it genuinely clears what has built up, the picture dims and swells while the coil loads the high-tension supply, and the set is clean until it magnetises again. Stain, degauss, clean, stain: that loop is what makes it a performance tool rather than a filter. It can also fire itself on an interval, or on the beat or bar of Resolume's transport.

Audio drives the same field rather than getting an effect of its own, because the default layout is an unshielded speaker beside the set and a speaker's stray field IS the audio signal — the voice coil current is the music and the magnet assembly leaks it. The band control is worded as which driver in the cabinet is leaking. One consequence is honest rather than convenient: degaussing does not stop an audio-driven stain, because the coil clears what the mask stored and does nothing about the speaker still playing.

There is an Interference Only mode that applies the magnet and the coil with no television of its own, for layering over Old Cathode or over real CRT footage — two shadow masks in a chain is a moiré generator and two sets of curvature is a fisheye. Also builds as an OpenFX plugin for DaVinci Resolve, Vegas Pro, Nuke and Natron.

  • One magnetic field, read once per gun — geometry error, convergence error and purity error are consequences of it, never drawn
  • Five magnet layouts, from a speaker beside the set to a fridge magnet on the corner to the Earth's own field
  • A Degauss button that clears real accumulated state, with the coil's brightness sag and the picture swelling as the high tension drops
  • Fires itself on an interval, or on Resolume's beat or bar
  • Audio reactive: the speaker's field is the music, with woofer, mid and tweeter bands and an optional coil trigger on a transient
  • Four shadow-mask patterns, and the mask decides how a landing error becomes a colour error — an aperture grille shrugs off a vertical error that stains a delta mask
  • Interference Only mode for stacking on Old Cathode or on real CRT footage
  • Scanlines with a chosen line count, phosphor persistence, halation, curvature, perspective and a bezel
  • Eight factory presets, from Speaker Beside It to Degauss on the Bar
  • Universal macOS bundle, a Windows x64 DLL, and an OpenFX build for macOS, Windows and Linux

Where it stands

Released as v0.1.4; the point release changed nothing but the Windows installer, which no longer touches the system PATH — the earlier one could overwrite it. It loads into Resolume Arena and renders there, and the Degauss button behaves — Resolume draws it as a button and sends one press per click, so the coil fires once rather than twice or continuously. Everything else is verified offline, and verified properly: the field the shader evaluates is compared against the C++ it is supposed to mirror, through a probe assembled from the same strings the effect itself uses, and agrees to under one part in a million across all five layouts. The purity model is proved to be the identity at zero field, to rotate the colours cleanly at exactly one phosphor, to conserve light, and to produce no vertical colour error on an aperture grille. The degauss coil is measured: it peaks when fired, is down to one per cent after exactly the duration on the label, never rises, and walks the magnetisation from full to nine per cent and back. All forty controls are swept and shown to change the picture, and the four shadow-mask gains are measured rather than derived. Still open: it has not been run in a live show; Beat and Bar assume Resolume's transport and that has not been tried against real music; the audio reader has only ever seen the harness's synthetic spectrum, never Resolume's own FFT; and the OpenFX build has never been loaded into Resolve. The OpenFX build ships for Linux and is proven to load there — a Rocky 8 container dlopens the shipped bundle in CI and calls the two entry points a host calls first. The FFGL plugin is macOS and Windows only, because Resolume is.

Watch it running

(re)gauss video thumbnail

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