(re)gauss
A magnet by a CRT, plus a degauss button, for Resolume

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's the plugin.
It models one vector field over the face of the tube and reads it once per electron gun, and the three faults everyone recognises come out of that. None of them is 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 through different fields, which is why a fridge magnet on the glass fringes horribly and the Earth's field doesn't fringe at all. The wrong colours are the field measured in shadow-mask pitches. Shift 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 just dim.
The Degauss button fires a decaying alternating field, the way the real thing does. 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 gets walked down by the same envelope. So pressing it clears whatever's built up, the picture dims and swells while the coil loads the high-tension supply, and the set stays clean until it magnetises again. Stain, degauss, clean, stain: that loop is what makes it worth playing live. It can also fire itself on an interval, or on the beat or bar of Resolume's transport.
Audio drives the same field instead of getting an effect of its own, because the default layout is an unshielded speaker next to 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 inconvenient but true: degaussing doesn't stop an audio-driven stain, because the coil clears what the mask stored and can't do anything about the speaker that's still playing.
Interference Only mode applies the magnet and the coil without a television of its own, for layering over Old Cathode or over real CRT footage, since two shadow masks in a row make a moiré generator and two lots of curvature make a fisheye. It 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 at v0.1.7. The last two point releases changed nothing in the Resolume picture: v0.1.6 put SW in front of its name in Resolume's browser, and v0.1.7 fixed the OpenFX build on Resolve's Fusion page, where every render used to fail. 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 checked offline: the field the shader works out matches the C++ it's meant to mirror to under one part in a million across all five layouts; the purity model does nothing at zero field, rotates the colours cleanly at exactly one phosphor, conserves light and gives no vertical colour error on an aperture grille; the degauss coil peaks when fired, is down to one per cent after the duration on the label and never rises; all forty controls change the picture; and the four shadow-mask gains are measured rather than derived. Still open: it hasn't been run in a live show, Beat and Bar assume Resolume's transport and haven't been tried against real music, the audio reader has only ever seen the harness's synthetic spectrum and never Resolume's own FFT, and the OpenFX build has only been run on Resolve's Fusion page (Resolve Studio 21.1, macOS), never on Resolve's other pages or in Nuke, Natron or Vegas. 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
Nothing loads from YouTube until you press play.Watch it there instead