1@README.md 2 3## Notes for agents 4 5**Stop playback before playing `song.js`.** Its section masks count from cycle 0. 6 7**Every mask is 64 steps.** The last 4 bars are the `weide` section: the 10.2 s theme holds 3 bars (`.clip(3)`) and fades over the fourth (`.release(1.3)`, seconds), so it ends with its section instead of ringing past it. 8 9**The harmony moves every two bars on purpose.** Each vocoded line is rendered on one chord (C, G, Am, F voicings in the samples provenance), so it must start on the first bar of its chord. `tftypesafe` is rendered on C and sped up to fit two bars at 180 bpm. 10 11**The XP riff's speeds are pitches.** `tfxperror` is centred on C (measured: C4 → G3 → C3), so speed 1 = C and the riff's ratios spell the chord tones. Swap the sample and they are no longer in key. 12 13**Each drop section has its own four bars of amen edits** (`edits`, keyed by section). Sections start on multiples of 4, so a 4-bar row plays only in its own section; a longer row would put the wrong bars in a repeated section. 14 15**Lines, the intro riff and the Weide theme are not parts.** They play outside `part()` and the energy, so Jev can neither mute nor quiet them. Don't move them back. 16 17**Tempo-bound values:** `tfohno` fills exactly bar 36 (1.31 s), the chorus stutters start 0.5 s into bars 20 and 44 after the memes' last words, transitions start on beat 2 after the line tails in bars 16 and 40, and the Weide fade's `.release(1.3)` is one bar: all assume 180 bpm. Re-cutting a meme means re-timing its stutter. 18 19**Measuring needs the new samples served.** The dev server's sample map is the main tree's; a worktree's new or re-cut samples are not in it until merged.