Repository navigation
Releases: stoatworks-labs/gauge
Release list
v0.1.0
The first release of Gauge: the film strip itself, as two FFGL plugins for Resolume Arena and Avenue. SW Gauge (GU01, an effect) prints your clip onto 35 mm, 16 mm or Super 8, and SW Gauge Leader (GU02, a source) runs the countdown on the same film. One frame fills the screen or a strip of film runs across it, with an anamorphic squeeze, an optical track that wiggles with the music, a countdown and a sync flash.
The one idea: a film strip is a standard. Every gauge's holes, pitch, apertures and soundtrack areas were published, mostly in inches, by people who cared a great deal about thousandths of them. So the strip's built in film millimetres from their figures, a camera looks at it, and each frame on it is exposed once and keeps that picture as it travels, which makes a moving strip a contact strip of the clip's recent past. Eight formats, from 35 mm Academy and Scope to Super 8. There's no grain or projector in it: rebate and gate do those, and Gauge sits happily in front of either.
Downloads: universal macOS bundles (Apple silicon and Intel) as a .dmg or a .zip, and a Windows x64 installer (-setup.exe) or a .zip. Every download carries both plugins: Gauge.bundle and Gauge Leader.bundle on macOS, Gauge.dll and Gauge Leader.dll on Windows. The fleet's signing agent Developer ID-signs and notarises the macOS build after it's published, so if macOS refuses one, it predates the signing: download it again. The Windows build isn't signed, so SmartScreen warns once.
What is measured (offline, by tools/verify.sh: a harness that drives the real plugin classes headless on an M4 Max under macOS 26.4.1, at 320×180 and 1280×720):
- Holes. All eight formats. 35 mm: 2.7940 × 1.9812 mm, 2.0100 from the edge, 4.7500 apart, four to a 19.0000 mm frame (eight to 38.0000 on the still roll). 16 mm: 1.8290 × 1.2700, 0.9000, 7.6200, one a frame. Super 8: 0.9140 × 1.1430, 0.5100, 4.2340, one a frame. Each within 0.005 mm of a separate table of the published figures.
- Pictures and frame lines. Every picture to the same tolerance; frame lines of 2.998 mm (Academy), 0.407 (Scope), 0.331 (Full), 2.000 (Still), 0.127 (16 mm), 0.210 (Super 16) and 0.014 (Super 8).
- The squeeze. A disc that's round as seen reads back 0.50002 as wide as it's tall through Scope's 2×, and 1/1.33, 1/1.5 and 1/2 on Academy, Super 16, Super 8 and the still roll.
- Held frames. Every frame on a strip moving at 6 fps holds the clip from the host frame it came into view on, and in Cell the frame above the gate holds the last picture before its pull-down. A doubling of the raster leaves them unchanged.
- The countdown. 209 host frames at 24 Hz, none wrong: PICTURE START, each number read back against the face's own digits, the sweep within 0.004 of where it should be, the 2 for one frame, black to frame 191 and the clip at frame 192. At Rate Beat (125 BPM, Start On Bar) PICTURE START lands on the third bar and the clip on the fifth, to the frame.
- The flash. A press flashes one film frame, white on exactly the two host frames it spans at 60 Hz. Auto Flash on Beat whitens the 21 host frames the beats predict over four seconds.
- The track. One FFT bin is a sine at 1.1333 cycles a millimetre, its frequency at 24 fps, residual 1.5e-6. The 2 carries its 1 kHz pop.
- The checks can fail. Ten models broken on purpose each fail their check, a one-character change to the shipped GLSL is caught by three of them, and every control but the Audio input (50 of the 51 declared) changes the picture.
Windows, in Resolume Arena 7.27.1 (the fleet's Windows machine: software rendering through Mesa llvmpipe, no GPU and no sound device): the x64 build loads, registers and renders, and passed all 15 of the fleet's Arena checks that can run there (the audio one is skipped). Every control is as declared, by name, order, type, range and default. All 24 of the effect's controls that can act without sound changed the picture (seven of them with another control set first), and so did 20 of the leader's 22 in one run and 17 in a second, the rest too close to call against a countdown that never sits still (Edge Print and Shutter in both runs); none read dead. Arena's log had nothing to complain about. The Audio input and Track Level couldn't be tried without a sound card, and nobody has looked at its panel there. Software rendering says nothing about a GPU or about speed.
What is assumed, or unconfirmed. It's never been loaded into Resolume on macOS. The fleet's own test host, oxbow, loads both bundles there and renders 120 frames through each. Gauge's panel in Resolume, Resolume's audio and Resolume's beat driving Start On and Rate Beat are untried on a Mac. Resolume's 64 FFT bins are taken to run evenly from 0 to 22 kHz, which nobody has measured; it only sets how finely the track wiggles. I couldn't find drawings for the DTS, Dolby Digital and SDDS placements or the 16 mm optical track, so those are placed by eye. A real 35 mm print carries its sound about 21 frames ahead of the picture; this one prints it level, because the clip's next second hasn't happened yet. The countdown's greys and face are mine. And it's only been seen on a test card and Resolume's bundled demo clips, never on camera footage or a film scan.
Cost: on an M4 Max, on a GPU shared with other work, 0.08 ms a frame at 720p, 0.09 at 1080p and 0.36 at 4K on the defaults; a strip at 24 fps with a 360° shutter takes 0.12, 0.21 and 0.42. The held frames cost memory instead: up to 40 megapixels of 8-bit RGBA (160 MB). Nothing's been timed in Resolume.
Photosensitivity. Auto Flash on Beat flashes a whole film frame white once a beat: 2 Hz at 120 BPM, and 3 Hz from 180 BPM up, inside the band broadcast flash guidelines restrict.
Not done. No presets, no browser demo and no OpenFX port.
- User guide: https://stoatworks-labs.com/software/gauge/guide/
- Project page: https://stoatworks-labs.com/software/gauge/