Commit 4836d74f by PLN (Algolia)

docs(runbook): the checklist said to put the DJ filters DOWN for bypass — centre is bypass

The pre-set checklist carried a line that has been wrong since gDJF was rewritten:
"Faders 49/50 down (= bypass)". `gDJF` is two composed sections whose lpf and hpf are
BOTH wide open at ch=0.5 and close as you move off centre in either direction
(BootTidal.hs ~358, corrected mid-rehearsal 2026-07-27 when PLN described exactly
that: "middle had no filter, total left = almost only subbass, total right = almost
only superhigh"). So a knob at 0 is a hard low-pass. The runbook was instructing him
to start the set with the bass-only end of the filter engaged — the opposite of
bypass — and muscle memory built on a checklist is worse than no checklist.

Measured the same day for confirmation: CC49 at 0 puts 72% of d1's energy below
150 Hz; at 127, 75% sits above 2 kHz; centre 64 is flat.

Also adds §8, "I evaluated it and heard nothing", because the most common cause of
silence on this rig is not audio: three times in one week a dead rig was a compile
error. The identifying rule is structural and instant — ALL declared orbits silent
means it did not compile (one block, one error), SOME silent means a real audio
problem. With the bisect-by-blank-line technique PLN invented, the editor-buffer
caveat, and a pointer to the new EVAL ERROR notification that finally makes this
class visible.

And wires the new instruments into the pre-set flow: check-mix.py (save Ardour
first — it reads the file, and file vs live desk have disagreed in both directions),
check-tracks.sh (the empirical compile gate, ~45s/track so run it the day before),
lcxl-leds.py --map. Status section updated honestly: everything here was run against
the live rig that day EXCEPT the LED paint, which nobody has confirmed by eye.
parent 16429b0e
......@@ -174,13 +174,63 @@ on purpose — if Ardour dies you still have the set.
1. `./gig-up.sh` — wait for the readiness gate, don't race it.
2. `ss -lunp | grep 6010` → exactly one ghc, and it's the current one.
3. `aconnect -l | grep SuperCollider` → present.
4. **Fader 77 up.** Faders 49/50 down (= bypass).
5. Eval one track, hear it, then `hush`.
6. `bash tools/gig_record.sh status` → RUNNING.
7. Do **not** suspend the laptop after this point.
4. **Fader 77 up.** **Knobs C1/C2/C3 (the DJ filters, CC 49/50/51) at their CENTRE
detent — centre is bypass, NOT down.** Corrected 2026-07-28: this checklist used
to say "faders 49/50 down (= bypass)", which is now WRONG and audibly harmful.
`gDJF` is built as `lpf` and `hpf` sections that are both wide open at ch=0.5 and
close as you move off centre in either direction (`BootTidal.hs` ~line 358), so
a knob at 0 is a hard low-pass — almost only subbass. Down is the opposite of
bypass.
5. **`tools/check-mix.py`** → no orbit at `-inf` or "very low". Do this AFTER setting
the LCXL D-row, and **save the Ardour session**, because this reads the file as
saved, not the live desk (they have been observed disagreeing in both directions).
6. **`tools/check-tracks.sh`** → "every declared orbit of every track made sound".
This is the compile check as well as the smoke test: a `.tidal` file cannot be
typechecked statically, and ALL-orbits-silent means the track did not compile.
Takes ~45 s per track, so run it the day before, not at doors.
7. `tools/lcxl-leds.py --map <the first track>` → the surface lights up, and the dark
controls are the ones that do nothing on that track.
8. Eval one track, hear it, then `hush`.
9. `bash tools/gig_record.sh status` → RUNNING.
10. Do **not** suspend the laptop after this point.
**After ANY edit to `BootTidal.hs`, re-run step 6.** A broken helper there silences
the entire corpus at once — one nested `#` in `gDJF` took down every `g*` helper on
2026-07-27, and a single undefined name or misplaced `.` takes down a whole track
because these files have almost no blank lines, and a blank line is Tidal's block
separator. Blank lines between orbits are free insurance.
---
## 8. "I evaluated it and heard nothing" — check it COMPILED before blaming audio
The single most common cause of silence on this rig is not audio at all. Three
separate times in the week to 2026-07-28 a "dead rig" was a compile error:
an undefined name (`crackles`), a nested `#` in a `gDJF` helper, and
`|+ note 12 . (|* gain 0.6)` where `.` binds tighter than the section.
**The rule that identifies it instantly:**
| symptom | meaning |
|---|---|
| **ALL** declared orbits silent | it **did not compile** — one block, one error |
| **SOME** orbits silent | a real audio problem (fader, bank, routing) |
A Tidal block compiles entirely or not at all, and these tracks have almost no blank
lines, so the "block" is usually the whole file.
What to do:
1. Look at the Pulsar notification — it now says `EVAL ERROR (block line N, col C):`
with the position intact. Before 2026-07-28 the editor was *deleting* the word
"error" and the position from GHC's output, which is why this class of failure went
unrecognised for so long. If you don't see notifications, do `Window: Reload`.
2. Bisect the way PLN does: **insert a blank line** after a working orbit. That splits
the block, so the healthy half survives and the broken half is isolated.
3. Remember Pulsar evaluates the **editor buffer**, not the file on disk — a `grep` of
the file can disagree with what is playing, in both directions. Save before trusting
any file-based check.
4. `tools/check-tracks.sh <track>` for the machine's answer.
## Status of these procedures
- **§1a, §2a, §2b, §2c, §7** — commands verified by running them on 2026-07-25.
......@@ -188,3 +238,10 @@ on purpose — if Ardour dies you still have the set.
(headless sclang, replug) are known-good, but not re-tested tonight.
- **§5**`gig-up.sh` behaviour read from source, not exercised end-to-end tonight. Worth a
real rehearsal run (#14), because a runbook you've never executed is a hypothesis.
- **§8, and pre-set steps 5-7** — added 2026-07-28 from three real incidents that week;
`check-mix.py`, `check-tracks.sh` and `lcxl-leds.py --map` were all run against the live
rig that day. The LED paint is the one item **not** confirmed by eye — a clean exit is
not a lit LED.
- **Pre-set step 4 was WRONG until 2026-07-28** and said to put the DJ-filter knobs down
for bypass. Centre is bypass; down is a hard low-pass. If you have muscle memory from
the old line, unlearn it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment