Monorepo for Aesthetic.Computer aesthetic.computer

slab/menuband: kick / snare / closed-hat sample pads on the menubar master

Three Akai-MPC-style drum pads on the *left* of the piano in the menu bar status item: - DrumPad enum: kick (GM 36), snare (GM 38), closed hi-hat (GM 42), each with a calibrated accent color (warm orange / pink / gold). - drawDrumPad: rounded-square, vertical gradient (top brighter → bottom darker), 1 px white sheen at the top edge for the "lit-from-above" feel, hairline border, single-letter monospaced glyph (K / S / H) centered. Lit + hover states shift the gradient and brighten the glyph. - Layout: pads sized to match white-key width (23 × 21), sit between the left padding and the piano with a 5 px gap. imageSize + pianoOriginX + settingsHitRect all derive from the new layout. drumsAreaWidth collapses to 0 in compact display mode so the adaptive-sizing fallback still works. - HitResult gains a `.drum(UInt8)` case. hit() checks drum cells before falling through to piano + settings. - AppDelegate.statusClicked: when the initial hit is a drum, fire startTapNote at velocity 110, sleep 100 ms, stopTapNote. One-shot, no drag tracking — drums don't glide like piano keys. - The controller's existing isDrum routing (note < firstMidi → channel 9 → drum sampler) handles the rest, so no audio changes needed. Site: - Bump download cache-buster query string to ?v=1fbccdf. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>


+139 -4
3 changed files