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**The harmony moves every two bars on purpose.** Each vocoded line is rendered on one chord (`samples/README.md` lists which), so a line must start on the first bar of its chord. Changing the section lengths or the chord order means re-rendering the lines with `vocode`.
8
9**The blue shell's hit is two bars after its trigger.** `samples/blueshell` is trimmed so the impact lands exactly 2 bars (2.824 s at 170 bpm) in; re-trim it if the tempo changes. The hook plays it twice: the warning up to `.end(.65)` ducked under Pong, then from `.begin(.65)` at full on bar 19, so the hit is not ducked.
10
11**The drops play the chord cycle four bars on, so they land on Am.** Every drop part applies `.early(4)` to its notes *before* its section mask: `.early(4)` after `.mask(drops)` moves the mask too, and the part plays in the wrong bars.
12
13**The hook is not a part.** The title lines and the builds' memes sit in `hook`, outside `part()`, so no Jev level can silence them; only the energy and a dropout's gap reach them. Lines Jev may level go in `vox`.
14
15**`joysticks` is not vocoded throughout.** The vocoder turns "Jev" into "Jeb" or "Jeff" (whisper, 2026-09-25, even from an IPA phoneme), so "Jev is" is the dry SAPI voice over a ducked vocoder (`samples/README.md`). Re-rendering it means repeating that blend, then checking it with whisper.
16
17**Measure twice.** `nix run .#measure` on this song varied by up to 3 dB in the drums and 1.3 dB in the peak between runs of the same code (2026-09-25), so the master level leaves margin under −1 dBFS.