Stoatworks Labs

Flipdot

An electromagnetic flip-dot sign, for Resolume

Betav0.2.0Plugin & ModuleC++ / GLSL
Flipdot — An electromagnetic flip-dot sign, for Resolume
Flipdot

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 sitting between the poles of a coil. A pulse one way swings a disc to its colour face, the other way back to black, and the disc stays where it is with the power off. Flipdot gives every dot of the sign one of those discs and points the sign at your clip, and the look of a bus-stop sign changing comes 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, anywhere from 4 to 4,000 lines a second, and every disc in a line starts its swing the instant the driver reaches it, timed in double precision instead of rounded to the frame. By default it only pulses the discs whose picture changed. With Refresh All it pulses every disc, and the ones already showing the right face get driven into their stop and shiver.

A swing takes time. A disc is driven from rest by a constant torque, hits the far stop at its fastest and bounces off it a few times. Edge-on it's 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 underneath and nothing moves until you press Update Now. It can also sweep continuously against the live clip, update on an interval, or update on an audio onset from the host's spectrum.

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

  • 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 early days. It hasn't been loaded into Resolume on macOS yet. On Windows it has: a build loads, registers and renders in Resolume Arena 7.27.1 on software rendering (no GPU), with every parameter as declared and 12 controls seen moving the picture (the seven timing controls can't do anything to the check's still picture). An offline harness driving the real plugin checks the rest: after a whole-sign change every disc of each line lands on exactly the frame the scan says it should, by column, by row and on Resolume's 499,000,000 ms clock; Only Changes moves exactly the discs that differ and Refresh All moves every one; with no update the sign holds bit for bit; exactly the right number of discs are stuck; the swing matches the harness's own integration of the torques within 1.1 px; a resize or a regrid leaves every disc on the face it was showing; and loud audio on the first frame fires nothing. It catches ten models that are wrong on purpose and a one-character sabotage of its own shader, 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, but the read-back they wait on inside a real Resolume composition hasn't been measured. The macOS build is signed and notarised. There's a user guide and a browser demo, but no presets and no OpenFX port. Try it in your own rig before you trust it in a show.

Watch it running

Flipdot video thumbnail

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