notepat: wobble/flange FX + snap-release (kill dead silent time)
Two changes on top of the shift-alternates batch:
1. Wobble/flange FX module
C-side modulated-delay effect following the exact pattern of drive:
- 1024-sample ring (power of 2 for cheap mask) covers 0-21 ms
- 0.4 Hz LFO sweeps read head over 2-10 ms range
- 0.45 feedback into the ring for sustained "jet sweep" zing
- dry/wet blend with per-sample smoothing (same 0.00005 coeff as
fx/room/glitch/drive) so fader sweeps don't zipper
- Applied BEFORE drive + master_volume so it colors the tonal
character of the instrument, not the overdriven output
- JS API: sound.wobble.setMix(value) 0..1
Notepat UI: new 7th FX slider row (purple) with X/Y trackpad
bindings matching the rest of the rack. Wavetype buttons move
from sliderH*6 → sliderH*7 accordingly.
2. Release SNAPS back to 0 (was ease-out animation)
The ~20-frame ease-back I added earlier showed the needle visibly
sweeping forward through the wave — but the audio replay voice
already stops on release, so those ~333 ms of sweeping visual
had no sound behind them. User reported this as "extra dead
silent time at the end of every reverse gesture" and noted it
made the snap-back feel unresponsive. Removed the ease and went
back to an immediate jump; the press/hold still drives the
offset in lock-step with replay time, so only the release is
now instant (which is what it should've been given the audio
semantics — the capture ring already has the right data at
offset=0 the moment the replay voice stops).
Queued: sample alternate + composite alternate (both need more
thought), live-ping for UDP MIDI, boot-timing analysis once the
USB comes back with vanadium-nightjar-frost's log.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>