Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
T
Tidal
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • PLN
  • Tidal
  • Repository

Switch branch/tag
  • Tidal
  • tools
  • gig-metadata.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    fix(metadata): teach gig-metadata both segment shapes, and refuse to guess · f584a1c2
    The OPAL tracks.json on the website still carried the pre-#148 tab-focus
    boundaries, drifting up to 50 s from the measured cuts — and that file feeds
    both the site and Slopmotion, so the visualist would have been cutting to
    timecodes that no longer describe the audio.
    
    Regenerating it should have been one command, except the two sides of the
    pipeline describe a segment differently:
    
      {name, start_s, end_s}   what this tool was built for — keyed by .tidal stem
      {title, start, end}      what the mastering side produces (segments_v3.json)
    
    Rather than add a converter script beside it, the tool now accepts both. One
    parser per concept: "a segments file" is one idea and should have one reader,
    not a reader plus a shim that can disagree with it.
    
    The v3 shape is matched to the setlist BY TITLE, never by position. Position
    would work today and silently pair the wrong boundary with the wrong track the
    first time a soundcheck row or an unplayed track shifts the list — and this is
    exactly the class of bug #148 already was. An unmatched title is therefore a
    hard failure that prints both sides, not a warning.
    
    That strictness paid for itself on the first run. Two titles failed to match:
    
        "There's Something About Drums"  vs  "There's **Something About Drums** <3"
        "Perfect"                        vs  "Perfect <3"
    
    backlog.md is prose written for a human, so names carry markdown emphasis and
    hearts. The fold strips punctuation but KEEPS DIGITS — so `<3` survived as a
    trailing `3` and `Perfect` folded to "perfect3", matching nothing. Stripping
    `<3` before the alphanumeric fold is the fix, and the ordering of those two
    steps is the whole bug.
    
    Validated by diffing the regenerated file against the canonical one field by
    field: names, order, bpmRange, styleDistribution and all 60 samplePacks are
    byte-identical; only start/end/duration moved, on 13-15 of 15 tracks, plus
    totalDuration_s 4809 -> 4769.1. Worst drift Perfect +50 s, then Gimme Acid +33 s
    and Ghosts +32 s. venue and stage are passed through verbatim — omitting the
    flags drops them, which the diff caught before anything was written.
    PLN (Algolia) authored Aug 14, 2026
    f584a1c2
gig-metadata.py 7.91 KB
EditWeb IDE
×

Replace gig-metadata.py

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.