One screen, two pixel pitches, and a layer that changes size at the join.
Work out the pitch compensation an Analog Way LivePremier needs when one screen spans LED walls of different pixel pitches. Type each output group's raster and its pitch (or its measured size, and let the pitch fall out) and get the H and V ratios to type into Web RCS, the canvas footprint each group will take, the screen canvas that results, and the millimetres the device's three-decimal field costs you at the far edge of each wall.
Everything is worked out in the page and nothing you type is uploaded, so a client's set design has nowhere to leak to. It has no socket and won't be growing one: the AWJ frames a script would send are printed for you, and nothing here connects to a switcher.
A 2.6 mm main wall and a 4.0 mm side wall on one screen: the side wall wants a ratio of 1.53846…, the field holds 1.538, and across a 1920-pixel raster that's 1.85 canvas pixels short, or 4.8 mm of real wall at the far edge.
What it works out
01
Which way the ratio goes
Measured, not read
The manual gives pitch compensation four sentences and doesn't say which way round the ratio is. The ratio multiplies a group's raster to give its footprint on the canvas, so a coarser wall gets a number above 1.000. That was established by writing pitchRatioH = 2000 to an output of a running LivePremier simulator and reading a 1920 × 1080 output back as 3840 × 2160. Fourteen such pairs are pinned as tests.
02
The finest wall is the reference
The ratio scales a raster up into canvas pixels, so the reference should be the group with the most pixels per millimetre: every other group is then handed more canvas than it has pixels and scales down, which a video processor does well. Pick a coarse group instead and the finest wall in the room spends the whole show upscaling. The tool defaults to the right one and says so when you override it.
03
What the field will actually hold
Integer thousandths, 0.100 to 10.000, three decimals and no more, and an out-of-range write is discarded, not clamped. The device says nothing, and the operator is left looking at a field that still reads whatever it held before. So the tool refuses a ratio the switcher will never take rather than quietly reporting one it clamped.
04
The device floors, and it costs a pixel
pitchedWidth = floor(raster × ratio / 1000), measured four separate times against the values rounding would give. With the three-decimal field, that's where the drift comes from, and the tool reports it per group per axis, in canvas pixels and in millimetres on the wall, because that's the number that decides whether the rounding matters.
05
The screen drawn twice
The walls in the room above, the canvas below, at the same scale, so a mapping that isn't uniform is visible rather than inferred. Alongside: the screen canvas the design needs, a plain statement when a blocked group makes it unachievable as specified, a CSV for the show folder, and the AWJ frames.
What to check before a show
01
Nothing here has touched physical Aquilon hardware
The arithmetic was driven into a running AW LivePremier Simulator 6.2.73 and read back off the wire, which runs the same web application and object model as the switcher. It still isn't the switcher, though, and no pitch-compensated screen built from this has been driven onto real LED walls.
02
It gives you the ratios, not the layout
A LivePremier lays its canvas out from each output's own area of interest, which nothing here can reach into. The ratios are the part that's solved; the canvas rectangles shown beside them are what you build on the device.
03
A ratio written alone does nothing
If you do script it, xUpdate isn't optional: writing a ratio on its own moves the command value and leaves the canvas exactly where it was. That's verified, and it's why the printed AWJ frames include it.
Run your own copy
Aquilon Pitch is also published as a Docker image, ghcr.io/stoatworks-labs/aquilon-pitch, serving the same files as the hosted copy. On a laptop or a box in the rack it keeps working when the venue's internet doesn't.
Docker
docker run -d --name aquilon-pitch --restart unless-stopped -p 8540:80 ghcr.io/stoatworks-labs/aquilon-pitch:latest
Then it's at http://localhost:8540/. The repo's docker-compose.yml does the same with docker compose up -d.
Unraid
Search Community Applications for aquilon-pitch and install it. The template sets the port to 8540 for you.