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
  • foundry
  • tests
  • test_loops.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    feat(foundry): window-locked rotation — co-exported stems rotate by ONE shared slot · 3f9c27df
    Refinement caught before re-cutting the real kits: superfreak drums and
    bass ship from the SAME window (107.21s, 4 bars). If each stem rotated
    to its own strongest attack, their relative groove could shift by whole
    beats — bass's phrase-start is not necessarily on the drums' 1, and the
    kit is played together (loopAt on a common cycle), so relative phase
    between kit loops is musical content.
    
    export_take now derives the downbeat slot ONCE per shared time window
    from its most rhythmic stem (drums > bass > other > vocals priority)
    and applies that same slot to every stem of the window
    (_rotate_to_downbeat force_slot; per-stem roll still zc-snaps within
    ±10 ms on the stem's own mono ref). Stems at different windows keep
    independent rotation. Stem reads are cached (each stem was loaded twice
    otherwise).
    
    Test: two-stem synthetic window, drums downbeat at slot 3, other's own
    loudest attack at slot 6 — drums' marker must land at 0 and other's at
    3 (= 6−3, following drums), not 0. 86 passed.
    PLN (Algolia) authored Jul 11, 2026
    3f9c27df
test_loops.py 17.1 KB
EditWeb IDE
×

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