Splitflap
A split-flap departures board, 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 forward, one flap at a time, at the motor's rate: to show a new symbol it passes through every flap between the one on show and the target. Splitflap gives every cell of a board such a drum, points the board at the clip, and the look of a departures board changing falls out of that one constraint. 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 is never finished: the board chases a clip that changes faster than the cells can flip, and a cell mid-flip shows the drum's intermediate flaps.
The flap in the air is a hinged plate, an inverted pendulum let go three degrees past vertical, which hesitates and then slaps on to the stop, where restitution lets it flutter. It is solved once in double on the CPU and drawn from a table; Flip Time scales gravity so the fall takes one flip time. Its Lambert shading follows its angle, and Light Angle sets where the light is.
The drum can be printed with greys, one of six palettes, or the characters of a message, which the board shows where the clip is bright. The board updates continuously, on an interval, on an audio onset, or when the Update Now button is pressed; 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 keeps 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 honestly early. The board is measured, not asserted, by an offline harness that drives the real plugin class headlessly at two rasters and reads every claim off the rendered picture: between two targets every cell of a 32-cell board makes exactly (target − current) mod N flips, counted as tone changes on its top row; 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 bit-identical; the flap in the air follows a rigid-body solution the harness integrates itself, within half a pixel of a 90-pixel half-cell, and lands on the stated frame; a resize and a regrid mid-flip keep every flap; loud audio on frame one fires nothing. Six negative controls and a one-character mutation of the shipped shader are caught. All 23 controls change the picture. Render cost on macOS is 1.6 ms a frame at 1080p and 4.2 ms at 4K on the largest board the controls allow, on a quiet machine. It has not yet been loaded into Resolume on macOS, and no real audio has reached it in a host: the onset detector's thresholds were set on synthetic spectra. There is a user guide; 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