Stoatworks Labs
Scopes — Video scopes for Resolume
One frame of Resolume's own bundled demo media with an RGB parade overlaid, rendered by the plugin's own offline harness in a headless GL context — not a Resolume screen capture. It is the shipped shader chain driven through the real FFGL entry sequence, which is how the plugin has been exercised so far.

What it does

Four scopes in one FFGL effect for Resolume Arena and Avenue: a waveform with luma and both parades, a vectorscope, a 256-bin histogram, and a picture-assist mode that recolours the picture itself for exposure and focus. A Layout control decides whether the scope replaces the picture or sits over it, so the same effect does for a dedicated monitor layer and for an in-frame confidence display.

Before you trust a reading, it's worth knowing that a scope inside a VJ host never sees a video signal. It sees whatever RGB the engine has in the texture by the time the effect runs, and by then three decisions have already been made and thrown away: which matrix took the clip from Y'CbCr to RGB, whether studio-range levels were expanded, and whether the colour has been multiplied by its alpha.

None of the three is recorded in the pixels, and every one of them changes the reading. A BT.709 clip read as BT.601 throws every vectorscope target about 5.7° off its box. Unexpanded studio levels put reference white at 92 IRE. A clip at half layer opacity reads a stop down. Each one looks like a slightly misadjusted picture rather than a measurement error, which is what makes it dangerous, so all three are explicit settings and none of them is guessed.

Everything the scopes plot, and every line of every graticule they draw, comes from one module. The vectorscope's target boxes are worked out from the matrix the shader is plotting with rather than copied from a picture of a real scope, so choosing a matrix moves the boxes and the trace together, and no combination of settings can make a mismatched signal look correct.

  • Waveform — luma, RGB parade and Y Cb Cr parade, over a −10 to 110 IRE graticule so super-white and sub-black stay visible
  • Vectorscope — target boxes and skin-tone line derived from the selected matrix, 75% or 100% bars, 1× to 8× zoom
  • Histogram — RGB, luma or both across 256 bins, accumulated in 32-bit float so the tallest bins keep counting
  • Picture assist — false colour, zebras and Sobel focus peaking, applied to the picture itself
  • Scope Only or Overlay, with size, position, opacity and a scope background that can go fully transparent
  • Matrix (BT.601 / 709 / 2020), range (full or 16–235) and unpremultiply as explicit settings, never heuristics
  • Universal macOS bundle and a Windows DLL

Where it stands

Built, measured and released as v1.0.6, on the 1.0 line. The three point releases since v1.0.3 changed nothing in the picture: v1.0.4 shipped a Windows installer that no longer touches the system PATH (the earlier one could overwrite it), v1.0.5 gave the effect a proper description in the field Resolume shows, and v1.0.6 reports its name as SW Scopes, so the Stoatworks plugins sit together in Resolume's browser. A scope is handy to test, since what it claims is a number. An offline harness drives the real plugin class against 75% and 100% colour bars in all three matrices, with the expected readings worked out from the same module the shaders use: the waveform lands on each bar's luma to within 0.08 IRE, the vectorscope trace within 1.2 px of each target box, the histogram spikes in the right bin and no other, the false colour agrees with an independent C++ version on every column of a ramp, and all nineteen parameters change the output. It has never once been loaded into Resolume, so whether the input really arrives premultiplied is unconfirmed, and that's the one assumption an offline harness can't test. Performance has never been measured, and the Windows binary is built and shipped but has never been run.

Watch it running

Scopes video thumbnail

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