jevstrudel.git / songs / jev / too-cheap-to-meter

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. The hook's "Output tokens: free" exists in three renders (tcfreeam, tcfree, tcfreeg) for the three chords it lands on.

The filter sweeps are phrase-bound. saw.range(...).slow(8) restarts every 8 cycles, so the sweep opens over each 8-bar phrase only because every section starts on a multiple of 8. Moving a section boundary off that grid breaks the sweep.

"Gate the sudo" does not survive the vocoder. Five renders read back as other words; the lyric is "Gate the sudo command" for that reason, and it is spelled "Gate, the sue-doo command" for SAPI, or whisper hears "pseudo" (see SPEC.md). Accept a re-render only when whisper.cpp ggml-base.en reads "gate the sudo command" both dry and mixed over the kick.

Levels are choices, narrowed by allow. Each part's level is choice {full, back, out}, not a score, so allow can leave out what a section does not have; full is every level's fallback and must stay in every allowed set. The outro is all ending, which Jev never levels.

Measure after any gain change. superdough has no limiter; MASTER is set so the loudest pick (every part full, energy all out, which is also the fallback) peaks at or under -1 dBFS in nix run .#measure.