Stoatworks Labs

5-wire

Long VGA and RGBHV cable runs for Resolume

Releasedv0.1.2Plugin & ModuleC++ / GLSL
5-wire — Long VGA and RGBHV cable runs for Resolume
Two renders of the plugin's own test card, both through the same hundred and one metres of thin coax. The top one has nothing done about it: the fine stripes along the bottom have gone to flat grey because the cable ran out of bandwidth before they did, and every edge trails to the right and only to the right. The bottom one is the same run with the equaliser at the display wound up — the stripes are back, and so is the noise, because the equaliser sits after the point where the noise joined the signal and lifts both together. Rendered by the plugin's offline harness in a headless GL context, not captured from Resolume; the two captions are the only thing added.

What it does

An FFGL effect for Resolume Arena and Avenue. It is not a glitch filter with a cable theme: it is a transmission line, and everything on screen is what happens to a signal on its way down five conductors — red, green, blue, H and V.

Coax loses the SQUARE ROOT of frequency. That is skin effect, it is why the datasheets quote dB per 100 m at a frequency, and it has a closed-form step response — erfc(alpha over two root t) — that is strictly causal with a tail hundreds of pixels long. Three things follow from that one curve and none of them is drawn separately: the picture goes soft, a bright edge smears to the RIGHT and only to the right, and the same response is still going four hundred pixels later, which is what streaking is. A symmetric blur is the commonest way to get this wrong and it reads instantly as "blurred" rather than as "long cable".

Everything else is a consequence of where in the chain a thing joins the signal. A ghost needs a mismatch at BOTH ends — the far end to send the signal back and the amplifier to send it forward again — so a properly back-matched amplifier kills ghosting stone dead on a line nobody terminated, and every bounce lands softer than the last because it has been down the cable two more times. Colour fringes are three conductors of different lengths, which is near zero for five coaxes cut off one drum and tens of nanoseconds for a CAT5 balun, whose pairs are twisted at deliberately different rates. Crosstalk couples a neighbour's rate of change rather than its level, so it outlines edges and never tints flat colour. Hum is on the sync conductor as well as the picture, so the bar bends the lines it crosses. And line jitter and a rolling frame are not controls at all — they are what is left when the receiver runs out of sync margin.

The argument the plugin exists to make is that Pre-Emphasis and Cable EQ are the same filter at opposite ends of the cable, and are not the same control. Both invert the loss and both bring the picture back. But the noise, the reflections and the crosstalk all join in between: the equaliser at the display is after them and lifts them with the picture, so a hundred metres equalised at the receiver is sharp AND grainy, while the same correction at the amplifier is sharp and clean and pays in headroom instead, because pre-emphasis overshoots every edge into the rail. That is why a real distribution amplifier offers both, and the plugin ships the same run as three presets so the difference is one click apart.

The equaliser is calibrated in METRES, exactly like the knob on a real cable equaliser, so setting it for the wrong length gives the wrong answer in the recognisable way. Five cable types, from proper RGBHV coax on BNC to a ribbon loom with no shield worth the name. Ten factory presets. Universal macOS bundle and a Windows x64 DLL.

  • One cable, one filter: the soft picture and the streak behind a caption are the same square-root-of-frequency response, not two effects
  • Strictly one-sided — edges smear to the right and only to the right, which is the difference between a long cable and a blur
  • Ghosts derived from the impedance at both ends, landing at twice the cable's transit time and getting softer every bounce
  • Pre-Emphasis at the amplifier and Cable EQ at the receiver: the same filter, and only one of them lifts the noise
  • An equaliser calibrated in metres, so under- and over-equalising both look like what they are
  • Five cable types — RGBHV coax, a moulded VGA lead, mini-coax, a CAT5 balun and a ribbon loom — each with its own loss, velocity, conductor skew and screening
  • Per-conductor skew that fringes vertical edges, and crosstalk that outlines them without tinting flat colour
  • Mains hum that bends the lines it crosses, RF ingress as a herringbone, and a noise floor the equaliser has to lift
  • Sync on its own two conductors: line jitter and a rolling frame emerge from a thin sync margin rather than from sliders
  • A failing DC clamp, and the sampling phase every VGA monitor has an auto-adjust button for
  • Pixel Clock, because the same 30 m lead is invisible at 640x480 and a plain ghost at 1600x1200
  • Ten factory presets, including the same hundred metres of cable with nothing done, fixed at the display, and fixed at the amplifier

Where it stands

Released as v0.1.2; the point release changed nothing but the Windows installer, which no longer touches the system PATH — the earlier one could overwrite it. The cable model is verified numerically by an offline harness that drives the real plugin class in a headless GL context, and the checks are the useful kind rather than smoke tests: the response has unit gain at DC to one part in a hundred thousand, is strictly one-sided, never rises with frequency, and its measured minus-three-decibel point tracks the analytic square-root law across the whole usable range. The equaliser is shown to be the inverse of that response, exactly flat when off, monotonically worse as the run gets longer, and — the check that matters most — never softer than the cable on its own, which an earlier frequency-domain design silently was. End to end, one bright column through the whole six-pass chain comes out equal to the C++ kernel to within a thousandth of a level on four different cables and delivers ninety-nine per cent of the light that went in. The reflections land within two pixels of twice the transit time at three lengths, and a properly back-matched amplifier produces none at all against an open far end. All thirty controls are swept and shown to change the picture, and all ten presets survive a host that ignores parameter value events, which is the host Resolume actually is. Still open, and worth knowing before a show: it has never been loaded into Resolume or any other FFGL host, so the parameter declarations and the About block are unproven in a real inspector; nothing has been built for Windows locally, only in CI; there is no OpenFX build; and while the loss figures, velocity factors and CAT5 skew are the manufacturers' own, the crosstalk, pickup and sync constants are calibrated by eye rather than measured against a real run.

Watch it running

5-wire video thumbnail

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