TUMBRINK
LogKORETH

72 channels, all alive

Full LED test on the starship miniature — every window, engine, and running light addressable from the ESP32. First time the whole hull lit up at once.

Why 72 channels

A studio-scale miniature lives or dies by its lighting. Windows, engine glow, running lights, formation lights — if they're wired to one switch, you get one look. KORETH needs the opposite: every shot defines its own lighting state, and the ALIVE pipeline needs those states to be reproducible weeks apart, exactly.

So every light source on the hull got its own constant-current channel. 72 of them. Window banks are grouped by deck, engines split into core and halo, and every navigation light is individually addressable. Overkill until the day it isn't.

The driver stack

Five TLC5947 boards, daisy-chained on one SPI bus, driven by an ESP32. Each board does 24 channels of 12-bit PWM with constant-current outputs — no resistor math per LED, no brightness drift when the harness warms up.

The ESP32 holds the whole lighting state in one frame buffer and clocks it out in a single latch. State changes are atomic: there is no frame where half the ship is in the old look and half in the new one.

Wiring inside the hull

The wiring took longer than the firmware, by a factor of about five. Enamelled magnet wire, bundled per deck, routed through the hull skeleton so nothing crosses a window from inside. Every bundle ends in a labelled connector — the hull splits into three sections for transport, and the harness has to split with it.

Nothing shows on camera. That was the only hard requirement, and it's the reason the harness plan took an evening with the hull drawings before any solder melted.

Firmware and lighting states

Lighting states are named tables, not code: KEY_ONLY, PRACTICALS, ENGINE_FULL, SILENT_RUNNING. The ESP32 stores them and fades between any two with a configurable curve. A state can be called from a serial command, which means the motion-control Pi can switch looks mid-move — or hold one state per scan pass, which is exactly what ALIVE needs.

Repeatability is the whole point. The same state name produces the same 12-bit value on the same channel, every time, to the bit.

First full power-up

Every window, every engine, every running light at once — the first time the whole hull was alive. One channel flickered: a cold joint on board three, found in two minutes because every channel maps to a labelled wire.

Next: photometric calibration per state, so the splat captures see the same exposure the greenscreen stage will reproduce.