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.
This commit is contained in:
@@ -340,11 +340,13 @@ class Voice {
|
||||
public:
|
||||
// Starts this voice on `note` at `velocity`, playing `sample` (a stable reference
|
||||
// the caller must keep alive for the voice's lifetime — the Keymap owns it), repitched
|
||||
// from `rootNote`. `gateAdsr` is the effective Gate AHDSR (the engine supplies the
|
||||
// instrument-wide attack/decay/sustain/release timing; the per-zone HOLD stage comes from
|
||||
// sample.play.adsr.holdFrames, folded in here). The S15 play MODE + Trigger params and the
|
||||
// S16 pitch ENGINE + pitch envelope are read from `sample.play`. The Preserve shifters MUST
|
||||
// already be pre-sized (presizePreserveShifters, off-thread) — start() only reset()s + warm()s
|
||||
// from `rootNote`. All five AHDSR fields (A/H/D/S/R) are read directly from
|
||||
// sample.play.adsr — the per-zone values stamped by buildTier0Keymap / buildZonedKeymap.
|
||||
// `gateAdsr` is the VoiceEngine's instrument-wide ADSR parameter, accepted for interface
|
||||
// compatibility but NOT used by start() (vestigial since the S12 review fix moved A/D/S/R
|
||||
// onto the per-zone SampleData). The S15 play MODE + Trigger params and the S16 pitch
|
||||
// ENGINE + pitch envelope are read from `sample.play`. The Preserve shifters MUST already
|
||||
// be pre-sized (presizePreserveShifters, off-thread) — start() only reset()s + warm()s
|
||||
// them (RT-safe, no allocation) since it runs on the audio thread inside process(). The warm
|
||||
// silence pass settles the OLA taps before the first output frame (no cold-start click).
|
||||
// Byte-identical to the pre-S15 engine when sample.play is default (Gate + Varispeed + no
|
||||
|
||||
Reference in New Issue
Block a user