READY: START builds the week's Ableton sets (Sunday and special services) from Planning Center

Hold START on Monday: last weekend's songs go to Finished Songs (a changed one parks the version it
came from as z...), then each service PCO lists this week (weekend + Special Services / Morning
Worship...; First / Together Tuesday in Projects/FIRST TUESDAY) gets 'YYMMDD NA Project' built from
the newest weekend set: locators, tempo map and TEMPO clips, Waves Tune cues, songs from Finished
Songs (transposed Complex Pro when only another key exists), markers / guide / lighting cues on the
dedicated tracks, pads, routing and send A at 0 dB, audio copied in with an Ableton Project Info folder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-22 12:38:09 -04:00
co-authored by Claude Opus 5.5
parent e2add3b27e
commit 0d655bff3c
10 changed files with 2027 additions and 7 deletions
+42 -3
View File
@@ -131,7 +131,7 @@ HyperDeck is recording). **STATUS PAGE** (bottom left) goes back.
| row 0 (Ableton) | TRACKS | FOH MIX | BOH MIX (tap) | LIGHTS | MIDI | SONG KEYS | W TUNE |
| row 1 (ProP / Resolume) | PROP | TIMECODE | BKGDS | LED CROSS | LIGHT TIMING | every blinder flash and FX cue (notes 30-39 on `LIGHTING CUES`: Blinder Flash 1-3, Blinder FX 1-5, named from `Ableton/LIGHTING CUES MIDI`) lands on the hit in the `Drums (Live)` stem under it, even when that clip is deactivated because the drummer plays live. Each cue's moment in the stem comes from the tempo map; the Tracks Mac listens in 2.5 ms steps out to almost a 16th either way, finds the strongest hit and where it starts (halfway up its rise); what is under the cue is looked at from 10 ms before it to 25 ms after (the stems' hits start a little after the grid). Each song's cues that sit on solid hits set what "on time" is for that song (its stem's hits start 7-12 ms after the grid). **14 CUES OFF** (amber): a strong hit more than 25 ms from the cue while the cue sits on a quiet spot; a cue already on a solid hit (a double hit follows) is never named. The details say `JEHOVAH bar 405.3.2: Blinder Flash 2 is 145 ms after the hit (about a 16th)` (bars as Live shows them, 4/4). Listened to once per saved set. | moves every cue that is off onto its hit in the open set (all flash/FX notes on that 16th; onto the 16th grid when the hit is within 10 ms of it), keeping where each cue ends, then saves the set (File › Save Live Set in Live, clicked through System Events: `/usr/bin/osascript` has Accessibility on the Tracks Mac since 2026-10-22; `ready.light_autosave`), but only when the set open in Live is this weekend's. If it cannot save, the key says **SAVE SET (n MOVED)** until the set is saved; Cmd+Z in Live takes a move back. Never runs by itself. Uses the status panel's command in AbletonOSC (`tools/abletonosc`: `statuspanel.py` plus a hook at the end of AbletonOSC's `abletonosc/__init__.py`; an AbletonOSC update removes it, so run `tools/abletonosc/install.sh` again, then restart Companion's `ableton` connection) |
| row 2 (backstage) | LINEUP TV | ROUTING | IN EARS | | | | |
| row 3 (outgoing) | TRACKS OUT | 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. |
| row 3 (outgoing) | TRACKS OUT | PROP OUT | START | | | | |
The READY key at row 3 col 7 (and the one on the status page) shows how many keys still have something to do and
the first of them.
@@ -163,7 +163,8 @@ everything on the page at once.
| 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 |
| 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. |
| PROP OUT | a `.probundle` was saved to `Location Assets/ProPresenter` since Monday | looks again |
| 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. |
| 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**). After a build, for a day: **CONSOLIDATE THE LORD IS** (a song transposed to its PCO key: consolidate it in Live), **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). Never runs by itself. |
**Where the answers come from:**
- **Planning Center:** ProdDash's own login on this Mac (`~/Library/Application Support/ProdDash/modules.json`, module `pco-plan`). The plan is today's, else the next one, which is the same plan the lineup TV picks.
@@ -175,9 +176,47 @@ everything on the page at once.
listens for its answers on NA Ingest, so straight after each read NA Ingest asks it for the tempo and it answers
Companion again.
Nothing on the READY page writes to Companion, ProPresenter or the Ableton set file. ROUTING and IN EARS' fix changes
Nothing on the READY page writes to Companion, ProPresenter or an Ableton set file (START only writes new sets and Finished Songs folders). ROUTING and IN EARS' fix changes
only the open set in Live (outputs and send A), and only tracks whose name is still where it was a moment before.
### START: the week's Ableton sets (Monday)
Hold **START** (READY page, row 3 col 3) on Monday. `readiness.py` asks Planning Center for every service from today
until the Thursday after Sunday: NA's weekend service type (`pco_service_type`) and the service types next to it in
PCO (`ready.start_types`: Special Services, Special Events, Morning Worship, Forge & Flourish; not youth, kids or
classes, `ready.start_skip_types`). A plan counts when it has songs with a key. On a Monday that is Sunday and, when
there is one, First / Together Tuesday. Each set is named the year-month-day way plus the location: Sunday 1 Nov 2026
is `Projects/NA/261101 NA Project`, a First Tuesday is `Projects/FIRST TUESDAY/261103 NA First Tuesday Project`, any
other special service `Projects/NA/<date> NA <plan title> Project`.
`ableton_start.py` then runs on the Tracks Mac (detached, at low priority), doing the workflow PDF's steps:
1. **Last weekend's songs to Finished Songs.** Each song group of the newest weekend set goes to
`Finished Songs/TITLE [KEY]` (key from its locator), with its arrangement markers, lighting cues and guide inside
the group and its audio copied in. A song that matches a saved version (any key, parked or not) is left alone.
A changed one replaces the version it was made from (`CAN'T HELP BUT PRAISE LM [Eb]` for a group called
`CAN'T HELP BUT PRAISE`), which is parked first as `zCAN'T HELP BUT PRAISE LM [Eb]`.
2. **A new set from the newest weekend set:** its songs, pads, Waves Tune cues and marker, guide, loop-guide and
lighting clips go; the groups, the numbered locators (and their computer keys 1-9), the loop locators and the loop
cues stay. Empty loop cues are dropped.
3. **Locators** `N- TITLE - KEY` from PCO: 1 Call to Worship (first song's key and tempo), the songs, then Salvation
(the song after the Salvation moment, a TAG, else the last song). Fewer songs: Salvation moves up a slot (as
"5- SALVATION" did with 3 songs); more: slots are added like the last one. A song too long for its slot pushes the
loop locators, loop cues and later slots along in whole bars, so a loop never fires inside a song.
4. **Tempo map** and one **TEMPO** label clip per tempo (`128.00 BPM`). The tempo is the one the song's audio was
cut at; a different PCO tempo is named in the log.
5. **Waves Tune** key cue at every locator (minor keys use their relative major).
6. **Each song from Finished Songs** at its locator, in its PCO key if that version exists, else the nearest key
transposed the PDF's way (warp on, Complex Pro, formants 0, transpose) and named on the key, because consolidating
is done in Live. Its markers, guide and lighting cues go onto `SECTIONS`, `+GUIDE` and `LIGHTING CUES`.
7. **Pads**: the Call to Worship pad in the first song's key, an ending pad per song in its key, run past its loop,
Salvation's.
8. **Routing** per `ready.routing` and **send A at 0 dB** on every stem.
Every audio file is copied into the new project (as Collect All and Save does) with an `Ableton Project Info` folder
(Live finds no audio without it: 2026-10-22). A set that is already there is never touched; a new one is built as
`<name>.building` and renamed when complete. Progress: `~/Library/Caches/status-panel-start.json` on the Tracks Mac.
START is on where this location sends its tracks to others (`locations`), or with `ready.start` set.
**Another location:** copy `"ready_page"`, `"ready"`, the four `ready_*` fixes and the READY tile from this config,
then change these in `"ready"`:
- `pco_service_type`