TRACKS OUT copies to Woonsocket too (ready.locations AB, SC, WS); config synced from NA (Resi event times set on the settings page); tests pin their own Resi times
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -163,7 +163,7 @@ everything on the page at once.
|
|||||||
| BKGDS | every song has at least one slide with a background | looks again |
|
| BKGDS | every song has at least one slide with a background | looks again |
|
||||||
| LED CROSS | every Resolume column Sunday's playlist calls up has content: each slide's macro (read from the ProPresenter Mac's `Macros` and `.pro` files) sends RossTalk `CC page/row/col` to Companion, that button (and the buttons it presses, e.g. page 17 → page 6 "Arena") sends `/composition/columns/N/connect`; **COL 11 EMPTY** names the column and the items that use it. Also: Resolume on the **Service** deck. | selects the Service deck, then looks again (an empty column is filled in Resolume) |
|
| LED CROSS | every Resolume column Sunday's playlist calls up has content: each slide's macro (read from the ProPresenter Mac's `Macros` and `.pro` files) sends RossTalk `CC page/row/col` to Companion, that button (and the buttons it presses, e.g. page 17 → page 6 "Arena") sends `/composition/columns/N/connect`; **COL 11 EMPTY** names the column and the items that use it. Also: Resolume on the **Service** deck. | selects the Service deck, then looks again (an empty column is filled in Resolume) |
|
||||||
| LINEUP TV | ProdDash's Band Lineup shows this plan, nobody who is not on it or who declined, and everyone on the Band and Communication teams | re-syncs the board from Planning Center |
|
| LINEUP TV | ProdDash's Band Lineup shows this plan, nobody who is not on it or who declined, and everyone on the Band and Communication teams | re-syncs the board from Planning Center |
|
||||||
| TRACKS OUT | every location in `"locations"` (AB, SC) has this weekend's project folder | copies NA's project to the locations that have none (as `261018 AB Project`, without `Backup/`). It is copied under a temporary name and renamed at the end, so a half-finished copy never looks sent. It never overwrites a folder that is already there and never runs by itself. |
|
| TRACKS OUT | every location in `"locations"` (AB, SC, WS) has this weekend's project folder | copies NA's project to the locations that have none (as `261018 AB Project`, without `Backup/`). It is copied under a temporary name and renamed at the end, so a half-finished copy never looks sent. It never overwrites a folder that is already there and never runs by itself. |
|
||||||
| PROP OUT | a `.probundle` is in this weekend's folder of the Chronicles share (`/Volumes/Location Assets/261025`, read on the ProPresenter Mac). **SHARE NOT MOUNTED**: the share itself is not mounted there (2026-10-22: it had dropped off and the key said NOT IN 261025 although the bundle was there). The ProP Mac keeps it mounted by itself: a LaunchAgent (`org.waterschurch.keep-mounted.location-assets`, from `remote-access/mac-keep-mounted.sh`) looks every minute and at login, mounts it again with the Chronicles login saved in the Keychain, and unmounts and remounts it when it hangs after sleep or a network drop (log: `~/Library/Logs/keep-mounted-location-assets.log` on the ProP Mac). | starts that agent now and waits for the share (about 6 s), then looks again. Also an auto-fix. |
|
| PROP OUT | a `.probundle` is in this weekend's folder of the Chronicles share (`/Volumes/Location Assets/261025`, read on the ProPresenter Mac). **SHARE NOT MOUNTED**: the share itself is not mounted there (2026-10-22: it had dropped off and the key said NOT IN 261025 although the bundle was there). The ProP Mac keeps it mounted by itself: a LaunchAgent (`org.waterschurch.keep-mounted.location-assets`, from `remote-access/mac-keep-mounted.sh`) looks every minute and at login, mounts it again with the Chronicles login saved in the Keychain, and unmounts and remounts it when it hangs after sleep or a network drop (log: `~/Library/Logs/keep-mounted-location-assets.log` on the ProP Mac). | starts that agent now and waits for the share (about 6 s), then looks again. Also an auto-fix. |
|
||||||
| RESI VOX | the Resi song (PCO description says RESI, else the last song before the message) goes to the locations with its lead singer's mic: the lead from the description ("Genesis lead"), their VOX from the lineup screen ("[VOX 4] MIX 4"; PCO team positions if the lineup has none), against what the Resi AJA's `5 - Lead Vocal` channel (21) really receives, read from the card with Dante's own query (UDP 4440, read only). **RESI V2 NOT VOX 4** (red). Two leads ("Mike and DJ lead"): the song's Audio note in PCO says whose mic goes out ("V3" or a name); without one it is flagged, never switched: **2 LEADS: MIKE DJ**. Also only flagged: **JOSH NOT ON LINEUP**, **LEAD ON VOX 5: NO BUTTON**. The lineup is what counts: a PCO Audio note naming another VOX is only mentioned in the details. | presses that VOX's AJA button (Companion page 13, row 3, col 1-4: AJA ch 21 <- BOH-AD4Q-A ch n), then reads the AJA back. Also an auto-fix (any time, never while a deck records: the READY page is not looked at then). |
|
| RESI VOX | the Resi song (PCO description says RESI, else the last song before the message) goes to the locations with its lead singer's mic: the lead from the description ("Genesis lead"), their VOX from the lineup screen ("[VOX 4] MIX 4"; PCO team positions if the lineup has none), against what the Resi AJA's `5 - Lead Vocal` channel (21) really receives, read from the card with Dante's own query (UDP 4440, read only). **RESI V2 NOT VOX 4** (red). Two leads ("Mike and DJ lead"): the song's Audio note in PCO says whose mic goes out ("V3" or a name); without one it is flagged, never switched: **2 LEADS: MIKE DJ**. Also only flagged: **JOSH NOT ON LINEUP**, **LEAD ON VOX 5: NO BUTTON**. The lineup is what counts: a PCO Audio note naming another VOX is only mentioned in the details. | presses that VOX's AJA button (Companion page 13, row 3, col 1-4: AJA ch 21 <- BOH-AD4Q-A ch n), then reads the AJA back. Also an auto-fix (any time, never while a deck records: the READY page is not looked at then). |
|
||||||
| START | every service Planning Center lists this week (this location's Sunday and every special service: First / Together Tuesday, Morning Worship, ...) has its Ableton set. **NO SET SUN 11/1** (red when due): hold START. While it builds the key shows what it is doing (**SAVING JEHOVAH**, **COPYING 40/120**). **CONSOLIDATE THE LORD IS**: the saved set still has clips of that song transposed and not consolidated (read from the set file, so it goes once the set is saved consolidated). After a build, for a day: **NEW SONG GRACE** (not in Finished Songs: build it by hand, page 3 of the workflow PDF). See *START* below. | builds the missing sets (on the Tracks Mac, in the background), then consolidates every transposed clip in Live (step 9 below). Never runs by itself. |
|
| START | every service Planning Center lists this week (this location's Sunday and every special service: First / Together Tuesday, Morning Worship, ...) has its Ableton set. **NO SET SUN 11/1** (red when due): hold START. While it builds the key shows what it is doing (**SAVING JEHOVAH**, **COPYING 40/120**). **CONSOLIDATE THE LORD IS**: the saved set still has clips of that song transposed and not consolidated (read from the set file, so it goes once the set is saved consolidated). After a build, for a day: **NEW SONG GRACE** (not in Finished Songs: build it by hand, page 3 of the workflow PDF). See *START* below. | builds the missing sets (on the Tracks Mac, in the background), then consolidates every transposed clip in Live (step 9 below). Never runs by itself. |
|
||||||
|
|||||||
+239
-238
@@ -5,13 +5,13 @@
|
|||||||
"library": "~/Library/Application Support/companion/modules/bmd-atem-*/node_modules/atem-connection",
|
"library": "~/Library/Application Support/companion/modules/bmd-atem-*/node_modules/atem-connection",
|
||||||
"node": "/Applications/Companion [0-9]*.app/Contents/Resources/node-runtimes/node22/bin/node",
|
"node": "/Applications/Companion [0-9]*.app/Contents/Resources/node-runtimes/node22/bin/node",
|
||||||
"reference": "atem-reference.xml",
|
"reference": "atem-reference.xml",
|
||||||
"source_folder": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Production Team/Backup/NA/ATEM",
|
|
||||||
"silence": {
|
"silence": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"16": "Resi - RX1"
|
"16": "Resi - RX1"
|
||||||
},
|
},
|
||||||
"seconds": 30
|
"seconds": 30
|
||||||
}
|
},
|
||||||
|
"source_folder": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Production Team/Backup/NA/ATEM"
|
||||||
},
|
},
|
||||||
"auto_fix": {
|
"auto_fix": {
|
||||||
"after_seconds": 20,
|
"after_seconds": 20,
|
||||||
@@ -90,6 +90,20 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"fixes": {
|
"fixes": {
|
||||||
|
"ableset": {
|
||||||
|
"host": "tracks",
|
||||||
|
"kind": "ssh",
|
||||||
|
"label": "start AbleSet on the Tracks Mac if it is not running (minimized, for ProdDash)",
|
||||||
|
"params": {
|
||||||
|
"app": "AbleSet",
|
||||||
|
"host": "tracks",
|
||||||
|
"minimized": true,
|
||||||
|
"process": "AbleSet"
|
||||||
|
},
|
||||||
|
"run": "pgrep -xq AbleSet || { open -g -a AbleSet; i=0; while [ $i -lt 20 ]; do sleep 1; i=$((i+1)); n=$(osascript -e 'tell application \"System Events\" to count windows of process \"AbleSet\"' 2>/dev/null); if [ \"${n:-0}\" -gt 0 ]; then osascript -e 'tell application \"System Events\" to tell process \"AbleSet\" to set value of attribute \"AXMinimized\" of every window to true' >/dev/null 2>&1; break; fi; done; }",
|
||||||
|
"short": "ABLESET",
|
||||||
|
"template": "mac_start"
|
||||||
|
},
|
||||||
"ableton": {
|
"ableton": {
|
||||||
"host": "tracks",
|
"host": "tracks",
|
||||||
"kind": "ssh",
|
"kind": "ssh",
|
||||||
@@ -338,9 +352,15 @@
|
|||||||
"process": "ProPresenter",
|
"process": "ProPresenter",
|
||||||
"wait_seconds": 10
|
"wait_seconds": 10
|
||||||
},
|
},
|
||||||
|
"run": "APP=$(for a in /Applications/ProPresenter*.app; do [ -d \"$a\" ] && printf '%s|%s\\n' \"$(defaults read \"$a/Contents/Info\" CFBundleShortVersionString 2>/dev/null)\" \"$a\"; done | sort -t '|' -k1,1V | tail -1 | cut -d '|' -f2-); pkill -TERM -x ProPresenter; i=0; while pgrep -xq ProPresenter && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq ProPresenter && pkill -KILL -x ProPresenter; sleep 1; open \"$APP\"",
|
||||||
"short": "PROPRES",
|
"short": "PROPRES",
|
||||||
"template": "mac_restart",
|
"template": "mac_restart"
|
||||||
"run": "APP=$(for a in /Applications/ProPresenter*.app; do [ -d \"$a\" ] && printf '%s|%s\\n' \"$(defaults read \"$a/Contents/Info\" CFBundleShortVersionString 2>/dev/null)\" \"$a\"; done | sort -t '|' -k1,1V | tail -1 | cut -d '|' -f2-); pkill -TERM -x ProPresenter; i=0; while pgrep -xq ProPresenter && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq ProPresenter && pkill -KILL -x ProPresenter; sleep 1; open \"$APP\""
|
},
|
||||||
|
"ready_ableton_mix": {
|
||||||
|
"action": "ableton_mix",
|
||||||
|
"kind": "ready",
|
||||||
|
"label": "put Ableton's stems back where the routing template says and their in-ear send (A) to 0 dB",
|
||||||
|
"short": "MIX"
|
||||||
},
|
},
|
||||||
"ready_copy_tracks": {
|
"ready_copy_tracks": {
|
||||||
"action": "copy_tracks",
|
"action": "copy_tracks",
|
||||||
@@ -355,6 +375,13 @@
|
|||||||
"label": "put Resolume back on the Service deck, then look at the columns again",
|
"label": "put Resolume back on the Service deck, then look at the columns again",
|
||||||
"short": "CROSS"
|
"short": "CROSS"
|
||||||
},
|
},
|
||||||
|
"ready_light_timing": {
|
||||||
|
"action": "light_timing",
|
||||||
|
"kind": "ready",
|
||||||
|
"label": "move the lighting cues that are off onto the drum hit in the open Ableton set (then save the set)",
|
||||||
|
"never_auto": true,
|
||||||
|
"short": "CUES"
|
||||||
|
},
|
||||||
"ready_lineup": {
|
"ready_lineup": {
|
||||||
"action": "lineup_sync",
|
"action": "lineup_sync",
|
||||||
"kind": "ready",
|
"kind": "ready",
|
||||||
@@ -368,12 +395,32 @@
|
|||||||
"label": "write each song's timecode from the tracks into its LTC note in Planning Center",
|
"label": "write each song's timecode from the tracks into its LTC note in Planning Center",
|
||||||
"short": "LTC"
|
"short": "LTC"
|
||||||
},
|
},
|
||||||
|
"ready_mount_share": {
|
||||||
|
"action": "mount_share",
|
||||||
|
"kind": "ready",
|
||||||
|
"label": "mount Location Assets again on the ProPresenter Mac (its keep-mounted agent), then look for the bundle again",
|
||||||
|
"short": "MOUNT"
|
||||||
|
},
|
||||||
"ready_recheck": {
|
"ready_recheck": {
|
||||||
"action": "recheck",
|
"action": "recheck",
|
||||||
"kind": "ready",
|
"kind": "ready",
|
||||||
"label": "look at this weekend's checklist again now",
|
"label": "look at this weekend's checklist again now",
|
||||||
"short": "CHECK"
|
"short": "CHECK"
|
||||||
},
|
},
|
||||||
|
"ready_resi_vox": {
|
||||||
|
"action": "resi_vox",
|
||||||
|
"anytime": true,
|
||||||
|
"kind": "ready",
|
||||||
|
"label": "send the Resi song's lead singer's mic over Resi: press their VOX AJA button on page 13 (from PCO's lead and the lineup screen)",
|
||||||
|
"short": "RESI VOX"
|
||||||
|
},
|
||||||
|
"ready_start": {
|
||||||
|
"action": "start_week",
|
||||||
|
"kind": "ready",
|
||||||
|
"label": "build this week's Ableton sets (Sunday and special services) from Planning Center",
|
||||||
|
"never_auto": true,
|
||||||
|
"short": "START"
|
||||||
|
},
|
||||||
"rtpmidi_start": {
|
"rtpmidi_start": {
|
||||||
"host": "lighting",
|
"host": "lighting",
|
||||||
"kind": "ssh",
|
"kind": "ssh",
|
||||||
@@ -506,53 +553,6 @@
|
|||||||
"run": "tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul || (schtasks /Run /TN \"\\StatusPanel\\Start Vista\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul)",
|
"run": "tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul || (schtasks /Run /TN \"\\StatusPanel\\Start Vista\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul)",
|
||||||
"short": "VISTA",
|
"short": "VISTA",
|
||||||
"template": "win_start"
|
"template": "win_start"
|
||||||
},
|
|
||||||
"ready_ableton_mix": {
|
|
||||||
"action": "ableton_mix",
|
|
||||||
"kind": "ready",
|
|
||||||
"label": "put Ableton's stems back where the routing template says and their in-ear send (A) to 0 dB",
|
|
||||||
"short": "MIX"
|
|
||||||
},
|
|
||||||
"ready_light_timing": {
|
|
||||||
"action": "light_timing",
|
|
||||||
"kind": "ready",
|
|
||||||
"never_auto": true,
|
|
||||||
"short": "CUES",
|
|
||||||
"label": "move the lighting cues that are off onto the drum hit in the open Ableton set (then save the set)"
|
|
||||||
},
|
|
||||||
"ready_mount_share": {
|
|
||||||
"action": "mount_share",
|
|
||||||
"kind": "ready",
|
|
||||||
"short": "MOUNT",
|
|
||||||
"label": "mount Location Assets again on the ProPresenter Mac (its keep-mounted agent), then look for the bundle again"
|
|
||||||
},
|
|
||||||
"ready_start": {
|
|
||||||
"action": "start_week",
|
|
||||||
"kind": "ready",
|
|
||||||
"label": "build this week's Ableton sets (Sunday and special services) from Planning Center",
|
|
||||||
"never_auto": true,
|
|
||||||
"short": "START"
|
|
||||||
},
|
|
||||||
"ableset": {
|
|
||||||
"host": "tracks",
|
|
||||||
"kind": "ssh",
|
|
||||||
"label": "start AbleSet on the Tracks Mac if it is not running (minimized, for ProdDash)",
|
|
||||||
"params": {
|
|
||||||
"host": "tracks",
|
|
||||||
"process": "AbleSet",
|
|
||||||
"app": "AbleSet",
|
|
||||||
"minimized": true
|
|
||||||
},
|
|
||||||
"run": "pgrep -xq AbleSet || { open -g -a AbleSet; i=0; while [ $i -lt 20 ]; do sleep 1; i=$((i+1)); n=$(osascript -e 'tell application \"System Events\" to count windows of process \"AbleSet\"' 2>/dev/null); if [ \"${n:-0}\" -gt 0 ]; then osascript -e 'tell application \"System Events\" to tell process \"AbleSet\" to set value of attribute \"AXMinimized\" of every window to true' >/dev/null 2>&1; break; fi; done; }",
|
|
||||||
"short": "ABLESET",
|
|
||||||
"template": "mac_start"
|
|
||||||
},
|
|
||||||
"ready_resi_vox": {
|
|
||||||
"action": "resi_vox",
|
|
||||||
"kind": "ready",
|
|
||||||
"anytime": true,
|
|
||||||
"short": "RESI VOX",
|
|
||||||
"label": "send the Resi song's lead singer's mic over Resi: press their VOX AJA button on page 13 (from PCO's lead and the lineup screen)"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flap": {
|
"flap": {
|
||||||
@@ -912,10 +912,17 @@
|
|||||||
"ssh": "studio@10.1.7.39"
|
"ssh": "studio@10.1.7.39"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nav_hold_more": [
|
||||||
|
{
|
||||||
|
"ms": 3000,
|
||||||
|
"page": 98
|
||||||
|
}
|
||||||
|
],
|
||||||
"nav_hold_ms": 2000,
|
"nav_hold_ms": 2000,
|
||||||
"nav_keys": [
|
"nav_keys": [
|
||||||
"pagenum"
|
"pagenum"
|
||||||
],
|
],
|
||||||
|
"nav_locations_band": true,
|
||||||
"nav_tap_page": 1,
|
"nav_tap_page": 1,
|
||||||
"network": {
|
"network": {
|
||||||
"burst_connections": 4,
|
"burst_connections": 4,
|
||||||
@@ -929,6 +936,7 @@
|
|||||||
"page_hold_ms": 2000,
|
"page_hold_ms": 2000,
|
||||||
"page_name": "19\\nStatus",
|
"page_name": "19\\nStatus",
|
||||||
"ready": {
|
"ready": {
|
||||||
|
"ableton_osc": true,
|
||||||
"due": [
|
"due": [
|
||||||
{
|
{
|
||||||
"days": [
|
"days": [
|
||||||
@@ -952,8 +960,18 @@
|
|||||||
"start": "05:00"
|
"start": "05:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"ears_send": 0,
|
||||||
|
"ears_skip_groups": [
|
||||||
|
"RESI TRACKS",
|
||||||
|
"MIDI GROUP"
|
||||||
|
],
|
||||||
|
"finished_folders": [
|
||||||
|
"~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/Finished Songs",
|
||||||
|
"~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/Finished Custom Songs"
|
||||||
|
],
|
||||||
"folder_format": "{date} {loc} Project",
|
"folder_format": "{date} {loc} Project",
|
||||||
"interval_seconds": 120,
|
"interval_seconds": 120,
|
||||||
|
"light_library": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/LIGHTING CUES MIDI",
|
||||||
"lighting_track": "LIGHTING CUES",
|
"lighting_track": "LIGHTING CUES",
|
||||||
"lineup_skip_positions": [],
|
"lineup_skip_positions": [],
|
||||||
"lineup_teams": [
|
"lineup_teams": [
|
||||||
@@ -963,7 +981,8 @@
|
|||||||
"lineup_url": "http://127.0.0.1:24500/api/modules/band-lineup",
|
"lineup_url": "http://127.0.0.1:24500/api/modules/band-lineup",
|
||||||
"locations": [
|
"locations": [
|
||||||
"AB",
|
"AB",
|
||||||
"SC"
|
"SC",
|
||||||
|
"WS"
|
||||||
],
|
],
|
||||||
"ltc_campuses": [
|
"ltc_campuses": [
|
||||||
{
|
{
|
||||||
@@ -1016,26 +1035,35 @@
|
|||||||
"prop_url": "http://10.1.14.225:1025",
|
"prop_url": "http://10.1.14.225:1025",
|
||||||
"remote_timeout": 90,
|
"remote_timeout": 90,
|
||||||
"reset_day": "mon",
|
"reset_day": "mon",
|
||||||
|
"resi_vox": {
|
||||||
|
"aja": "STUDIO-A-Resi-AJA-SDI",
|
||||||
|
"buttons": {
|
||||||
|
"1": [
|
||||||
|
13,
|
||||||
|
3,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"2": [
|
||||||
|
13,
|
||||||
|
3,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
13,
|
||||||
|
3,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"4": [
|
||||||
|
13,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"channel": 21,
|
||||||
|
"mics": "BOH-AD4Q-A"
|
||||||
|
},
|
||||||
"resolume_deck": "Service",
|
"resolume_deck": "Service",
|
||||||
"resolume_url": "http://10.1.10.206:8080",
|
"resolume_url": "http://10.1.10.206:8080",
|
||||||
"site_folder": "NA",
|
|
||||||
"skip_songs": [],
|
|
||||||
"tracks_host": "tracks",
|
|
||||||
"vocal_positions": [
|
|
||||||
"Vocalist",
|
|
||||||
"[Leader]"
|
|
||||||
],
|
|
||||||
"finished_folders": [
|
|
||||||
"~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/Finished Songs",
|
|
||||||
"~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/Finished Custom Songs"
|
|
||||||
],
|
|
||||||
"tune_library": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/Waves Tune - midi Program Change",
|
|
||||||
"ableton_osc": true,
|
|
||||||
"ears_send": 0,
|
|
||||||
"ears_skip_groups": [
|
|
||||||
"RESI TRACKS",
|
|
||||||
"MIDI GROUP"
|
|
||||||
],
|
|
||||||
"routing": {
|
"routing": {
|
||||||
"+GUIDE": [
|
"+GUIDE": [
|
||||||
"Ext. Out",
|
"Ext. Out",
|
||||||
@@ -1230,34 +1258,14 @@
|
|||||||
"11/12 VOX"
|
"11/12 VOX"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"light_library": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/LIGHTING CUES MIDI",
|
"site_folder": "NA",
|
||||||
"resi_vox": {
|
"skip_songs": [],
|
||||||
"aja": "STUDIO-A-Resi-AJA-SDI",
|
"tracks_host": "tracks",
|
||||||
"channel": 21,
|
"tune_library": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Ableton/Waves Tune - midi Program Change",
|
||||||
"mics": "BOH-AD4Q-A",
|
"vocal_positions": [
|
||||||
"buttons": {
|
"Vocalist",
|
||||||
"1": [
|
"[Leader]"
|
||||||
13,
|
]
|
||||||
3,
|
|
||||||
1
|
|
||||||
],
|
|
||||||
"2": [
|
|
||||||
13,
|
|
||||||
3,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"3": [
|
|
||||||
13,
|
|
||||||
3,
|
|
||||||
3
|
|
||||||
],
|
|
||||||
"4": [
|
|
||||||
13,
|
|
||||||
3,
|
|
||||||
4
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"ready_page": {
|
"ready_page": {
|
||||||
"back_pos": [
|
"back_pos": [
|
||||||
@@ -1479,78 +1487,78 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"fix": "ready_light_timing",
|
||||||
|
"item": "light_timing",
|
||||||
|
"type": "ready"
|
||||||
|
}
|
||||||
|
],
|
||||||
"id": "rd_light_time",
|
"id": "rd_light_time",
|
||||||
"label": "LIGHT TIMING",
|
"label": "LIGHT TIMING",
|
||||||
"pos": [
|
"pos": [
|
||||||
1,
|
1,
|
||||||
5
|
5
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready",
|
|
||||||
"item": "light_timing",
|
|
||||||
"fix": "ready_light_timing"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"fix": "ready_recheck",
|
||||||
|
"item": "keys",
|
||||||
|
"type": "ready"
|
||||||
|
}
|
||||||
|
],
|
||||||
"id": "rd_keys",
|
"id": "rd_keys",
|
||||||
"label": "SONG KEYS",
|
"label": "SONG KEYS",
|
||||||
"pos": [
|
"pos": [
|
||||||
0,
|
0,
|
||||||
6
|
6
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready",
|
|
||||||
"item": "keys",
|
|
||||||
"fix": "ready_recheck"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"fix": "ready_recheck",
|
||||||
|
"item": "tune",
|
||||||
|
"type": "ready"
|
||||||
|
}
|
||||||
|
],
|
||||||
"id": "rd_tune",
|
"id": "rd_tune",
|
||||||
"label": "W TUNE",
|
"label": "W TUNE",
|
||||||
"pos": [
|
"pos": [
|
||||||
0,
|
0,
|
||||||
7
|
7
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready",
|
|
||||||
"item": "tune",
|
|
||||||
"fix": "ready_recheck"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"fix": "ready_ableton_mix",
|
||||||
|
"item": "routing",
|
||||||
|
"type": "ready"
|
||||||
|
}
|
||||||
|
],
|
||||||
"id": "rd_routing",
|
"id": "rd_routing",
|
||||||
"label": "ROUTING",
|
"label": "ROUTING",
|
||||||
"pos": [
|
"pos": [
|
||||||
2,
|
2,
|
||||||
2
|
2
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready",
|
|
||||||
"item": "routing",
|
|
||||||
"fix": "ready_ableton_mix"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"fix": "ready_ableton_mix",
|
||||||
|
"item": "ears",
|
||||||
|
"type": "ready"
|
||||||
|
}
|
||||||
|
],
|
||||||
"id": "rd_ears",
|
"id": "rd_ears",
|
||||||
"label": "IN EARS",
|
"label": "IN EARS",
|
||||||
"pos": [
|
"pos": [
|
||||||
2,
|
2,
|
||||||
3
|
3
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready",
|
|
||||||
"item": "ears",
|
|
||||||
"fix": "ready_ableton_mix"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1563,39 +1571,80 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"fix": "ready_start",
|
||||||
|
"item": "start",
|
||||||
|
"type": "ready"
|
||||||
|
}
|
||||||
|
],
|
||||||
"id": "rd_start",
|
"id": "rd_start",
|
||||||
"label": "START",
|
"label": "START",
|
||||||
"pos": [
|
"pos": [
|
||||||
3,
|
3,
|
||||||
3
|
3
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready",
|
|
||||||
"item": "start",
|
|
||||||
"fix": "ready_start"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"fix": "ready_resi_vox",
|
||||||
|
"item": "resi_vox",
|
||||||
|
"type": "ready"
|
||||||
|
}
|
||||||
|
],
|
||||||
"id": "rd_resi_vox",
|
"id": "rd_resi_vox",
|
||||||
"label": "RESI VOX",
|
"label": "RESI VOX",
|
||||||
"pos": [
|
"pos": [
|
||||||
2,
|
2,
|
||||||
4
|
4
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready",
|
|
||||||
"item": "resi_vox",
|
|
||||||
"fix": "ready_resi_vox"
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"page": 21,
|
"page": 21,
|
||||||
"page_name": "21\\nReady"
|
"page_name": "21\\nReady"
|
||||||
},
|
},
|
||||||
|
"resi_events": {
|
||||||
|
"margin_minutes": 10,
|
||||||
|
"pco_specials": true,
|
||||||
|
"weekly": [
|
||||||
|
{
|
||||||
|
"days": [
|
||||||
|
"mon"
|
||||||
|
],
|
||||||
|
"end": "10:00",
|
||||||
|
"start": "09:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"days": [
|
||||||
|
"wed"
|
||||||
|
],
|
||||||
|
"end": "22:00",
|
||||||
|
"start": "16:30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"days": [
|
||||||
|
"sun"
|
||||||
|
],
|
||||||
|
"end": "09:45",
|
||||||
|
"start": "08:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"days": [
|
||||||
|
"sun"
|
||||||
|
],
|
||||||
|
"end": "11:45",
|
||||||
|
"start": "09:50"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"days": [
|
||||||
|
"sun"
|
||||||
|
],
|
||||||
|
"end": "13:50",
|
||||||
|
"start": "11:50"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"restart_page": {
|
"restart_page": {
|
||||||
"back_pos": [
|
"back_pos": [
|
||||||
2,
|
2,
|
||||||
@@ -1737,9 +1786,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fix": "arena",
|
||||||
"id": "rs_arena",
|
"id": "rs_arena",
|
||||||
"label": "ARENA",
|
"label": "ARENA",
|
||||||
"fix": "arena",
|
|
||||||
"pos": [
|
"pos": [
|
||||||
1,
|
1,
|
||||||
5
|
5
|
||||||
@@ -1749,14 +1798,14 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fix": "ableset",
|
||||||
"id": "rs_ableset",
|
"id": "rs_ableset",
|
||||||
"label": "ABLESET",
|
"label": "ABLESET",
|
||||||
"fix": "ableset",
|
|
||||||
"toggle": "ableset",
|
|
||||||
"pos": [
|
"pos": [
|
||||||
1,
|
1,
|
||||||
6
|
6
|
||||||
]
|
],
|
||||||
|
"toggle": "ableset"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"page": 20,
|
"page": 20,
|
||||||
@@ -1778,6 +1827,12 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"site": {
|
"site": {
|
||||||
|
"admin_ips": [
|
||||||
|
"10.6.7.38"
|
||||||
|
],
|
||||||
|
"admin_keys": [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKCGDLncJQfNPpoZUy/5BQWGNtyaU1/xKXwHQWx3ETa christian-laptop@waters"
|
||||||
|
],
|
||||||
"editing_code": "7381",
|
"editing_code": "7381",
|
||||||
"id": "na",
|
"id": "na",
|
||||||
"ingest_hostname": "na-ingest.local",
|
"ingest_hostname": "na-ingest.local",
|
||||||
@@ -1787,13 +1842,7 @@
|
|||||||
],
|
],
|
||||||
"ingest_name": "NA Ingest",
|
"ingest_name": "NA Ingest",
|
||||||
"live_services": [],
|
"live_services": [],
|
||||||
"name": "North Attleboro",
|
"name": "North Attleboro"
|
||||||
"admin_ips": [
|
|
||||||
"10.6.7.38"
|
|
||||||
],
|
|
||||||
"admin_keys": [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKCGDLncJQfNPpoZUy/5BQWGNtyaU1/xKXwHQWx3ETa christian-laptop@waters"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"spotify": {
|
"spotify": {
|
||||||
"name": "Christian EDM 2026",
|
"name": "Christian EDM 2026",
|
||||||
@@ -2214,10 +2263,10 @@
|
|||||||
"type": "mdns"
|
"type": "mdns"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"debounce_seconds": 120,
|
||||||
"instance": "NA Tracks",
|
"instance": "NA Tracks",
|
||||||
"name": "TRACKS MIDI",
|
"name": "TRACKS MIDI",
|
||||||
"type": "mdns",
|
"type": "mdns"
|
||||||
"debounce_seconds": 120
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "TRACKS IN",
|
"name": "TRACKS IN",
|
||||||
@@ -2232,9 +2281,9 @@
|
|||||||
"type": "midi_wired"
|
"type": "midi_wired"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "tune_rx",
|
|
||||||
"host": "studiob",
|
"host": "studiob",
|
||||||
"name": "STUDIO B"
|
"name": "STUDIO B",
|
||||||
|
"type": "tune_rx"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "midi",
|
"id": "midi",
|
||||||
@@ -2417,11 +2466,11 @@
|
|||||||
"type": "atem"
|
"type": "atem"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "atem",
|
|
||||||
"part": "silence",
|
|
||||||
"msg": "RESI AUDIO SILENT",
|
|
||||||
"fix": "atem_audio",
|
"fix": "atem_audio",
|
||||||
"quiet": "resi_events"
|
"msg": "RESI AUDIO SILENT",
|
||||||
|
"part": "silence",
|
||||||
|
"quiet": "resi_events",
|
||||||
|
"type": "atem"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fix": "atem_camera",
|
"fix": "atem_camera",
|
||||||
@@ -2465,9 +2514,9 @@
|
|||||||
"checks": [
|
"checks": [
|
||||||
{
|
{
|
||||||
"conn": "RESI_Decoder",
|
"conn": "RESI_Decoder",
|
||||||
|
"quiet": "resi_events",
|
||||||
"tag": "DECODER",
|
"tag": "DECODER",
|
||||||
"type": "conn",
|
"type": "conn"
|
||||||
"quiet": "resi_events"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"host": "10.1.10.203",
|
"host": "10.1.10.203",
|
||||||
@@ -2486,16 +2535,16 @@
|
|||||||
"url": "http://10.1.10.202/"
|
"url": "http://10.1.10.202/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conn": "resi-studio-cues",
|
|
||||||
"type": "conn",
|
|
||||||
"amber": true,
|
"amber": true,
|
||||||
"quiet": "resi_events"
|
"conn": "resi-studio-cues",
|
||||||
|
"quiet": "resi_events",
|
||||||
|
"type": "conn"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CLOUD",
|
"name": "CLOUD",
|
||||||
|
"quiet": "resi_events",
|
||||||
"type": "http",
|
"type": "http",
|
||||||
"url": "https://central.resi.io/",
|
"url": "https://central.resi.io/"
|
||||||
"quiet": "resi_events"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "resi",
|
"id": "resi",
|
||||||
@@ -2713,41 +2762,41 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "autofix",
|
"id": "autofix",
|
||||||
"label": "AUTO-FIX",
|
|
||||||
"kind": "autofix",
|
"kind": "autofix",
|
||||||
|
"label": "AUTO-FIX",
|
||||||
"pos": [
|
"pos": [
|
||||||
3,
|
3,
|
||||||
7
|
7
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ableset",
|
|
||||||
"label": "ABLESET",
|
|
||||||
"kind": "bypass",
|
|
||||||
"bypass": {
|
"bypass": {
|
||||||
"fixes": [
|
"fixes": [
|
||||||
"ableset"
|
"ableset"
|
||||||
],
|
],
|
||||||
"on_text": "AUTO-OPEN\nOFF",
|
"off_text": "AUTO-OPEN\nON",
|
||||||
"off_text": "AUTO-OPEN\nON"
|
"on_text": "AUTO-OPEN\nOFF"
|
||||||
}
|
},
|
||||||
|
"id": "ableset",
|
||||||
|
"kind": "bypass",
|
||||||
|
"label": "ABLESET"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "trk_ingest_off",
|
|
||||||
"label": "TRK INGEST",
|
|
||||||
"kind": "bypass",
|
|
||||||
"bypass": {
|
"bypass": {
|
||||||
"peers": [
|
"auto": "autofix_hours",
|
||||||
"NA Ingest"
|
|
||||||
],
|
|
||||||
"hosts": [
|
"hosts": [
|
||||||
"tracks"
|
"tracks"
|
||||||
],
|
],
|
||||||
"auto": "autofix_hours",
|
"names_only": true,
|
||||||
"on_text": "OFF IN\nAUTO-FIX HOURS",
|
|
||||||
"off_text": "ALLOWED",
|
"off_text": "ALLOWED",
|
||||||
"names_only": true
|
"on_text": "OFF IN\nAUTO-FIX HOURS",
|
||||||
}
|
"peers": [
|
||||||
|
"NA Ingest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"id": "trk_ingest_off",
|
||||||
|
"kind": "bypass",
|
||||||
|
"label": "TRK INGEST"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"timing": {
|
"timing": {
|
||||||
@@ -2758,53 +2807,5 @@
|
|||||||
"command": "sp_cmd",
|
"command": "sp_cmd",
|
||||||
"heartbeat": "sp_hb",
|
"heartbeat": "sp_hb",
|
||||||
"state": "sp_state"
|
"state": "sp_state"
|
||||||
},
|
|
||||||
"nav_locations_band": true,
|
|
||||||
"nav_hold_more": [
|
|
||||||
{
|
|
||||||
"ms": 3000,
|
|
||||||
"page": 98
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"resi_events": {
|
|
||||||
"weekly": [
|
|
||||||
{
|
|
||||||
"days": [
|
|
||||||
"sun"
|
|
||||||
],
|
|
||||||
"start": "07:30",
|
|
||||||
"end": "09:15"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"days": [
|
|
||||||
"sun"
|
|
||||||
],
|
|
||||||
"start": "09:30",
|
|
||||||
"end": "11:15"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"days": [
|
|
||||||
"sun"
|
|
||||||
],
|
|
||||||
"start": "11:30",
|
|
||||||
"end": "13:15"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"days": [
|
|
||||||
"mon"
|
|
||||||
],
|
|
||||||
"start": "09:00",
|
|
||||||
"end": "10:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"days": [
|
|
||||||
"wed"
|
|
||||||
],
|
|
||||||
"start": "16:30",
|
|
||||||
"end": "22:00"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"margin_minutes": 10,
|
|
||||||
"pco_specials": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ CONFIG["auto_fix"]["log_dir"] = tempfile.mkdtemp(prefix="sp-autolog-") # never
|
|||||||
# ...and their own auto-fix hours, so the location can change its own on the settings page.
|
# ...and their own auto-fix hours, so the location can change its own on the settings page.
|
||||||
CONFIG["auto_fix"]["windows"] = [{"days": ["wed"], "start": "16:00", "end": "21:00"}, {"days": ["sun"], "start": "06:30", "end": "13:30"}]
|
CONFIG["auto_fix"]["windows"] = [{"days": ["wed"], "start": "16:00", "end": "21:00"}, {"days": ["sun"], "start": "06:30", "end": "13:30"}]
|
||||||
WEDNESDAY = datetime(2026, 10, 7, 15, 0).timestamp()
|
WEDNESDAY = datetime(2026, 10, 7, 15, 0).timestamp()
|
||||||
|
# ...and their own Resi event times (the settings page moves NA's).
|
||||||
|
CONFIG["resi_events"]["weekly"] = [{"days": ["sun"], "start": s, "end": e} for s, e in (("07:30", "09:15"), ("09:30", "11:15"), ("11:30", "13:15"))] + \
|
||||||
|
[{"days": ["mon"], "start": "09:00", "end": "10:00"}, {"days": ["wed"], "start": "16:30", "end": "22:00"}]
|
||||||
|
|
||||||
|
|
||||||
def healthy_snapshot(now):
|
def healthy_snapshot(now):
|
||||||
|
|||||||
Reference in New Issue
Block a user