Ramdac
Indexed colour and palette cycling, for Resolume

What it does
An FFGL effect for Resolume Arena and Avenue: SW Ramdac. Indexed displays worked by numbers. Every pixel held an index, and a chip, the RAMDAC, turned the index into a colour by looking it up in a table of 16 or fewer. The plugin does the same to your clip: it averages it into cells, gives each cell the index of the nearest palette colour, judged in OKLab so that "nearest" is what the eye would pick, and shows you the table looked up by those indices. Every pixel on screen is one of the palette's colours, always.
The palettes are the machines' own published colours: the Commodore 64 as Pepto measured it, CGA's sixteen and its Mode 4, the ZX Spectrum, the Amstrad CPC's power-on inks, sixteen of the NES's, the Game Boy's four greens, PICO-8, teletext's eight and Workbench 1.3 and 2.0. Or type your own as hex, or let Adaptive choose up to 16 from the clip itself. Six dithers stand in for the colours that aren't there: none, Bayer 2, 4 and 8, blue noise and Knuth's dot diffusion, a GPU error diffusion. Every one depends only on where a pixel is, so a still clip stays still: no crawling, no shimmer.
Because the picture is indices, the table can change on its own. Swap to another palette with a Cut, a Fade that moves each colour along its own path in OKLab, or a Ripple through the table, and the shapes, edges and dither pattern stay exactly where they were. Colour cycling rotates a range of the table the way Mark Ferrari's Deluxe Paint scenes did, so a gradient's bands march and water runs while not one index moves, free-running or on Resolume's beat or bar. Freeze holds the indices and lets the table carry on, and DAC rounds the colours to the 18-bit VGA, 12-bit Amiga or 9-bit grids.
- 13 palettes: Commodore 64, ZX Spectrum, NES, Game Boy, CGA 16, CGA Mode 4, Amstrad CPC, PICO-8, Teletext, Workbench 1.3 and 2.0, Custom hex and Adaptive
- Nearest colour in OKLab, so the choice is the one the eye would make
- Six dithers: None, Bayer 2, 4 and 8, Blue Noise and Dot Diffusion, none of which crawls on a still clip
- Palette swap by Cut, Fade or Ripple, which recolours without moving a single pixel
- Deluxe Paint colour cycling, Forward, Reverse or Ping-Pong, over any range, free or on the beat or bar
- Adaptive: up to 16 colours chosen from the clip, settling at the speed you set
- Pixel Size from 1 to 16, a DAC for 18-, 12- and 9-bit colour, Freeze and Mix
- Universal macOS bundle and a Windows x64 DLL
Where it stands
v0.1.0, and early days. It's measured by an offline harness driving the plugin's own code on an Apple Silicon Mac, at two rasters and on Apple's software renderer: every pixel on screen is one of the table's colours, with no dither each cell is the OKLab-nearest entry with 0 wrong out of 918 827, a palette swap keeps every one of 921 600 indices, colour cycling rotates the table while the picture stays still, and every dither holds still on a still clip bit for bit. It catches eleven models that are wrong on purpose and thirty-five one-character sabotages of its own code, and all 21 controls change the picture. On Windows the release build has run in Resolume Arena on software rendering, twice, with every control as declared and 15 of them changing a still; it hasn't been loaded into Resolume on macOS. There's a user guide and a browser demo, but no presets. Try it in your own rig before you trust it in a show.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead