notepat: share drum synth between web + native (lib/percussion.mjs)
Extract the 12-drum kit (7 naturals + 5 accent sharps) and its layered
synth kernel into a new `/lib/percussion.mjs` module. Both the web
notepat piece and the ac-native notepat piece now import it so sources
don't diverge — tweaking a drum in one place updates both.
Web notepat gains a drum-mode toggle ("drm" button, cascades left of
os/m4l/wave/oct). In drum mode every key press fires a drum instead of
a pitched note (c=kick, d=snare, e=clap, f=snap, g=hat-c, a=hat-o,
b=ride, c#=crash, d#=splash, f#=cowbell, g#=block, a#=tambo).
Also folds in two earlier fixes:
- Top-bar piano keys now cap at the leftmost button edge so os/m4l/
wave/oct/drm never overlap the mini piano cascade on narrow screens.
- desktop.mjs platform-download fallback URLs now point at silo's
/desktop/download/:platform endpoint (302 to the current release)
instead of dead /desktop/mac paths.
Native notepat keeps its drum-voice inspector by passing an onVoice
callback through the shared kernel.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>