Drum kits breathe too: variable dynamics per drum voice

Paul: "different drum voices can have variable dynamics." The first dynamics pass exempted drums wholesale — too blunt. Generalize the ramp to per-voice [floorIn, floorExit] and give drums their own table.

• The BACKBONE (kick / snare / clap / rim) slams in — floorIn 1, so a drop stays slammed — but still fades on the way OUT into a breakdown.

• The pitched voices are unchanged (their floors just moved into the [in,out] shape). A shared dynRuns() walks each lane's active runs once

• Measured on default_song: kick enters unchanged at 0.640 (slam preserved), hat swells 0.047 -> full over its entrance.

▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=6947&path=1718.20504,1737.20537,1699.20537&xdur=13.122

131c4d7 https://github.com/aboard-io/stellate/commit/131c4d7bacdc4ff81408ec59cc71370ea25b650c