Slope
A one-bit delta modulator, for Resolume

What it does
An FFGL effect for Resolume Arena and Avenue. A delta modulator sends one bit per sample: is the input above or below my current guess? The decoder has only that same guess, stepped up or down by one step per bit. CVSD, continuously variable slope delta, adapts the step: a run of identical bits means the guess is falling behind, so the step grows; alternating bits mean it is hunting round a flat input, so it shrinks back. Both integrators leak, so a transmission error dies away.
Slope runs that coder along every scan line of the picture, one sample per few pixels, and every artefact falls out of the one rule. None of them is drawn. The guess can climb one step a sample, so a hard edge arrives as a ramp smeared along the scan whose length is the edge's height over the step. On a flat area the bits alternate and the guess hunts one step either side of the level. Adaptation shortens the ramp and lengthens the hunt after it, and no setting removes both.
The channel flips received bits at a rate you set, and a wrong bit moves only the decoder's guess, by two steps, for the rest of the line: streaks that fade rightwards on the integrator's leak. The decoder is the real one, with its own low-pass reconstruction filter as a control, and Show Bits draws the received bitstream itself.
Luma codes brightness and carries the clip's colour through untouched; RGB runs three coders; Y+C codes the colour difference at half the sample rate, as a real system would. Scan runs along the rows or down the columns.
- A CVSD coder per scan line: step size, maximum step, adaptation rate, run length and leak
- Pixels per sample from 1 to 16, horizontal or vertical scan
- Luma, RGB or Y+C at half chroma rate
- Bit errors at a set rate, fresh every frame, fading on the leak
- The decoder's reconstruction filter as a control, and Show Bits
- Exact on the GPU: chunked in scan order, not a windowed approximation
- Universal macOS bundle and a Windows x64 DLL
Where it stands
v0.1.0, and honestly early. The coder is measured, not asserted, by an offline harness that drives the real plugin class headlessly at two rasters: a step edge of 8.5, 13.5 and 27.5 steps climbs in exactly 9, 14 and 28 samples from the predicted sample, at whole- and part-sample edge positions; a flat field's idle pattern is period two and one step peak-to-peak with zero error over thousands of samples; every step of an 11-bit run follows the stated syllabic law; a forced bit error fades on time constants fitted at 64.02 and 256.0 samples against 64 and 256; every pixel matches a serial double-precision run of the same recurrence, with a tolerance of zero in the exact settings; and a vertical scan is the horizontal one transposed, bit for bit. Nine negative controls and a one-character mutation of the shipped shader are caught. All 12 swept controls change the picture. Render cost on macOS at the defaults is 2.89 ms/frame at 4K. It has not yet been loaded into Resolume on macOS. On Windows it has: a build of this source loads, registers and renders in Resolume Arena 7.27.1 on software rendering (win-lab, no GPU), with every parameter as declared and all 13 valued controls moving the picture. Before the tag the first render of real footage found and fixed a green bar at the left of every line in Y+C: the chroma coders now start at zero colour difference. The macOS build is signed and notarised. There is a user guide and a browser demo; no presets and no OpenFX port. Check it in your own rig before trusting it in a show.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead