Stoatworks Labs

Old Cathode

Analogue TV signal path for Resolume

Field provenv0.1.1Plugin & ModuleC++ / GLSL
Old Cathode — Analogue TV signal path for Resolume
Rendered by the plugin's own offline harness, which drives the real plugin class through a headless GL context — not a Resolume screen capture.

What it does

An analogue television signal path for Resolume Arena and Avenue. It encodes the picture onto a colour subcarrier the way a broadcast encoder would have, damages the resulting composite waveform as a single signal, and decodes it again with a synchronous demodulator that has no more information than a real receiver had. Only then does it paint the result onto a phosphor screen with a shadow mask, a beam that defocuses when it is bright, a curved glass face, and a viewer sitting somewhere in particular.

Almost everything you recognise as the CRT look is a consequence of that path rather than something drawn on top. Dot crawl happens because the subcarrier sits inside the luminance band. Cross-colour happens because fine detail near that frequency gets demodulated as if it were colour. Noise added to the composite is un-mixed by the decoder along with everything else, so it arrives as grey grain and coloured speckle in the right proportion without being asked for.

The practical upshot is that the controls interact the way the real thing did. Dropping the chroma bandwidth smears colour sideways and suppresses cross-colour, because in the hardware those were the same filter. Losing signal costs the colour before it costs the picture. Switching from NTSC to PAL changes what the Tint control does, because a PAL decoder averages each line with the one above it and a phase error cancels.

  • Four dot mask patterns — delta shadow mask, aperture grille with its damper wires, slot mask, and a hard RGB stripe
  • NTSC or PAL, from broadcast or three grades of VHS, each with its own bandwidths and colour-under delay
  • Noise, dropouts, multipath ghosting and adjacent-channel interference, all injected before the decoder rather than painted on after it
  • Tracking error, head-switch tear, line jitter, mains hum, vertical hold and interlace
  • A scanning beam that gets fatter where it is brighter, phosphor persistence with per-colour decay, and halation through the glass
  • Screen curvature with overscan, rounded tube corners, true perspective and vignette — the mask lives on the glass, so it foreshortens with the tube
  • Universal macOS bundle and a Windows DLL

Where it stands

Released at v0.1.0. Needs Resolume Arena or Avenue 7.3.1 or newer. It loads in Arena 7.27.0 with all six shader stages compiling in the host, and has been run there on real content rather than only through the offline harness.

Watch it running

Old Cathode video thumbnail

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