Abomerration
Chromatic aberration that listens to the music, for Resolume

What it does
Chromatic aberration is a lens failing to bring every wavelength to the same place. Photographers spent a century and a great deal of money getting rid of it. This puts it back, wires it to the music, and then carries on well past anything glass could do.
One idea runs through the whole plugin, and it's why it doesn't look like the usual RGB-offset effect. A lens focuses every wavelength at a slightly different magnification, and the coloured fringe you see is the whole visible spectrum smeared along that path and then added up by the sensor. So this displaces the picture once per wavelength sample and sums the results through spectral weights. The familiar hard red/blue split is the same loop asked for three samples, because the three-sample weight table is the identity, so there's no separate mode or code path for it. That's why one control runs from a cheap 1990s channel offset to a proper prismatic fringe with nothing else changing.
Four geometries decide which way the spectrum gets smeared. Radial is what an uncorrected lens does: nothing on the axis, worst in the corners. Linear is a prism held in front of it, or a three-strip camera slipping out of registration, with no optical centre at all. Tangential rotates each wavelength about the centre instead of pushing it outward, which no lens does. Turbulent takes its direction from a drifting noise field, and it's the abomination the plugin is named after.
The music can drive it four ways, all switched off by default, so dropped on a layer with nothing routed it's an ordinary manual aberration lens and behaves like one. A beat pulse locks to the host's transport on any division from a quarter beat to two bars. An overall level pump follows the mix. A band split sends bass, mid and treble to their own channels, so the picture comes apart along with the music rather than just pumping. And manual channel trims sit on top of the lot. Depth is carved out of the amount rather than added to it, so at full depth silence gives you a clean picture and the beat gives you the whole effect.
Real lateral aberration is invisible in a flat area, because displacing a patch of constant colour gives you back the same patch, so an Edges control weights the dispersion by local contrast, and at zero you get the misregistered-camera look instead. Show Field paints the dispersion over a dimmed picture with four meters along the bottom for bass, mid, treble and beat. A flat area with an enormous displacement looks identical to one with none, and “is it hearing anything at all?” is otherwise impossible to answer inside Resolume.
It's also an OpenFX plugin for DaVinci Resolve, Vegas Pro, Nuke and Natron. The dispersion field, the spectral weight table and every parameter curve come from the same source files in both builds, so a preset can't mean one thing in Resolume and another in Resolve. The reactive controls are left out of the OpenFX build rather than shown doing nothing: OFX has no beat information and no audio input, and a dead control that looks live is worse than one that's missing.
- Four geometries — radial like a real uncorrected lens, linear like a prism, tangential like nothing at all, and a drifting turbulent noise field
- Spectral integration from a hard three-sample RGB split up to a 32-sample prismatic fringe, with the weights normalised so the setting changes quality and never tint
- A beat pulse locked to the host's transport, on any division from a quarter beat to two bars, with a decay from a linear ramp to a click
- Band split driving red, green and blue from bass, mid and treble separately — four routes, including bass-only and treble-only for dense mixes
- Overall level pump, and manual per-channel trims on top of everything
- Edges weights the dispersion by local contrast, so the fringe lands where a real lens would put it
- Show Field paints the displacement magnitude with live bass, mid, treble and beat meters
- Eight factory presets, from Uncorrected Lens to Abomination, driven from one table shared by both builds
- Amount is a fraction of the frame height, so the same setting looks the same at 720p and 4K
- Universal macOS bundle, a Windows x64 DLL, and an OpenFX bundle for macOS, Windows and Linux
Where it stands
Built, measured and released as v0.1.8. v0.1.4 gave the Edges control a name that says what it does inside FFGL's sixteen characters, v0.1.5 only changed the Windows installer, which no longer touches the system PATH (the earlier one could overwrite it), and v0.1.6 keeps a factory preset selected when the host restates its own values and gives the effect a proper description in the field Resolume shows. v0.1.7 only put SW in front of its name in Resolume's browser, and v0.1.8 fixed the OpenFX build on Resolve's Fusion page, where every render used to fail. An offline harness checks what the GPU draws against the C++ dispersion field across all four geometries (worst disagreement 7e-07 of a frame width), each channel's edge against what the controls asked for (better than a pixel), and energy at every setting. The music reaction is checked with no GPU at all, including a milliseconds host and a seconds host giving identical output, which is the trap that would otherwise run the plugin a thousand times too fast in the only host anybody uses it in. All 24 controls change the picture. The testing caught real bugs on the way, including a harness that rendered every frame upside down while three separate numerical checks passed regardless. It's since been loaded into Resolume Arena and confirmed working, which is the one thing none of that testing could tell me. Still open: the OpenFX build has only been run on Resolve's Fusion page, where it renders as a tool (Resolve Studio 21.1, macOS), and never on Resolve's other pages or in Nuke, Natron or Vegas, and the Windows build is made in CI and has never been run. The Linux build is loaded in CI on a stock Rocky 8, but that's a load, not a render. One known limit, measured rather than guessed: at the cheapest prism setting a hard black-to-white edge leaves about 5 of 255 of ripple in the fringe, and more samples buy a sharper picture at the same smoothness rather than less ripple.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead