-
feat(take-segments): the tracklist was in the gig-log all along · 82cb436e
Splitting a livecoded set by listening to it is hard, and we have the scars for it: orbits stay up across a transition, there is no silence at the seam, and a gap-based detector finds the breakdowns instead of the track changes. But gig-log has been writing the answer at 1 Hz this whole time. Every time the active .tidal file changes in Pulsar it records {"k":"track", "path":"live/collab/raph/mafia_sans_serif.tidal", "from":"live/midi/nova/dnb/liquid/you_my_sunshine.tidal"} which is ground truth for WHAT was playing, for free, with no DSP. The audio never had to be interrogated at all. THE ONE COMPLICATION is that PLN tabs around while he plays — glancing at the next track, checking a helper, flicking back. Take95 contains wap -> do_it_right -> wap -> do_it_right inside 90 seconds. So a segment shorter than --min-dwell is a GLANCE and gets absorbed into whichever NEIGHBOUR is longer (the track you were on, not the one you peeked at). Debouncing needs a fixed-point loop, not one pass: dropping a glance can leave two spans of the same track adjacent, merging those can leave a span that is still under threshold. Take95's take_5_drops/do_it_right flicker takes three rounds to settle. 29 raw events -> 11 tracks. Window comes from the AUDIO (soxi duration + mtime of the stems), not from the log, so a recorder still running after the transport stopped cannot stretch the take. Titles come from tools/setlist.py, so a rename in backlog.md reaches the ID3 tag — the SSOT rule now extends all the way to the export (#123). Emits the --segments shape `tidal-ears master split` already accepts, so the mastering pipeline needs no changes. Take95 (2026-08-02, 61.2 min): 11 tracks, bombe_dj through you_my_sunshine — which is exactly where PLN said he stopped ("didnt play desire/revolution/ hammer").PLN (Algolia) authored82cb436e
×