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**Half-time is written, not tempo-changed.** The think sections put the kick on 1 and the snare on 3 at the same `setcps`. Never change cps mid-song to get the half-time feel: every mask counts cycles, and the sections would drift. 8 9**The hook is rendered on Em and must land on Em.** `samples/sohook` is vocoded on e2 e3 g3 b3 e4; the drops and the outro start right after a multiple of 4 bars so the 4-bar Em – C – G – D cycle is on Em there. Moving a section boundary off that grid needs the hook re-rendered on the new chord. 10 11**The three loading chimes differ on purpose.** Think 1 resolves to E, think 2 is busier and resolves to E, think 3 stops on F# and never resolves (the spec asks for it). They are three masked patterns, not one, all on `samples/sowinchime` (Windows' chimes.wav, rooted on A5 +8 cents: `transpose(-45).speed(.995)` makes a written note sound as written). Each last bar decays before beat 4, so a dropout into the drop is silent. 12 13**The master `postgain` is measured, not guessed.** Balance the parts first, then set it so the loudest bar peaks at or under −1 dBFS; peaks move about 1 dB between runs (the supersaw's phases), so leave that margin. Measuring in the dev server plays the main tree's samples: a sample changed only in a worktree needs a `samples({...})` override pointing at its `/@fs/` path in a probe copy.