Splitflap
A departures board that's always running late, for Resolume

What it does
An FFGL effect for Resolume Arena and Avenue. A split-flap unit holds a drum of flaps, each printed with one symbol, and it can only turn forwards, one flap at a time, at the motor's rate. To show a new symbol it has to go through every flap between the one showing and the target. Splitflap gives every cell of a board one of those drums and points the board at the clip, and the look of a departures board changing comes out of that one rule. Nothing is animated by hand.
A change ripples, because each cell needs (target − current) mod N flips and they land at different times. With the drum printed dark to light, a step brighter is one flip and a step darker is N − 1, so a fade-up snaps and a fade-down churns through the whole drum. A moving picture never finishes: the board chases a clip that changes faster than the cells can flip, and a cell mid-flip shows the flaps in between.
The flap in the air is a hinged plate, an inverted pendulum let go three degrees past vertical, which hesitates and then slaps onto the stop, where restitution lets it flutter. It's solved once in double precision on the CPU and drawn from a table, and Flip Time scales gravity so the fall takes one flip time. Its Lambert shading follows its angle, and Light Angle sets where the light's coming from.
The drum can be printed with greys, one of six palettes, or the characters of a message, which the board shows wherever the clip is bright. The board updates continuously, on an interval, on an audio onset, or when you press Update Now. Stagger gives each cell a start delay and Module Width lets a row of cells share one drive. The state is one float texel per cell, so a resize leaves every flap where it was.
- A drum per cell that only turns forward: flips counted from the picture, not animated
- The falling flap as a rigid hinged plate: RK4 in double, restitution at the stop, Lambert shading
- Tones, six palettes, or a typed message on a 45-character drum
- Continuous, interval, onset (from the host's spectrum) or manual updates
- Stagger, module width, split line, gap, cell aspect and a fit-to-frame switch
- State that survives a resize and a regrid mid-flip
- Universal macOS bundle and a Windows x64 DLL
Where it stands
v0.1.0, and early days. It hasn't been loaded into Resolume on macOS yet, and no real audio has reached it in a host: the onset detector's thresholds were set on synthetic spectra. Everything is measured by an offline harness driving the real plugin at two rasters and reading every claim off the rendered picture: every cell of a 32-cell board makes exactly (target − current) mod N flips between two targets; one step brighter settles in one flip time and one step darker in N − 1; a still input lands on the nearest flap within the stated bound and then holds still to the bit; the flap in the air follows a rigid-body solution the harness works out itself, to within half a pixel, and lands on the stated frame; a resize and a regrid mid-flip keep every flap; and loud audio on frame one fires nothing. It catches six models that are wrong on purpose and a one-character change to its own shader, and all 23 controls change the picture. It costs 1.6 ms a frame at 1080p and 4.2 ms at 4K on macOS, on the largest board the controls allow, on a quiet machine. There's a user guide, but no presets and no OpenFX port. 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