Skip to content

Releases

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 10:43

The first release of Graticule: test patterns and LED tile maps, for Resolume Arena and Avenue, as an FFGL source (SW Graticule, GT01). It's the live sibling of Test Card: the same patterns, drawn at whatever raster Resolume hands it, with a burn-in, a moving marker and a frame counter that a PNG can't have.

The one idea: every line is a whole number of pixels and nothing is anti-aliased. A 1-pixel line is one column of pixels, the Pixel Check's checkerboard is one on, one off, and the alignment chart's border sits on the very edge. If any of it reaches the wall soft, grey or doubled, something between Resolume and the LEDs is scaling, and the pattern has just told you so. Eight patterns: SMPTE RP 219 (laid out from a measurement of ffmpeg's smptehdbars, at full range 0–255 or legal 16–235), 75% and 100% bars for strips too narrow for RP 219's rows, Grid by pitch or by divisions, an Alignment chart with corner brackets, safe areas and single-pixel patches, LED Tiles that take a real wall's cabinet and module sizes and letter every cabinet, Solid, Greyscale and Pixel Check. Thirteen presets cover the usual jobs, from bars at each range to 500 mm cabinets at P2.6, P2.9 and P3.9 and a latency sweep. Turn on the Frame Counter, film the wall and the monitor together, and the difference between the two counters is the latency, in frames.

Downloads: a universal macOS bundle (Apple silicon and Intel) as a .dmg or .zip, and a Windows x64 installer (-setup.exe) or .zip. Every download carries the one source: Graticule.bundle on macOS, Graticule.dll on Windows. The macOS build is Developer ID-signed and notarised by the fleet's signing agent once the release is published. The Windows build isn't signed, so SmartScreen warns once.

What is measured (offline, by tools/verify.sh on an Apple M4 Max under macOS 26.4.1, driving the plugin's own class in a headless GL context and reading the pixels back):

  • The bars. gttest --bars lays RP 219 out at 1920×1080, 3840×2160, 1280×720 and 2048×1080 against the run-length measurement of ffmpeg's smptehdbars at the same sizes: every row boundary the same, every column within 8 pixels, every band the measured colour or the ramp, no gap or overlap (61 checks). gttest --colours: the fifteen colours, computed through Rec. 709, land on the measured code values, and the −2% pluge clips to 0 at full range and survives as 12 at legal (24 checks).
  • The pixels. gttest --pixels makes 61 checks on specific pixels of every pattern: a 1-pixel line is one pixel wide, heavy lines three, cabinet borders, module lines and an offset origin where the arithmetic says, the wedge's code values, the checker, the marker, the plate, the burn-in and a frame counter that changes every frame.
  • Every control does something. All 69 controls, swept at both ends of their range on the pattern that reads them, change the picture; the sweep checks itself with a control that must read dead. Preset row one is the constructor's defaults.
  • In a host. The bundle is universal, and oxbow sees SW Graticule, GT01, a source, and renders 120 frames through it. gttest --pipe renders the video's frames, byte-identical run to run.

Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe: software rendering, no GPU): CI's x64 build of this release's plugin source loads, registers as a source and draws at the composition's own 1280×720, with all 75 parameters as declared (the About block included) and Arena's log clean, and it passed the fleet's Arena checks. 68 of the 69 controls measurably changed the picture there, and none read dead. The 69th, Edge Border, is a 1-pixel line on the outermost pixels, and the check watches Arena's 320×240 thumbnail of the composition, which never samples them. The first run read Module Width and Module Height as dead for the same reason (every module line fell between the pixels the thumbnail reads), and a module size of 5 showed both working. I reproduced the zero offline from the plugin's own renders before believing it. Software rendering says nothing about a GPU or about speed.

On macOS it's never been loaded into Resolume; the fleet's test host, oxbow, is the only host it's run in there.

What isn't checked, or is assumed. No real wall, projector or SDI chain has looked at it yet: the patterns are right as pixels, and what a processor does with them is the thing they're for. Cabinet labels count from the raster's corner, not from the origin. Walls are uniform: one cabinet size and one origin, no irregular maps (Test Card imports those). The grid, alignment and tile colours, the burn-in, its plate and the marker ignore Levels. While a preset is selected the inspector is wrong about the controls it sets, because Resolume doesn't accept value events from a plugin. Nothing was timed.

Not done. No OpenFX port.