notepat: harp loudness + sustain + Shift-pluck; whistle low-octave fix
Audio (audio.c):
- Harp: stretch 0.996 → 0.9985 (T60 ~15s at A4 — true pedal-harp
sustain). Output gain 1.0 → 2.5× to match perceived loudness of
sine/triangle. Karplus-Strong's circulating amplitude is heavily
attenuated by the LPF + stretch each cycle, so raw output is much
quieter than oscillators at the same `volume`.
- Harp short-pluck variant: when caller passes decay in (0, 0.2),
stretch drops to 0.990 → ~0.4s damp. Lets notepat trigger a tight
staccato when Shift is held (no Karplus-Strong code branching, just
picks a smaller stretch coefficient).
- Whistle: clamp the freq floor 110Hz → 30Hz so the bottom notepat
octave (C1≈33Hz, C2≈65Hz, A2=110Hz) actually plays at pitch instead
of all bass notes silently snapping to A2.
Notepat (pieces/notepat.mjs):
- Shift+letter on harp: pass duration=0.4 + decay=0.1 to trigger the
short-pluck path. Other waves keep their existing infinite-hold.
- Wave-row label switches "harp" → "pluck" while Shift is held — first
pass at surfacing the alternate-mode UI the user asked for.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>