Stoatworks Labs

Flipdot

An electromagnetic flip-dot sign, for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Flipdot — An electromagnetic flip-dot sign, for Resolume
No screenshot — this one is configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue. A flip-dot sign is a grid of small discs, black on one side and painted fluorescent on the other, each with a magnet in it between the poles of a coil. A pulse one way swings a disc to its colour face, the other way to black, and the disc stays where it is with no power. Flipdot gives every dot of a sign such a disc, points the sign at the clip, and the look of a bus-stop sign changing falls out of that hardware. Nothing is animated by hand.

The driver board scans. It pulses one column at a time (or one row), so a whole-sign change sweeps across at the scan rate, from 4 to 4,000 lines a second, and every disc of a line starts its swing the instant the driver reaches it, timed in double precision rather than to the frame. By default it pulses only the discs whose picture changed; with Refresh All it pulses every disc, and those already on the right face are driven into their stop and shiver.

A swing takes time. A disc is driven from rest by a constant torque, arrives at the far stop at its fastest and rebounds off it a few times; the moment it is edge-on is a thin line, and lit from the side it catches the light as it turns. The sign holds its picture bit for bit with nothing driving it, even across a clip trigger: in Manual the clip can change under the sign and nothing moves until Update Now is pressed. It can also sweep continuously against the live clip, update on an interval, or on an audio onset from the host's spectrum.

Tone is one bit a dot, so the picture is thresholded or dithered at the pitch: a hard threshold, a 4 by 4 Bayer matrix, or Floyd-Steinberg, with Threshold as a tone curve so black stays black. A seeded set of discs is stuck, exactly the fraction asked for, and a few coils are weak and swing late. The sign state lives on the CPU in double and the dither runs there after a read-back of each disc's mean, about 2 ms a frame at 1080p on the largest sign; what that read-back's stall costs inside a Resolume composition is unmeasured.

  • A grid of bistable discs, up to 192 by 108, square or offset rows, yellow, green or white on black
  • A driver that scans a column or a row at a time, 4 to 4,000 lines a second, timed to the double
  • Only Changes, or Refresh All: every disc pulsed and the unchanged ones shiver in their stops
  • Continuous, Interval, Onset (from the host's spectrum) or Manual updates
  • The swing as a constant torque to the stop with damped rebounds; lit from the front or grazing
  • Threshold, Bayer 4x4 or Floyd-Steinberg, one bit a dot
  • Stuck discs and weak coils, seeded and exact
  • Universal macOS bundle and a Windows x64 DLL

Where it stands

v0.1.0, and honestly early. The sign is measured, not asserted, by an offline harness that drives the real plugin class headlessly at two rasters and on Apple's software renderer: after a whole-sign change every disc of line L lands on frame ceil(2.4 L + 6.5) exactly, by column, by row and on Resolume's 499,000,000 ms clock; Only Changes moves exactly the discs whose target differs and Refresh All moves every one; with no update the sign holds bit for bit; exactly round(f x N) discs are stuck; the colour face's width follows the stated swing within 1.1 px against the harness's own integration of the torques; a resize and a regrid keep every disc's side; and loud audio on the first frame fires nothing. Ten negative controls and a one-character mutation of the shipped shader are caught, and all 19 controls change the picture. The onset detector's constants were set on synthetic spectra, not programme material through Resolume's FFT. The CPU sign and dither cost about 2 ms a frame at 1080p on the largest sign on an M4 Max; the read-back they wait on inside a real Resolume composition is unmeasured. It has not yet been loaded into Resolume on macOS. On Windows it has: a build of this source loads, registers and renders in Resolume Arena 7.27.1 on software rendering (win-lab, no GPU), with every parameter as declared and 12 controls shown moving the picture (the seven timing controls cannot act on the gate's still picture). The macOS build is Developer ID-signed and notarised. There is a user guide and a browser demo; no presets and no OpenFX port. Check it in your own rig before trusting it in a show.

Watch it running

Flipdot video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead