Skip to content

Releases: stoatworks-labs/colourunder

Colourunder v0.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 18:19

The first release of Colourunder: VHS's helical-scan colour-under recording, as an FFGL effect for Resolume Arena and Avenue (SW Colourunder, CU01).

The deck records the clip the way VHS does. The chroma is heterodyned down under the FM luma, so colour has about 40 lines of horizontal resolution against luma's 234 at SP and arrives late, right of every edge; noise on that narrow band comes out as horizontal blotches, not grain. A playback phase error turns NTSC's hue, while PAL's alternating V axis and the 1H average turn the same error into a loss of saturation. The heads switch 6.5 lines before vertical sync and tear the last lines of each field; a tracking bar, where the head crosses between two of its own tracks, rests in the vertical interval and wanders up the picture as the error drifts; dropouts are white streaks, or with DOC the line 1H before, repeated; SP, LP and EP; and Generation runs the whole chain again for each copy of a copy. It is not Ferric (no wow, flutter or compander) and not Old Cathode (no composite, so no dot crawl or cross-colour, and no CRT).

Downloads: a universal macOS bundle (Apple silicon and Intel) as a .dmg or .zip, and a Windows x64 installer or .zip. The macOS builds are Developer ID-signed and notarised (signed by the release pipeline minutes after publication; spctl: Notarized Developer ID). The Windows builds are not code-signed, so SmartScreen warns once.

What is measured (offline, tools/verify.sh, at 320x180, 960x540 and 1280x720 and on Apple's software renderer): chroma's half amplitude at 0.50000 MHz on PAL and NTSC and luma's at 3.00 / 2.76 / 2.40 MHz for SP / LP / EP where the raster carries it; the chroma delay, whole-pixel and fractional, to 1e-4 px; the head switch on exactly its stated lines; a 20 degree phase error as 20 degrees of hue on every NTSC line and, on PAL, none, with saturation cos 20; DOC's repair bit for bit the line 1H before; a second generation's chroma response the tape's filter again; the tracking bar on every field line where the geometry puts it, over 20 s of drift, at 60 and 144 fps alike; a resize. Eight negative controls each fail their check, one GLSL mutation is caught, and all 10 controls change the picture.

In Resolume Arena, on Windows: a build of this source loads, registers and renders in Resolume Arena 7.27.1 on software rendering (win-lab, Mesa llvmpipe, no GPU), with all 16 host controls matching what the plugin declares, in the fleet's Arena gate (9 of 9 checks). The tape noise and dropouts change every frame, so the picture never stands still: Opacity, Mix, Generation and Chroma Delay read as moving it, and the other seven came back inconclusive against that noise floor rather than dead. Software rendering says nothing about a GPU or about speed.

What is assumed, or unconfirmed. The chroma bandwidth is unconfirmed and disputed: a patent and the spec give about 500 kHz (what this uses, 39 lines), Wikipedia 300 kHz (23 lines). The LP luma figure (2.76 MHz) has one source and the EP figure (2.4 MHz) none. The noise levels, the tracking geometry, the head-switch step and the AFC recovery are chosen. The filters are Gaussian with a pure delay, not a real deck's; there is no composite between generations, no pre-emphasis clipping and no azimuth crosstalk.

Not done. Never loaded into Resolume on macOS; never seen on camera footage; no presets and no OpenFX port.