fix(perc): drum bus compressor + tighter kick/snare + full pad labels + install fix
Multiple fixes based on user feedback testing ivory-flounder:
1. **Drum bus peak compressor (audio.c)** — user reported rapid kick
hits felt like they were "stacking quieter". Diagnosed as soft_clip
tanh saturation: the drum bus sums additively (no auto-mix divide
since split), so 4 rapid kicks overlap their sub tails and the
combined signal saturates through tanh, flattening each additional
hit. Fix: add a real peak compressor on the drum bus with:
- 0.95 threshold
- 5ms attack (slower than 2ms beater transient so each hit's
initial peak passes through at full amplitude)
- 200ms release (recovers quickly enough that successive hits at
120-200 BPM each get full dynamic range)
Polyphonic stacking preserved, no saturation pumping.
2. **Kick tightening** — user reported "farty" feel. Previous recipe
had 6 layers summing huge low-freq energy:
180+150+100+80+50 Hz sines at volumes 1.4/2.0/1.4/1.4/1.9
Which stacked into a muddy blob. New recipe:
- Stick 2500Hz × 2.5ms vol 0.5 (sharp attack)
- Pitch snap 200Hz × 12ms vol 1.1
- Body 150Hz × 45ms vol 1.3 (was 100ms @ 2.0 — shorter, quieter)
- Mid-low 90Hz × 80ms vol 0.85 (was 100Hz × 160ms @ 1.4)
- Sub 55Hz × 350ms vol 1.0 (was 50Hz × 550ms @ 1.9)
Dropped one layer entirely (80Hz triangle), halved volumes on
low-mids, halved durations on the body. Transient dominant now.
3. **Snare 909-leaning** — user said "farty". The 808 recipe exposed
the 238/476 Hz tonal pair for 120ms which read as a "bleh" tone.
New 909-leaning version:
- Sharp stick 3500Hz × 4ms vol 0.95 (louder, shorter)
- 238/476Hz tonal pair × 30ms (was 120ms) vol 0.35/0.28 (was 0.55/0.45)
- Primary wire noise 3500Hz × 110ms vol 0.85 (NEW dominant layer)
- Mid noise 1800Hz × 70ms vol 0.38
- Triangle body 180Hz × 25ms vol 0.22 (brief warmth)
Noise now dominates over tones, reads as a CRACK not a BLEH.
4. **Drum pad labels show full names when space allows (notepat.mjs)**
— user: "across the board in notepat no need to truncate terms
and make short versions". Previously always showed 3-char labels
(BAS/SNR/CLP/HHC). Now uses PERCUSSION_NAMES (kick/snare/clap/hat-c)
when btnW >= label width + padding. Falls back to 3-char only when
the pad is too narrow to fit the full word.
5. **INSTALL FIX UNCHANGED — CRITICAL bundled from last commit**:
mkfs rc detection (subshell preserves exit code), dd zero of first
64KB before sfdisk to wipe old FS signature, drop_caches +
blockdev-ish flushbufs before mkfs, 3s settle, 3 retry attempts
with drop_caches between each. These are all still in ac-native.c.
Cancelled in-flight satin-toucan (was at 55% kernel) to bundle these
fixes into one build cycle. Net savings: one flash cycle.