The painter existed as of the previous commit but nothing called it, which is exactly how the surface went dark in the first place: the only LED path was the Pulsar HUD, so the board was lit only when the editor happened to be open AND its frame pipeline was healthy. #57 says that pipeline latches an early empty frame. A rig whose feedback depends on an editor being up is a rig with no feedback. So both boot paths paint now: * tools/tidal-remote.py boot becomes a 5-step dance — reboot, wait for BootTidal, seed the surface (lcxl-init), PAINT it (lcxl-leds --map <track>), eval. Order matters and is unchanged in spirit: the seed gives every `^NN` a value instead of `silence`, and the paint makes that state visible. Per-track, so the board is a map of the file about to play: dark = this track does not bind that control. * gig-up.sh paints at step 2b, the moment the rig owns MIDI — BEFORE Ardour and Pulsar are even launched, using the no-track CONVENTION paint so there is always something to look at. GIG_LEDS=watch additionally starts the touch-reactive daemon (log → gig-leds.log, gitignored); GIG_LEDS=off skips the whole thing. Both call sites are NON-FATAL on failure and say so out loud. LEDs are feedback, not sound: a dark board is annoying, a boot that aborts because of a dark board is a lost gig. gig-up additionally names the one thing software cannot fix — if input works but the board stays dark, that is a USB OUT endpoint stall and only a REPLUG clears it. Both messages refuse to claim success: "a clean exit is not a lit LED". amidi/aseqsend returning 0 means the bytes left the machine, nothing more. Validation: bash -n on gig-up.sh, ast.parse on tidal-remote.py, and the paint command itself run against the live device (rc=0, 40 LEDs in one 89-byte SysEx write). NOT run: tidal-remote boot, deliberately — PLN is measuring audio in this same rig right now and a reboot would trash his results. The 5-step path is verified structurally, not live.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| bridge | Loading commit data... | |
| foundry | Loading commit data... | |
| pulsar-parvagues-hud | Loading commit data... | |
| README.md | Loading commit data... | |
| analyze_samples.py | Loading commit data... | |
| check-boot.sh | Loading commit data... | |
| check-mix.py | Loading commit data... | |
| check-tracks.sh | Loading commit data... | |
| control-lens.py | Loading commit data... | |
| fan_check.sh | Loading commit data... | |
| gen_tokens.py | Loading commit data... | |
| gen_ts_types.py | Loading commit data... | |
| gig_record.sh | Loading commit data... | |
| lcxl-init.py | Loading commit data... | |
| lcxl-leds.py | Loading commit data... | |
| mute.tidal | Loading commit data... | |
| probe-chain.py | Loading commit data... | |
| sample_tfidf.py | Loading commit data... | |
| setlist_samples.py | Loading commit data... | |
| shipowiz.py | Loading commit data... | |
| solo.tidal | Loading commit data... | |
| tidal-remote.py | Loading commit data... | |
| tools.png | Loading commit data... | |
| unmute.tidal | Loading commit data... | |
| unsolo.tidal | Loading commit data... |