For agents, on top of README.md, which they read first.

Notes for agents

Stop playback before playing song.js. Its section masks count from cycle 0.

The harmony moves every two bars on purpose. Each vocoded line is rendered on one chord (samples/README.md lists which), so it must start on the first bar of its chord. "Where vibes are true" exists twice — ssvibes on D (verse, chorus bar 19) and ssvibese on E (chorus bar 23) — because it lands on both.

The key change must stay vocal-free. Bars 49–64 add 2 semitones to the MIDI-number patterns (key). The vocoded lines are fixed renders in F# minor; putting one inside the key change sings it a tone flat against the band.

Pitches are MIDI numbers, not note names, so .add(key) can transpose them. Keep new melodic parts numeric.

Everything with reverb on the drums' orbit goes through gated(). Superdough keeps one reverb per orbit and regenerates it whenever a hap's impulse differs, so a tom with the built-in room after a snare with ir('ssgate') would swap the orbit's reverb back and forth.

The toms are written once, in the transition. A roll in kit as well would double under fill, be halved by dropout and play under a plain cut; as written they follow the path (next), not bar numbers.

The hook is not a part. "Hello there" / "General Kenobi" play in every chorus outside part('vocals'), so Jev leveling the vocals out never loses them.

Re-measure after any level change. measured: holds only for the song.js whose hash it records.