Stoatworks Labs

Cadence

Interlace, pulldown and bad deinterlacing for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Cadence — Interlace, pulldown and bad deinterlacing for Resolume
No screenshot. This one's configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue. A television picture is two fields 1/50 or 1/60 s apart, each carrying alternate lines. Cadence treats the clip that way, with one rule (field k carries the source frame current at the middle of its own field period), then puts a film cadence in front of it and shows the result on a progressive screen through a deinterlacer of your choosing.

Everything you'd recognise comes out of that, and none of it is drawn. Combing, because a moving object's two fields are v · T_field apart and a weave puts it in two places at once. Bob bounce, because line doubling has to invent the missing rows, and the invention lands one row lower on one field than the other, so static fine detail jumps a line every field. Ghosting, because averaging two fields of a moving object gives you two objects at half strength. The adaptive mode's mistakes, with a threshold too high so combing leaks, or too low so detail goes soft. 3:2 judder, because 24 frames can't be laid evenly into 60 fields. A mis-lock, because an edit landing mid-cycle leaves a naive inverse telecine weaving the wrong pair until it re-locks. And the stutter of believing the wrong field came first: two steps forward, one back.

There's no table of cadences anywhere in the source. 2:3, 2:2 and one-field-per-frame are the same equation at different rates, and the harness reads the 2:3 pattern back out of the rendered picture rather than comparing it with a second copy of the rule.

Two controls are worth knowing about. Swap Field Order does nothing under Weave, and that's correct: a weave uses both fields and doesn't care which came first, so it only shows up once a mode displays one field at a time. And Lock Time decides whether the inverse telecine re-locks after an edit at all. Too short and it chases every break, too long and it never settles and sits on whatever it locked onto first. Show Decision puts the adaptive mode's per-pixel weave-or-bob choice on screen, which is the only reliable way to set its threshold.

Display → Fields shows one field on its own lines with the rest black, which is what a CRT actually shows in one field period. Cadence Break puts an edit in every Break Interval, or on an audio onset, which is what a real inverse telecine has to survive.

  • One field rule underneath everything: field k carries the source frame current at the middle of its own field period
  • Split, Telecine and Cadence Break sources — 2:3, 2:2 and one-field-per-frame from the same equation at different rates
  • Six deinterlacers: Weave, Bob, Bob Linear, Blend, motion-adaptive, and Inverse Telecine
  • A per-pixel adaptive decision with a Show Decision view for setting its threshold
  • Inverse telecine with a Lock Time that decides whether it re-locks after an edit at all
  • Cadence breaks on an interval or on an audio onset, which is what a real inverse telecine has to survive
  • Fields display: one field on its own lines, the rest black — what a CRT shows in one field period
  • Field order, swap, and the stutter that believing the wrong one gives
  • Universal macOS bundle and a Windows x64 DLL

Where it stands

v0.1.0, and early days. On 21 September 2026 the x64 DLL was registered, loaded and instantiated in Resolume Arena 7.27.1 on Windows: listed among 112 video effects under idstring CD01, applied from Arena's own effects browser, shaders compiled, inspector drawn, and the diag log clean of WARN, ERROR and FAIL. That machine has no GPU (OpenGL came from Mesa llvmpipe), so it has never run on a GPU in Resolume. It has never been instantiated in Arena on macOS or installed into Extra Effects, and nothing was timed on Windows. The field arithmetic is measured by an offline harness driving the real plugin class, and tools/verify.sh builds the universal bundle from scratch and runs it in about twelve seconds: a weave combs by exactly v at three speeds with no error, the adaptive mode turns into Bob Linear and Weave at its two extremes and is neither in between, the 2:3 pattern reads back out of the picture as 3 2 3 2, a clean inverse telecine combs no frames once settled and re-locks after cadence breaks the way Lock Time says it should, and all 14 swept controls change the picture. Render cost on macOS is 0.53 ms a frame at 1080p and 2.14 at 4K, or 0.86 and 3.18 in Inverse Telecine. There's been no long session, no composition save and reload and no preset recall in the host, and the audio path has only ever seen a synthetic click train; no real audio reached it in Arena either. No OpenFX port, no user guide and no factory presets. Try it in your own rig before you trust it in a show.

Watch it running

Cadence video thumbnail

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