Ferric
Your picture on a wobbly cassette deck, for Resolume

What it does
Ferric treats the video signal the way a cassette deck treats an audio one. A transport that's never quite steady drags the picture past the head so it leans, waves and tears in time. The oxide adds its own hiss and loses contact here and there. And the consumer sliding-band noise reduction that hid one under the other is in there too, with both ends of it exposed, which is where the interesting damage lives.
The first of the two ideas behind it is that wow and flutter is a timing error, and a picture read off tape is a signal with a clock. Every pixel gets a tape time, how far into the recording the head was when that pixel came off the oxide, and one error signal is evaluated there. That's all. Wow is slower than a picture, so the whole frame leans. Flutter fits a cycle or two into a picture, so it draws a wave down the image, and the wave scrolls between frames because the clock moved. Scrape flutter fits many cycles in and turns into fine horizontal banding. Lines stretch rather than just shifting, because tape time varies along the line as well as down the picture. None of that is coded separately. It's all what one substitution does.
The second is that noise reduction is a round trip through a medium rather than a filter. Encoding boosts quiet high-frequency detail before the tape so the tape's own noise floor sits underneath it, and decoding cuts it by the same amount afterwards, taking the hiss down with it. Nothing gets removed. So the chain here is the proper chain in the proper order, encode, tape, decode, and every artefact anyone recognises from the format is the two ends disagreeing. Decode something that was never encoded and it goes dull and starts breathing. Encode with nothing decoding and it goes hard and glassy. Mistrack the levels and the round trip cancels at some brightnesses and not others, so detail pumps as the shot changes, like a tape recorded on one deck and played back on another.
The processing is one-dimensional and horizontal, because tape has one frequency axis and it lands on the picture as the scan direction. A vertical edge is a high frequency to a tape machine. A horizontal edge isn't a frequency at all, it's the next line. So vertical edges pump under the compander and horizontal ones sit perfectly still (measured at 9.996 against 0.000), and that lopsidedness is part of the effect, not a shortcut.
There's one fiction in it, and it's a control you can see rather than something hidden. A real 625-line picture scans at 15625 lines a second, and at that rate audio-band flutter is constant across the whole frame: no vertical structure, no travelling wave, no tearing at all. Audio wow and flutter and video time-base error are different things. So Ferric does what it says on the tin: it runs a picture through a cassette transport, and a cassette transport doesn't scan at 15625 lines a second. Tape Speed runs from about two milliseconds of tape per picture, where the frame is rigid and only wow survives, to about two seconds, where a single flutter cycle covers a few scanlines and the image comes apart into ribbons.
It's also an OpenFX plugin for DaVinci Resolve, Vegas Pro, Nuke and Natron, with the same transport and compander code. The Reaction group (audio and tempo) is Resolume-only, and so are the two presets built on it.
- Wow, flutter, scrape flutter and a slow drift, evaluated as one time-base error at each pixel's own tape time — so the flutter wave scrolls down the picture between frames rather than standing still
- Four transports — Cassette, Reel to Reel, Video Head and Failing — which multiply your controls rather than replacing them, and set which components dominate
- Tape Speed, from a rigid frame to the picture coming apart into ribbons, because it decides how much of the error signal fits inside one picture
- Hiss generated along the scan so it reads as horizontal video grain rather than film speckle, plus dropouts and head wear
- Type B and Type C sliding-band noise reduction as a full round trip — encode, tape, decode — with Decode Only, Encode Only and a Mistracking control for the artifacts the real systems are known for
- A beat that puts a sharp excursion straight into the error signal, so the transport lurches on the grid instead of merely modulating; plus level and band drives, every one off by default
- Show Trace: the error signal plotted against position down the picture, with audio meters and a seven-segment readout of weighted wow and flutter measured through a DIN 45507 curve
- Nine factory presets, seven of which leave every reactive depth at zero so they behave with nothing routed
Where it stands
Released as v0.2.0, which adds the OpenFX build. v0.1.1 only changed the Windows installer, which no longer touches the system PATH (the earlier one could overwrite it), and v0.1.2 gave the effect a proper description in the field Resolume shows. It's been loaded and rendered in Resolume Arena 7.27.1 on macOS and on Windows, the latter on Mesa llvmpipe, which is a different GLSL compiler and the reason for doing it. Offline, twenty-three checks pass from a clean universal build: the GPU's error signal matches the C++ over 6400 points (worst disagreement 1.9e-05, with a detuned transport as a control that has to fail), a neutral Ferric returns the picture bit for bit, encode into decode cancels to 1.31 rms, the compander moves vertical detail by 9.996 rms and horizontal detail by 0.000, and a milliseconds host and a seconds host render identical frames. Still open: no operator has dragged a slider, because every control was driven over Resolume's REST API. No NVIDIA or AMD driver has run it, and none of it has been through a show. The OpenFX build has been checked in DaVinci Resolve Studio 21.1 on macOS; Vegas, Nuke and Natron are untried.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead