daniel
080a7be8ca
fix(voice): CC 120 hard-stops voices (incl. Trigger); Mono sizes voices_ to 1; comments corrected
...
CC 120 -> allSoundsOff/hardStop (immediate silence, stops Trigger one-shots); CC 123 -> allNotesOff/releaseAll (release, unchanged). Mono VoiceEngine sizes voices_ to 1 structurally. Legato same-note re-press edge documented. Three new tests.
2026-07-27 22:08:56 -04:00
daniel
cc64def2d0
fix(voice): Trigger legato keys on held-stack depth, CC123 allNotesOff clears mono stack, voice-param edits rebuild from decoded PCM (no re-decode), mono sizes 1 shifter ring
2026-07-27 21:54:03 -04:00
daniel
885b7f29a2
Phase S voices: user-set polyphony, mono stack (retrig|legato), isolated preview card, idle-drain retirement; unity bypass preview-only (v7)
2026-07-27 21:29:30 -04:00
daniel
d9321eaf3a
FA1: unity-Preserve bypass kills preview onset latency; drain-slot reload keeps voices ringing through curve edits; velocity path proven end-to-end
2026-07-27 19:50:21 -04:00
daniel
a1f9dcf6f8
S-VIEW-9: velocity->amp transfer curve (pure velocity_curve module + zones-payload v7 + Voice::start apply)
...
Default flat y=1 (R10-F1 Option A) replaces the linear velocity/127 at note-on — a deliberate, non-back-compat behavior change; v1-v6 blobs lift to the flat default.
2026-07-27 14:18:01 -04:00
daniel
42dd30b2fe
S-VIEW-6: per-zone keyTrack scalar (0-200%, default 100%) with pure ratio math in both repitch engines
...
keyTrackedRatio is bit-identical to pitchRatio at 100%; keyTrack threads through PerformanceZone->ResolvedZone->KeyZone into baseRatio_, so Varispeed and Preserve both inherit it. Zones payload bumped to v6; older blobs lift to 1.0.
2026-07-27 13:25:53 -04:00
daniel
082c9b82c2
s12: thread project rate through v3 legacy lift; remove 44100 literals
...
kLegacyV3NominalRate removed. readZonesPayload, deserializePerformance, deserializeComponentState now take a projectRate for v3 frames→seconds. Rate fields default 0 (invalid). Four 44100 fallbacks replaced with assert+safe-return. 96k v3-lift test added.
2026-07-27 04:25:39 -04:00
daniel
a54af277e4
S12: store wall-clock ADSR/pitch-env as seconds, resolve to frames at live rate
...
Kill kTier0Nominal*, adsrNeedsRateResolve, tier0Adsr, gateAdsr. Zones payload v5 carries
seconds; v3 legacy reads convert at the frozen authoring rate; v4 (branch-only) dropped.
Editor sliders now seconds. Engine takes frames resolved at keymap build.
2026-07-27 04:25:38 -04:00
daniel
1d338318e7
fix: S12 R2 — marker-drag sets selectedZone_, ADSR rate-resolve, gateAdsr doc
...
Marker drag now sets selectedZone_ so single-capture controls stay reachable. Lifted/default ADSR rescales nominal 44100-Hz frame counts by sampleRate/44100 via adsrNeedsRateResolve; v4-authored zones skip rescale. gateAdsr documented vestigial.
2026-07-27 04:20:34 -04:00
daniel
5dcd5d0d9d
fix(comments): correct two misleading impl comments in sampler_core (rescan vs tally; re-dispatch vs recursion)
2026-07-27 04:16:49 -04:00
daniel
1e1d6bddbb
S15/S16: Gate(AHDSR)/Trigger play modes + Varispeed/Preserve pitch engines + AD pitch envelope
...
Per-zone play params on SampleData; hand-rolled pure pitch_shift OLA for Preserve (WDL drags
windows.h); zone-payload v3 tail; RT-safe pre-warmed shifters + Preserve voice cap.
2026-07-27 04:16:48 -04:00
daniel
75f717bd47
Merge ps-w8-t2-waveform: S11 waveform view + draggable loop points
2026-07-27 04:15:08 -04:00
daniel
4a3551b3b9
S7: stereo channel mode — core channel dimension, v4 mode state, VST3 bus negotiation, editor toggle
...
Per-instance mono|stereo (default mono, byte-identical). Stereo grows SampleData a 2nd
channel + a per-channel VoiceEngine render; decodeChannels applies the cross-mode policy;
setBusArrangements pins the mode's arrangement and restartComponent(kIoChanged) re-negotiates.
2026-07-27 04:09:50 -04:00
daniel
9743547dff
S11: waveform view with draggable start/loop markers + zero-crossing snap
...
Pure waveform_view module (frame<->pixel markers, zero-crossing snap); per-zone
loop/start overrides on PerformanceZone with self-versioning zone payload; core
start-point read offset; editor waveform surface with drag machine.
2026-07-27 04:09:50 -04:00
daniel
0cde457224
S4 Tier 0: the bank plays — VST3 marshals MIDI to the S3 core, reads the live bank + resolves WAV the M4 way, mono downmix, lock-free load handoff, LICE sample-pick
2026-07-27 04:07:09 -04:00
daniel
74d2e976e7
S3: pure sampler core — voices, ADSR, keymap, loop-aware repitch
...
REAPER-free and VST3-free voice engine with bounded stealing, ADSR
envelope, key/velocity keymap resolution, and repitch from root note
with loop-point sustain. Test target links neither SDK.
2026-07-27 04:07:08 -04:00