ALARMS and AUTO-FIX as two keys; LIGHTS at Southcoast hands the lights to an operator

- kind autofix: its own switch on the auto-fix hours; ALARMS then only silences (NA keeps the old
  combined key until it has room for one)
- kind bypass: hold takes every network MIDI link to a peer out (here and on listed Macs), checks stop
  calling it lost, re-taken every 10 s; hold again puts back exactly what was taken plus every watched link
- a MIDI peer with no address is never called (it connected SC Tracks to itself)
- holds from NA's CAMPUS page flip switch keys; a rebuild keeps them; new campuses get AUTO-FIX
- key kind changes restart the watchdog; settings page has separate alarm / auto-fix buttons
- WS and SC configs: AUTO-FIX at 3,1; SC LIGHTS at 1,3; NA config synced from live

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 13:33:48 -04:00
co-authored by Claude Opus 5.5
parent 2f8e3d47a3
commit d0c755824b
15 changed files with 605 additions and 44 deletions
+9
View File
@@ -48,6 +48,15 @@
],
"kind": "service"
},
{
"id": "autofix",
"label": "AUTO-FIX",
"pos": [
3,
1
],
"kind": "autofix"
},
{
"id": "net",
"label": "NET",
+99 -1
View File
@@ -63,7 +63,8 @@
"propresenter_ingest",
"prop_port_propresenter_api",
"hyperdeck",
"midi_reconnect"
"midi_reconnect",
"ableton_sc_tracks_new"
]
},
"tiles": [
@@ -216,6 +217,55 @@
1,
1
]
},
{
"id": "ableton",
"label": "ABLETON",
"checks": [
{
"type": "remote",
"template": "mac_program",
"params": {
"host": "sc_tracks_new",
"process": "Live"
},
"msg": "ABLETON NOT RUNNING",
"fix": "ableton_sc_tracks_new",
"host": "sc_tracks_new",
"cmd": "pgrep -xq Live"
}
],
"pos": [
1,
2
]
},
{
"id": "autofix",
"label": "AUTO-FIX",
"kind": "autofix",
"pos": [
3,
1
]
},
{
"id": "lights",
"label": "LIGHTS",
"kind": "bypass",
"pos": [
1,
3
],
"bypass": {
"peers": [
"Lighting"
],
"hosts": [
"",
"sc_tracks_new"
]
}
}
],
"fixes": {
@@ -271,6 +321,34 @@
"params": {},
"short": "RECONNECT",
"label": "reconnect the peer to the network MIDI session it dropped out of (like Connect in Audio MIDI Setup), at its wired address"
},
"ableton_sc_tracks_new": {
"template": "ableton",
"params": {
"host": "sc_tracks_new",
"app": "Ableton Live 11 Suite",
"restart": false,
"wait_seconds": 15
},
"label": "start Ableton on SC Tracks NEW if it is not running",
"short": "ABLETON",
"kind": "ssh",
"host": "sc_tracks_new",
"run": "pgrep -xq Live || { L=$(ls -td ~/Library/Preferences/Ableton/Live*/ | head -1); S=$(grep -a 'info: Loading document \"' \"${L}Log.txt\" | grep -v '/Templates/' | tail -1 | sed -E 's/^.*Loading document \"(.*)\"[^\"]*$/\\1/'); if [ -n \"$S\" ] && [ -f \"$S\" ]; then open -a 'Ableton Live 11 Suite' \"$S\"; else open -a 'Ableton Live 11 Suite'; fi; }"
},
"restart_ableton_sc_tracks_new": {
"template": "ableton",
"params": {
"host": "sc_tracks_new",
"app": "Ableton Live 11 Suite",
"restart": true,
"wait_seconds": 15
},
"label": "restart Ableton on SC Tracks NEW (closes it first)",
"short": "ABLETON",
"kind": "ssh",
"host": "sc_tracks_new",
"run": "L=$(ls -td ~/Library/Preferences/Ableton/Live*/ | head -1); S=$(grep -a 'info: Loading document \"' \"${L}Log.txt\" | grep -v '/Templates/' | tail -1 | sed -E 's/^.*Loading document \"(.*)\"[^\"]*$/\\1/'); pkill -TERM -x Live; i=0; while pgrep -xq Live && [ $i -lt 30 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq Live && pkill -KILL -x Live; sleep 1; if [ -n \"$S\" ] && [ -f \"$S\" ]; then open -a 'Ableton Live 11 Suite' \"$S\"; else open -a 'Ableton Live 11 Suite'; fi"
}
},
"hosts": {
@@ -298,6 +376,17 @@
"http": "http://127.0.0.1:8000/api/connections"
}
]
},
"sc_tracks_new": {
"name": "SC Tracks NEW",
"os": "mac",
"ssh": "tracks@10.5.3.72",
"role": "found by auto-setup",
"runs": [
{
"kind": "sshd"
}
]
}
},
"gear": {},
@@ -338,6 +427,15 @@
0,
1
]
},
{
"id": "rs_ableton",
"label": "ABLETON",
"fix": "restart_ableton_sc_tracks_new",
"pos": [
0,
2
]
}
]
},
+9
View File
@@ -575,6 +575,15 @@
1,
3
]
},
{
"id": "autofix",
"label": "AUTO-FIX",
"kind": "autofix",
"pos": [
3,
1
]
}
],
"timing": {