notepat: fix z/x side keys + drop sampler noise voice
Two related fixes both rooted in "pf is not defined" ReferenceError
cleanup + offset routing:
1. activeKitForOffset routes z/x (offset=-1) to the LEFT kit
The grid split in hitTestGrid + the note trigger block treats
offset <= 0 as left-side notes (z=-a#, x=-b, plus all the 0-offset
c..b letters). activeKitForOffset was comparing `offset === 0`, so
a non-zero offset (like -1 for z/x) fell into the `else` branch and
picked kitRight. With a drum kit armed on the upper octave only,
pressing z suddenly played a drum mapped to the letter "a#" from
the RIGHT kit instead of its proper A#3 tone on the LEFT instrument.
Changed the comparison to `offset <= 0` so both in-octave and below-
octave left-side keys pick kitLeft.
2. Drop the noise voice from the sample-delete confirmation
Line 2557 was `sound.synth({ type: "noise", tone: 200 * pf, ... })`
with `pf` undefined outside playPercussion scope — every Delete in
sample mode threw a ReferenceError (silently swallowed by QuickJS's
top-level handler, so the confirmation sound just never played).
Replaced with a clean descending triangle pair (440 → 220 Hz) that
matches the rest of the sample-mode palette and doesn't rely on an
out-of-scope pitch factor variable.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>