fix(percussion): wub kick + sharper clip-clap + aggressive whistle de-air
Three audio tuning passes based on lemon-martin feedback.
KICK — user: "too lengthy, needs more mids, more of a wobble wub bass"
- Total sustain 500ms → 180ms so it doesn't overstay its welcome.
- Body wave: sine 140Hz → SQUARE 180Hz (odd harmonics up to ~900Hz
fill the mid-band that was previously hollow).
- Added grit layer: sawtooth 90Hz × 100ms for dubstep rasp (90/180/
270/360 Hz harmonic stack reads as "wub").
- Sub wobble: single 45Hz sine → TWO sines at 44Hz and 54Hz running
in parallel. Beat frequency |f1-f2| = 10Hz creates natural
amplitude modulation without needing a real LFO (which our QuickJS
timers can't drive fast enough anyway). Classic dub wobble.
- Mid-low: sine 72Hz → square 120Hz for more harmonic body between
the 44Hz sub and the 180Hz thump.
CLAP — user: "should be more clip clappy"
The old recipe was four ~1400Hz noise bursts that blurred into a
diffuse shh. Real handclaps have a distinct high-frequency click
(palms striking) followed by a compact body. New recipe:
- Sharp click: square 2.5kHz × 4ms + noise 6kHz × 3ms (EXPLICIT
top-end click, was missing entirely before).
- Body: three short 8ms bursts at 1500-1700Hz with tighter spacing
(6ms / 14ms instead of 10/22/34ms) — the timing is what sells
"two hands clapping", not the frequency.
- Short tail: single 25ms 1800Hz burst for the after-smack.
- Opposing pan between click and body for micro-stereo image.
WHISTLE — user: "still too airy"
My earlier pass (Q 18→26, turbulence 0.08→0.025) wasn't aggressive
enough. Third iteration:
- main_q: 26 + 0.018*tuned → 45 + 0.025*tuned (razor-thin bandwidth).
- formant_q: 10 → 14.
- turbulence: 0.025 base + 0.12 onset + 0.03 breath
→ 0.008 + 0.03 + 0.008 (roughly 1/10 of the original).
- jet_slew: 0.035 → 0.05 (chiff nearly gone, note speaks instantly).
- feedback: 1.95/-0.92 → 2.0/-0.95 (more self-sustain in resonator).
- main input gain: 1.25 → 1.35; formant input: 0.22 → 0.18.
- breath_slew: 0.0065 → 0.009 (faster attack ramp).
- OUTPUT AIR LAYER REMOVED ENTIRELY. The previous versions still
mixed unfiltered white noise into the final output via the `air`
term. That was the hiss the user could still hear. Now ALL noise
has to pass through the resonator before reaching the output.
- Output mix: main 2.4/formant 0.45/air → main 2.8/formant 0.38/0.
- Final drive: 1.55 → 1.6.