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.