Commit fa548f0f by PLN (Algolia)

fix(gig-up): speak the dialect the tray speaks — accept --converge and --quiet

Every tray GIG UP click POSTed to the Bridge, which ran
'gig-up.sh --converge --quiet' — flags this script never parsed, so the
arg guard rejected it with 'unknown option' and exit 2, output swallowed
by the Bridge's capture. Net effect: Pulsar opened (PRE_APPS, before the
POST) and nothing else ever booted. The script and its caller had
drifted apart on paper only — this is the contract, written down.
parent 6fb0f98d
...@@ -22,10 +22,12 @@ READY_TIMEOUT="${READY_TIMEOUT:-120}" # s to wait for SuperDi ...@@ -22,10 +22,12 @@ READY_TIMEOUT="${READY_TIMEOUT:-120}" # s to wait for SuperDi
PRELOAD_TRACKS="${PRELOAD_TRACKS:-20}" # warm samples from the last N edited tracks (0 = off) PRELOAD_TRACKS="${PRELOAD_TRACKS:-20}" # warm samples from the last N edited tracks (0 = off)
HEADPHONES=0 # --headphones: no Ardour, all orbits folded to one sink HEADPHONES=0 # --headphones: no Ardour, all orbits folded to one sink
CONVERGE=0 # --converge: boot + converge, but open NO app (Bridge opens them)
QUIET=0 # --quiet: only WARN/FAIL (machine-facing capture)
C_OK=$'\e[32m'; C_WARN=$'\e[33m'; C_INFO=$'\e[36m'; C_DIM=$'\e[2m'; C_RST=$'\e[0m' C_OK=$'\e[32m'; C_WARN=$'\e[33m'; C_INFO=$'\e[36m'; C_DIM=$'\e[2m'; C_RST=$'\e[0m'
ok(){ printf '%s✓ %s%s\n' "$C_OK" "$*" "$C_RST"; } ok(){ [ "$QUIET" = 1 ] || printf '%s✓ %s%s\n' "$C_OK" "$*" "$C_RST"; }
info(){ printf '%s• %s%s\n' "$C_INFO" "$*" "$C_RST"; } info(){ [ "$QUIET" = 1 ] || printf '%s• %s%s\n' "$C_INFO" "$*" "$C_RST"; }
warn(){ printf '%s! %s%s\n' "$C_WARN" "$*" "$C_RST"; } warn(){ printf '%s! %s%s\n' "$C_WARN" "$*" "$C_RST"; }
usage(){ usage(){
...@@ -36,6 +38,12 @@ gig-up — ordered rig launch. ...@@ -36,6 +38,12 @@ gig-up — ordered rig launch.
gig-up.sh --headphones travel rig: SuperDirt -> Pulsar, every orbit folded gig-up.sh --headphones travel rig: SuperDirt -> Pulsar, every orbit folded
onto the default sink. No Ardour, no faders, no onto the default sink. No Ardour, no faders, no
stems — just all 14 orbits in your ears. stems — just all 14 orbits in your ears.
gig-up.sh --converge windows-free rig: boot SuperDirt + converge the
units, but launch NO app — the Bridge's RIG UP
(tools/bridge/rig.py) calls this, then opens
Pulsar/Ardour/midimon itself.
gig-up.sh --quiet machine-facing: only WARN/FAIL lines (what the
Bridge captures into its panel).
gig-up.sh --help gig-up.sh --help
Env: READY_TIMEOUT (120) PRELOAD_TRACKS (20) SETLIST GIG_PERF=off GIG_CUTGPU=off Env: READY_TIMEOUT (120) PRELOAD_TRACKS (20) SETLIST GIG_PERF=off GIG_CUTGPU=off
...@@ -45,6 +53,8 @@ USAGE ...@@ -45,6 +53,8 @@ USAGE
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
-H|--headphones) HEADPHONES=1 ;; -H|--headphones) HEADPHONES=1 ;;
--converge) CONVERGE=1 ;;
--quiet) QUIET=1 ;;
-h|--help) usage; exit 0 ;; -h|--help) usage; exit 0 ;;
*) warn "unknown option: $1"; usage; exit 2 ;; *) warn "unknown option: $1"; usage; exit 2 ;;
esac esac
...@@ -179,7 +189,12 @@ pick_term(){ ...@@ -179,7 +189,12 @@ pick_term(){
} }
open_term(){ # open a new terminal running the headless sclang gig-boot open_term(){ # open a new terminal running the headless sclang gig-boot
local term; term="$(pick_term)" local term
if [ "$CONVERGE" = 1 ]; then
term="" # converge opens NO windows — always the headless path below
else
term="$(pick_term)"
fi
# scsynth MUST get PipeWire's libjack shim, exactly as Ardour must (see the # scsynth MUST get PipeWire's libjack shim, exactly as Ardour must (see the
# long note at the Ardour launch below). This box has jack2 installed, so # long note at the Ardour launch below). This box has jack2 installed, so
# ldconfig resolves libjack.so.0 to the REAL jackd2 one; scsynth then finds no # ldconfig resolves libjack.so.0 to the REAL jackd2 one; scsynth then finds no
...@@ -418,7 +433,9 @@ else ...@@ -418,7 +433,9 @@ else
fi fi
# 3) Ardour — or, on headphones, the orbit fold that replaces it # 3) Ardour — or, on headphones, the orbit fold that replaces it
if [ "$HEADPHONES" = 1 ]; then if [ "$CONVERGE" = 1 ]; then
ok "Ardour: skipped (converge) — the Bridge opens it now that SuperDirt owns MIDI."
elif [ "$HEADPHONES" = 1 ]; then
# No Ardour means no Master, and the rig is multichannel: orbit k lives on the # No Ardour means no Master, and the rig is multichannel: orbit k lives on the
# pair (out_{2k-1}, out_{2k}), so out of the box you hear d1 and nothing else # pair (out_{2k-1}, out_{2k}), so out of the box you hear d1 and nothing else
# — and on 2026-09-07, on a freshly booted laptop, not even that: scsynth had # — and on 2026-09-07, on a freshly booted laptop, not even that: scsynth had
...@@ -463,6 +480,8 @@ fi ...@@ -463,6 +480,8 @@ fi
# 4) Pulsar — the Tidal folder # 4) Pulsar — the Tidal folder
if pulsar_up; then if pulsar_up; then
ok "Pulsar already running — skipping." ok "Pulsar already running — skipping."
elif [ "$CONVERGE" = 1 ]; then
ok "Pulsar: skipped (converge) — the Bridge opens it immediately on RIG UP."
else else
LAUNCH_ARGS=("$DIR"); launch_bin "Pulsar" pulsar LAUNCH_ARGS=("$DIR"); launch_bin "Pulsar" pulsar
fi fi
...@@ -505,4 +524,5 @@ if [ "$HEADPHONES" = 1 ]; then ...@@ -505,4 +524,5 @@ if [ "$HEADPHONES" = 1 ]; then
info "plugged headphones in after this? the default sink changed — re-run: tools/fold-orbits.py" info "plugged headphones in after this? the default sink changed — re-run: tools/fold-orbits.py"
else else
ok "gig-up done. SuperDirt owns the LaunchControl; Ardour + Pulsar are coming up." ok "gig-up done. SuperDirt owns the LaunchControl; Ardour + Pulsar are coming up."
[ "$CONVERGE" = 0 ] || ok "converge done — SuperDirt owns the LaunchControl; the Bridge opens the apps."
fi fi
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