docs(gig): mid-set recovery runbook + measured OPAL BPM arc
Two gig-prep deliverables that needed no ears, written at J-10. RUNBOOK.md (#15) — the "when it breaks" playbook, organised symptom-first because that is how it actually gets read: you don't know the cause, you know the sound stopped. Ordered cheapest-first, with an explicit rule zero that rebooting SuperCollider is the LAST resort (30-120s of dead air and every pattern lost) and almost nothing needs it. The section worth having written down is 2b, the zombie control port. Observed live today: a leftover ghc process holds Tidal's port 6010, so a fresh Tidal boots, fails to bind, prints "Can't handshake with SuperCollider without control port" — and Pulsar looks completely normal. You eval and nothing happens, with NO error surfaced in the editor. That is the nastiest class of failure: silent, and indistinguishable from "my code is wrong". Detection is one line (ss -lunp | grep 6010, expect exactly one ghc and it should be the current one), so it's now in the pre-set checklist rather than only in the recovery section. Also captured: the mute-bomb rescue path (prelude.tidal as in-session hot-patch on a stale boot, with the tell that pulling fader 49 to 0 makes it WORSE not better); fader 77 being down as a silent global-gain failure that looks like nothing is broken; Pulsar being frozen NOT stopping audio, since patterns live in ghci and not the renderer, so Window: Reload keeps the music playing; and the LCXL USB-OUT endpoint stall where LEDs die but input survives (replug). Every procedure is labelled by how well it's actually established — §1a/2a/2b/2c/7 have commands verified by running them today, §4/§6 come from documented prior incidents with known-good fixes but weren't re-tested tonight, and §5's gig-up.sh path was read from source rather than exercised end to end. A runbook you have never executed is a hypothesis, and it should say so. docs/2026-07-25-opal-bpm-arc.md (#12 input) — read setcps out of all 12 setlist tracks instead of trusting the backlog's [bpm] markers, and three disagree: - Gimme Acid: 80 measured vs 160 written — almost certainly the standard dnb half-time convention, but it decides where the track sits in the arc. - Sunshine: 144 measured vs 166 written. 22 BPM is far too big to be a rounding note, and it inverts the end of the set: the backlog plans Mafia(160) -> Sunshine(166) as a rising finish, but measured it is a 16 BPM DROP. Either the file drifted or the number was aspirational — needs a decision, since the shape of the finale depends on it. - Desire: 127 vs 129. Trivial, but it's the FINALE, so make them agree. Charted the measured arc and flagged three >40 BPM cliffs (->89, ->80, ->160). The 89 and 80 ones look deliberate — a slow track between fast ones is a real dramatic move — and they are only a problem if the transition is unprepared, which is precisely what the riser audit (#33) and default-xfade (#13) exist to fix. Also noted the 124/124/128 plateau as the most transition-safe stretch in the set. Ordering itself is left as PLN's call; this is only the tempo dimension.
Showing
RUNBOOK.md
0 → 100644
docs/2026-07-25-opal-bpm-arc.md
0 → 100644
Please
register
or
sign in
to comment