Releases: stoatworks-labs/slope
Release list
Slope v0.1.0
A one-bit delta modulator run along the scan line, as an FFGL effect for Resolume Arena and Avenue, shown as SW Slope. Every sample sends one bit: is the picture above or below the decoder's guess? The decoder has only that guess, stepped up or down by one step per bit, and CVSD — continuously variable slope delta — adapts the step: a run of identical bits grows it, alternating bits let it shrink back. Both integrators leak.
Nothing 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 (slope overload). On a flat area the bits alternate and the guess hunts one step either side of the level (granular noise). Adaptation shortens the ramp and lengthens the hunt after it, and no setting removes both. A flipped bit moves only the decoder's guess, by two steps, so the rest of the line is wrong until the leak forgets it. Luma, RGB or Y+C (chroma at half the sample rate); horizontal or vertical scan; Pixels/Sample from 1 to 16; the decoder's own reconstruction filter as a control; Show Bits draws the received bitstream.
On the GPU the serial recurrence is exact: each line is cut into chunks of 32 samples and one draw per chunk carries the state on, so the state at every chunk boundary is the serial one. The spec's windowed restart from a fixed state was rejected on paper — the idle pattern's phase is a memory no leak erases — and the harness carries it as a negative control.
What is verified
By tools/verify.sh on an M4 Max, macOS 26.4.1, on 2026-09-24, at two rasters (320×180 and 1280×720):
- 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 one and four pixels a sample and at every fractional edge position; the staircase is exact.
- A flat field with no leak IS the idle pattern from the lock sample on: period two, one step peak-to-peak, zero error over 2,448–10,112 samples; with a 64-sample leak it converges on ±Δ/(1+β) as stated.
- Every step of an 11-bit run follows the syllabic law to 0.000 of tolerance; a 0.3 edge climbs in 20 samples fixed and 4 adapting, both predicted exactly.
- Over Adaptation Rate 0, 1/8, 1/4, 1/2, 1 the climb shortens 23 → 7 samples and the post-edge energy rises at every step.
- A forced bit error moves the guess 2Δ and fades on β^k: fitted 64.02 and 256.0 samples against 64 and 256.
- Every pixel against a serial double-precision run of the same recurrence: worst 0 in the two exact settings (tolerance 0), 0.01–0.06 of a per-operation float bound in the three with leaks, filter, adaptation, errors, Y+C and a vertical scan.
- A vertical scan is the horizontal one transposed: 0 of 3,686,400 values differ.
- Bits flipped at the stated rate, freshly each frame: 27,616 and 27,627 of 2,764,800 against 27,648 ± 662.
- Nine perturbed coders each fail their check; one character of the shipped GLSL (the comparator's tie) is caught.
- All 12 controls change the picture; the browser demo's four shader copies match the plugin's character for character;
oxbowloads it asSW Slope/SL01/ effect and renders 120 frames. - Render cost at the defaults: 0.60 ms/frame at 720p, 1.21 at 1080p, 2.89 at 4K (macOS figures only).
- Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe, no GPU, 2026-09-24): a CI build of this source loads from Extra Effects, registers as
SW Slope/SL01/ effect, all 18 host controls match the declaration, it renders, all 13 valued controls move the picture and Arena's log stays clean: 9 of the fleet gate's 9 checks. Software rendering says nothing about a GPU or about speed.
Found on footage before the tag: in Y+C every line opened with a green bar, because the chroma coders started at 0 (saturated green); they now start at zero colour difference, and every check still holds.
What is not
- Never loaded into Resolume on macOS. Footage has only been seen through the harness's
--pipe(the release video), never in a host. - Lines are independent, restarting from blanking rather than carrying state through it; the leak rests at mid-grey, so with a short Leak and a small step flat black and white shimmer; Y+C chroma is held between its samples.
- No OpenFX port and no presets. There is a user guide at https://stoatworks-labs.com/software/slope/guide/ and a browser demo at https://slope-demo.stoatworks-labs.com/.
The macOS build is Developer ID-signed and notarised by the release pipeline after publication; if macOS refuses a download, it predates the signing, so download it again. The Windows build is unsigned, so SmartScreen warns once.