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
  • tests
  • test_lcxl3_latch_carry.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    lcxl3: a latch is carried across a track change, not cleared · ce663177
    PLN, from the stage: "moving from track X to Y, i had to press states like
    ^42 twice to 'apply their state'? was weird". ^42 is row E, column 2 — a
    driver-owned latch.
    
    carry_values deliberately emits no CC for buttons, because a 0 into a midiOn
    gate is someCyclesBy 0 and the stream stops playing. It also cleared the
    driver's latch, on the reasoning that LEDs should stop lying across a change.
    Those two halves contradict: nothing is sent, so Tidal's bus still holds 127,
    while the driver now believes 0. The next press computes 'not False' = ON and
    re-sends 127 into a bus already at 127 — inaudible — and the press after it
    closes the gate he was trying to open.
    
    Not a hypothesis. The lcxl3-driver journal logged 37 of these across 14 of
    the 2026-09-24 set's 15 track changes, and the service runs without
    --no-latch, with Midi Through cut, so the doubled-CC path is not involved.
    
    The fix is a deletion: the latch IS what Tidal sees, so it survives exactly
    as the CC value does. Row F stays momentary — its release travels the generic
    path and really does send 0. A carried latch now paints lit under the new
    track's label, which is true, and doubles as the ghost-gate indicator this
    surface never had.
    
    The test's own assertions are checked against the pre-fix code: both fail
    there.
    PLN (Algolia) authored Sep 25, 2026
    ce663177
test_lcxl3_latch_carry.py 4.1 KB
EditWeb IDE
×

Replace test_lcxl3_latch_carry.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.