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
  • fader-baseline.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    feat(faders): stop depending on PLN remembering to raise them · 080a203c
    Third session running, he raised faders by hand and hit Ctrl+S, then asked the
    right question:
    
        "ok raised and saved 10 and 12, saved, check again.
         but ideally we should not depend in that?"
    
    He is right. The gate CAUGHT the problem all three times — the dependency was
    never on the check, it was on him having hands free to fix it. On a Saturday at
    19:00 in a field that is not a dependency you want.
    
    THE MECHANISM, now understood: the Ardour session IS the boot state. He ends a
    set with the faders pulled down, which is what you do at the end of a set,
    Ardour saves that, and the next launch comes up silent. Today's save had NINE of
    twelve at -inf, and all 15 setlist tracks would have lost an orbit — d10 carries
    the riser convention (#33), so all ten risers would have been silent and he
    would never have heard them go.
    
    tools/fader-baseline.py: --capture / --check / --restore.
    
    WHY THIS IS ALLOWED TO WRITE FADERS when the standing rule says never to. The
    rule exists for three reasons — it desyncs the file from the physical desk,
    CC77 down is total silence, and levels are MUSICAL INTENT an agent must not
    invent. All three are about INVENTING a level on a LIVE desk. This does neither:
    it replays a value PLN set and approved (stamped with date and source session),
    it refuses to write under a live session so the desk always wins, and it can
    only address routes named "Tidal NN" — Master, monitor and busses are not
    reachable by this tool at all. It writes a .bak first, because a corrupted
    performance session six days out is not a recoverable mistake.
    
    --capture REFUSES if any fader is silent. Capturing end-of-set silence as the
    baseline would enshrine the exact bug this undoes.
    
    Baseline captured while the mix was green: 12 faders, 01 at 0.0 dB through 09/12
    at +6.0 dB.
    
    PROVEN BY MUTATION on a COPY, never his live session: pull the same nine faders
    to 0.0, --check reports all nine with their baseline deltas and exits 1,
    --restore puts them back, and check-mix.py independently agrees every orbit
    reaches master again.
    
    AND THE TEST FOUND A REAL BUG IN THE GUARD. The first version asked "is ANY
    Ardour running" — the safe-LOOKING answer and the wrong one, because it refuses
    to repair a session nobody has open, and it made the restore path untestable
    while his live session was up. The hazard is writing UNDER a live session, so
    the guard now matches on the resolved session path. Still refuses his open one;
    no longer refuses everything.
    
    Wired in two places: a HARD "fader baseline" check in the gate, and a --converge
    action that restores automatically when Ardour is closed. gig-up: GO, and
    --converge is a clean no-op on a healthy rig.
    PLN (Algolia) authored Aug 02, 2026
    080a203c
fader-baseline.py 10.1 KB
EditWeb IDE
×

Replace fader-baseline.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.