Pixel Mapping — footprints
A footprint tells LMS where your physical LEDs sit and in what order they're wired, so it can map the picture onto any shape — a panel, a ring, a triangle, or a hand-drawn layout — and send it to the right universes.
The big idea
Effects always paint a rectangular canvas (the size you set in the Matrix tab). A footprint is a cookie-cutter: it picks a set of points out of that rectangle and sends those colours to the wire, in order.
- The Matrix is the canvas — the resolution effects render at.
- A footprint (one per patch row) says "my LEDs are here, in this order, on this universe."
- The effect never knows the LEDs are a ring — it just fills the square; the footprint reads the circle out of it.
Add Row vs Wall Wizard vs Footprints
| Use | When |
|---|---|
| + Add Row | A plain rectangular matrix that just goes out in reading order. Add rows and let ⇅ Auto Number fill the universes sequentially. Simplest case. |
| 🧱 Wall Wizard | A wall of identical tiled panels (e.g. 4× 16×16). Generates all the rows for you. |
| 🔍 Discover devices | Live Art-Net controllers on the network — scan and click a device to add a patch row bound to its IP + universes. |
| Footprints (this guide) | Anything else — rings, odd shapes, panels wired backwards, multiple dissimilar panels, or a hand-drawn map. |
The shapes
Open a patch row's footprint editor and pick a Shape:
| Shape | Fields |
|---|---|
| Rectangle / panel | Origin X/Y, Width, Height, Start corner, Pixel wiring (zig-zag / straight, rows / columns). |
| Diagonal strip | Start X/Y → End X/Y, LED count. Evenly spaced along the line. |
| Ring / arc | Centre X/Y, Radius, LED count, Start° / End° (0–360 = full circle; a smaller span = an arc). |
| Polygon | Centre X/Y, Radius, Sides, LED count. LEDs spaced evenly round the outline (3 = triangle, 6 = hexagon). |
| Custom / imported map | An arbitrary list of pixel positions — see below. |
Prebuilt fixtures
Two one-click presets on the toolbar drop a correctly-sized footprint so you don't build it by hand:
- ⬢ HexVIBE… — Flow = a 93-pixel hexagon (map one patch row per FLOW panel: Start Pixel
0for the left panel,93for the right, and nudge each Centre X apart). Flash is a provisional placeholder. Needs a 2-D matrix (e.g. 64×64) so the hexagon has room to draw. - 📏 SmartShow Pixel Tube… — PIXEL-100 / 200 / 300 drops a straight vertical line of that many pixels (one pixel per matrix cell) and auto-sets the colour order to GRBW, since these are RGBW tubes. On a matrix shorter than the tube it clamps to the height and warns you to make it taller for full per-pixel detail.
Colour order
The Colour order dropdown sets the byte order this fixture's pixels expect — GRB for most WS2812-style strip, GRBW for RGBW tubes. It's the same per-row order as the patch table's Order column (set it in either place), so you can run mixed fixture types — e.g. a GRBW tube alongside RGB panels — on one rig.
Rotate
The Rotate° field spins the whole footprint about its centre — e.g. 45 turns a square panel into a diamond. It works on any shape. (Note: rotating makes a rectangle draw as individual pixels on the map, because its edges no longer sit on the grid.)
Custom / imported map
For a layout that isn't a neat shape, use Custom / imported map — a straight list of pixel positions on the canvas, in wire order. Pixel 0 is the first line, and so on.
Format
Type or paste into the box, or click Import map file… (.json / .csv / .txt). All of these are accepted:
// one "x,y" per line
0,0
1,0
2,1
3,2
// JSON array of pairs
[[0,0],[1,0],[2,1],[3,2]]
// JSON array of objects
[{"x":0,"y":0},{"x":1,"y":0}]
// a leading index column is ignored — the LAST two numbers on a line win
0 0 0
1 1 0
2 2 1
Coordinates are canvas pixels (0,0 = top-left). Points outside the canvas send black — handy as spacers.
The button row
Above the map: 📂 Import map… and ⬇ Export map… (save the current map as a CSV you can back up, share or re-import), ↶ Undo / ↷ Redo (also Ctrl+Z / Ctrl+Y), and 🗑 Clear all (asks first — and it's undoable). Undo history is per row and resets when you open one.
Editing modes
Four ways to work directly on the mini-map — the toggles sit under it. Only one is active at a time; leave them all off for the default Edit mode.
- Edit (default) — drag a pixel to move it (you only need to grab near it, it takes the closest); double-click empty space to add one; right-click or Alt-click to delete. Empty clicks do nothing, so you can't move the whole map by accident.
- ✥ Move whole map — a drag anywhere shifts every pixel together.
- 🔗 Re-wire — fix the chain order without moving anything. Drag along the cable (or click pixel by pixel) and each pixel you pass becomes the next in the sequence. The wired chain draws as a bright numbered cyan line ( pixel 0 → last wired) while un-wired pixels dim to grey, so you watch the route build. Right-click steps back one; ↺ Start over resets the sequence (pixels stay put).
- ✏️ Trace — build a map from a blank canvas by clicking along your chain in order (see below).
Bridge / null pixels
Sometimes a run of LEDs on the chain sits somewhere you don't want lit — it's just bridging between two areas, and cutting the tape would be a pain. Mark those as bridge (null) pixels: they stay in the chain (so every following pixel keeps its correct address) but are never lit — always black.
- Ctrl-click (⌘-click on Mac) a pixel to toggle it. It's a toggle — Ctrl-click a bridge pixel again to turn it back on.
- A bridge pixel shows as a bold orange ring with a diagonal "off" slash (⊘), larger than a lit pixel, and still carries its number in the sequence. The header shows a running ⊘ N bridge/null tally.
- In the text/CSV a bridge line ends with
skip(alsobridge/null/x), e.g.12,7,skip. Import/Export keep the flag; JSON uses a third element[x,y,1].
Trace mode — build a map by clicking
The fastest way to map an irregular rig is to trace it from a photo:
- Tick Show ref and load a picture of your layout so it sits under the mini-map.
- Tick ✏️ Trace mode.
- Click along your LED chain, in order — each click drops the next pixel. The green dot marks pixel 0, and the hint shows which pixel you're placing next.
- Right-click (or the ⤺ Undo last button) removes the last point.
- Untick Trace mode to return to Edit.
Trace, Move-whole-map and Re-wire all start off when you open a row, so you never place or move pixels by accident. Every change is saved as you go.
Pixel order & direction
The order of the pixels is the DMX order — pixel 0 gets the first channels, pixel 1 the next, and so on. So it matters which LED is "first". On the map, the current footprint shows:
- a green dot on pixel 0 and a red dot on the last pixel,
- a faint path connecting the pixels in order (so you can see the direction),
- index numbers on each pixel whenever they're big enough on screen (they don't cut off at a pixel count — only when the cells get too small to fit a digit), and
- a hover readout — point at any pixel to see "
pixel N of M · DMX ch a–b".
For a ring/arc, spin Start° to move where pixel 0 sits; swap Start°/End° (e.g. 360→0) to reverse the direction. For a custom map, use 🔗 Re-wire (above) to redraw the chain order — handy after an Import or for a rig that snakes an odd path.
Universes & splitting
A footprint sends on one universe by default. If it has more pixels than a universe holds (170 for RGB, 128 for RGBW), use the Split this panel across universes fields (Skip first panel pixels / Pixels this universe) to carry a slice, or click Split into universes… to auto-create one row per chunk. Set each row's Protocol and IP as normal.
Live-lit preview
Tick Show output in the footprint editor and every patched LED lights up at its mapped position with the running effect's colour — so you see your ring/shape as it will actually look inside the editor's mini-map, not just an outline. Drop an effect in the Designer first so there's something to show.
🖥 Show on monitors. Want that shape on the big previews too? Click 🖥 Show on monitors in the footprint editor's footer (it lights green when on). The Builder's MAIN OUTPUT preview and the Show-mode big preview then black out every cell that isn't a real patched LED, so both monitors show your rig's physical shape — the heart/logo/ring/panels — instead of the full rectangular canvas. It's a whole-patch view (not just the row you're editing), the choice sticks across launches, and clicking again returns to the normal full-canvas preview. Bridge (null) pixels stay dark, and unpatched areas are black. Great for eyeballing an odd-shaped rig live without the physical LEDs in front of you.
Worked example: a 60-LED ring
- Matrix tab → set the canvas to 16×16 (room for the ring + smooth colour).
- Patch Editor → add a row → open its footprint editor.
- Shape = Ring; Centre X
8, Centre Y8, Radius7, LED count60, Start°0, End°360. - Set the row's Protocol (Art-Net) and IP. 60 px × 3 = 180 ch — fits one universe.
- Drop a Plasma or Color Cycle effect in the Designer, then tick Show output to watch the ring glow.
Tips & gotchas
- Canvas resolution ≠ LED count. The canvas is the picture; the footprint samples LED count points out of it. A tiny canvas makes a ring blocky — go bigger.
- Off-matrix pixels send black. The "PARKING · off-air" margin round the map is a safe staging area for dragging panels about.
- Coverage summary shows how much of the matrix is patched — aim for what you intend (a ring won't be 100%, and that's fine).
- LEDs run backwards? Reverse a ring via Start°/End°, a rectangle via Start corner + Pixel wiring, or a custom map by reversing the list.