fix(boot): bake the live-validated prelude into BootTidal.hs — disarm the gF mute-bomb permanently
The problem: `gF1/gF2/gF3` in BootTidal.hs sent a value into `djfbus`, which is
NOT a registered SuperDirt effect. The LCXL faders REST AT 0, so every gF-wrapped
stream shipped an extreme value into a missing bus the moment it was launched —
sound muted mid-set with no way back. Every mature ParVagues track wraps its
streams in gF1/gF2/gF3, so this was armed on essentially the whole set.
It was fixed and live-confirmed on 2026-07-25 ("f123 djfs seem to work great
overall") — but only as a shadow-eval from live/lib/prelude.tidal. That fix lived
in the running ghci and nowhere else: one SuperCollider reboot before OPAL and the
footgun rearmed itself silently. J-10 is the wrong time to depend on remembering
to eval a file.
Approach — three blocks promoted from prelude.tidal into the boot file:
1. SAFE-AT-REST global filters. Swap the phantom djfbus for CORE params that are
always registered, mapped so fader-rest(0) == BYPASS:
gHPF = range 20 8000 (rest ⇒ hpf 20, effectively open)
gLPF = range 20000 180 (rest ⇒ lpf 20k, effectively open)
gF3 is now literally `id` — a spare fader that cannot touch sound at all.
Untouched ⇒ no effect, ever. Fader up ⇒ the filter sweeps in. Cannot mute you.
2. DEFAULT-XFADE dN launches. d1-d12 become `xfade N . (|< orbit N-1)`. The orbit
composition is the load-bearing part: a naive `xfade N` DROPS the orbit that dN
bakes in, so transitions landed on the wrong LCXL column and the wrong Ardour
stem. Added an orbit-correct `jumpTo N` for hard cuts. d13-d16 deliberately
stay plain `p` — orbit 13 is the tidal-ears capture vsink and must not blend.
3. gPanic — the ^93 gate the start_and_midi.scd panic-chord (73+74+91+92) flips.
Validation: type-checked in a throwaway ghci against the real tidal-1.9.5 install.
All signatures resolve as intended — gF1/gF2 :: Pattern ValueMap -> Pattern ValueMap,
gF3 :: a -> a (proving the safe identity), d1 keeps its original
Pattern ValueMap -> IO () shape so no track file needs an edit, d13 stays
ControlPattern -> IO (), jumpTo :: ID -> Pattern ValueMap -> IO ().
prelude.tidal is demoted from "source of truth we forgot to promote" to an
explicit RESCUE SHEET: it now documents the stale-boot symptom (push fader 49,
sound mutes instead of sweeping) and stays evaluable as an in-session hot-patch.
One source of truth, one less thing to remember mid-set.
Showing
Please
register
or
sign in
to comment