# 🌙 Tuesday 2026-08-04 — J-4. The tent brief.

Not a morning file. You travel at dawn, so the next time you and the rig are both
awake it is **evening, in a tent, on headphones**. Supersedes `MORNING.md`.

`master` clean, **everything pushed** (`70048d4`). The KRKs stayed home.

**Read §1 before you open Pulsar.** It is the only thing here that can destroy work.

---

## 1. ⚠️ Reload Pulsar before you touch `desire.tidal`

Tonight I fixed `desire.tidal` on disk, you quit and reopened Pulsar, and Pulsar
**wrote its stale buffer back over the fix**. I had to redo it. The file on disk is
now correct and committed — your editor may still be holding the broken version.

    Window: Reload      (or just close the desire tab before opening it again)

Then, and only then, evaluate it. This is #95 and it is not theoretical any more.

---

## 2. Two changes you have not heard yet 🎧

### `xfade` is 1 cycle, not 4 — `15695de`

Every `dN` now crossfades over **one** cycle. This is why "I change a `# gain` and
the whole track swells down-and-up for four bars" is over.

Why it dipped at all, since you asked the right question: the envelopes are
equal-power (`g² + g² = 1`) but SuperDirt's law is `amp = gain⁴`, so at the
midpoint each side lands on amp **0.500** exactly — and `overlay` fires the sample
twice, so on any orbit with `# cut N` the second voice *kills* the first and you
hear one voice at half amplitude: **−6 dB**. Without `cut`, incoherent sum: −3 dB.
Shortening it makes the dip a blip, not a fade. It does not remove it.

**Verbs for the tent** — all already defined, nothing to type twice:

| want | type |
|---|---|
| instant, orbit-correct (adjusting a value) | `jumpTo 4 $ …` |
| instant via xfade | `xfadeIn 4 0 $ …` |
| the old long dissolve, one launch only | `xfadeIn 4 4 $ …` |

`xfadeIn N 0` used to give you **silence**, not instant — Tidal guards
`_slow 0 = silence` and `q \|* gain silence` empties the incoming pattern. Guarded
now, so 0 is real.

🎧 **Listen for:** one track→track seam at 1 cycle. It is faster than everything you
rehearsed. If it feels abrupt for the set, `xfadeIn N 2` per launch, or flip the
literal back in `BootTidal.hs` — it is one token.

### `desire`'s bass compiles now — `70048d4`

**The version you saved tonight did not compile.** The bass you liked existed only
in the running ghci, in a take that was never recorded.

`midiOn`/`midiOff` pass their argument straight to `someCyclesBy`, so it must be a
**function** — that is why every working call in your corpus looks like
`(# crush 6)`. Both note figures are now left sections: `((note (scale …)) #)`.
`^44` ON = the moving arp, OFF = the grounded root. That was the intent; verify by
ear that it is the *sound*.

`"Claude's Weight"` is commented out — when its figure moved into Gesture's
`midiOff` it was left with a `midiOn` and nothing to apply it to, which is what
broke the file. The last `d4` wins, and that was never this block, so nothing
musical is lost.

🎧 **Test in the tent:** `^44` off → on → off on `desire`, headphones. Does the
grounded↔moving flip land where you want it.

---

## 3. Nothing from tonight was recorded

Measured, not assumed: 120 wavs in `Tidal Live`, newest **2026-08-02** (Take95),
zero files today, no open write fds. The desire bass, the mafia d7 fix, the
Sunshine→Vague work — code only.

**#37 is now a gig blocker, not a nice-to-have.** Big red blinking dot when
recording, big red triangle when not, notification on first eval with no rec.
Watching *bytes landing on disk*, not the record button — the button, the saved
session and the GUI have each lied to us this month.

Not built yet. Until it is: **arm Ardour before you play anything you'd miss.**

---

## 4. Ghost list — the seams, unchanged

`#77` is not fixed. An orbit the incoming track does not *declare* never gets
evaluated, so it never transitions, so it keeps playing. Unrelated to the xfade
work — opposite mechanism.

    Mafia      -> Sunshine     GHOST  d7
    Sunshine   -> Vague        GHOST  d9, d11     ← you hit this one tonight
    Vague      -> Desire       clean ✓
    Desire     -> REVOLUTION   GHOST  d6
    REVOLUTION -> Hammer       GHOST  d7, d8, d12  ← worst seam in the set

Paste at the **top** of the incoming file, own block. Now a 1-cycle fade:

    d9 $ silence
    d11 $ silence

Under pressure: `hush`.

---

## 5. Tent-appropriate, and not

**Do 🎧** — `^44` on desire; one seam at the new 1-cycle xfade; `jumpTo` as your
adjusting verb; read `LAST_THIRD.md` cold; the three untested tracks (#127:
desire / REVOLUTION / electric_hammer).

**Don't** — gain staging or level work on headphones (#17, #91 need the room);
loud seam checks; anything that needs the UMC if it is packed. And do not quit
Pulsar with patterns running until #140 lands — that is why you had to reopen it
tonight just to `hush`.

---

## 6. Rig state, verified tonight

Measured mid-rehearsal, read-only:

    pulsar renderer   5.0 / 5.5 / 5.0 %     (was ~82% idle before #7)
    scsynth           1.0 / 0.5 / 1.0 %
    load average      2.97                  (7.17 during Sunday's dropout)
    UMC202HD          ~48k frames/s, 0 restarts, 0 xruns while Ardour ran

The graph prune and #7 both held under a real recording load. This is the
healthiest the rig has measured.

**Two known-live oddities, neither urgent:**
- Four orphaned `aseqdump` taps still alive (#129). Read-only subscribers, cost
  nothing, but they are the thing to reap when you next restart the gear.
- Ardour's control-surface input had come unwired from Midi Through — you found
  it, and the fork is now understood: **Tidal hears the LCXL over ALSA seq
  (`24:0 → SuperCollider`), Ardour hears it over PipeWire's Midi-Bridge.** Kill
  either and the other stays flawless, which is why "MIDI works" and "the faders
  are dead" were both true. `gig-up.sh:410` only ever checked the SuperCollider
  half — a check for the Ardour half is the next thing I owe you.

---

## 7. Before the tent: unplug order

1. `hush`
2. **Save the Ardour session** — deliberately. Tonight's faders are correct, and
   the *saved* session has shipped 9-of-12 faders at `-inf` three times (#124).
3. Quit Ardour (it holds the UMC through PipeWire).
4. Then MIDI → UMC → USB-powered.
