diff --git a/src/vst/sampler_core.cpp b/src/vst/sampler_core.cpp index 88de67e..4aa2f16 100644 --- a/src/vst/sampler_core.cpp +++ b/src/vst/sampler_core.cpp @@ -104,7 +104,7 @@ double AdsrEnvelope::tick() { // Fall through to Decay this frame so no extra unity sample is emitted for a // zero-length hold (preserving the exact pre-S15 sample-for-sample shape). level_ = 1.0; - // Re-dispatch by recursion-free goto-equivalent: evaluate Decay immediately. + // Single re-dispatch into Decay (bounded: Hold→Decay only; not a general recursion). return tick(); } level_ = 1.0; diff --git a/src/vst/sampler_core.h b/src/vst/sampler_core.h index 28d99d5..b4a09d7 100644 --- a/src/vst/sampler_core.h +++ b/src/vst/sampler_core.h @@ -516,8 +516,8 @@ private: // one per the documented policy. Always returns a valid index (maxVoices >= 1). std::size_t allocateVoice(); - // Count of active Preserve-engine voices (for the S16 Preserve cap). A cheap running tally - // kept in sync at note-on/steal/free rather than rescanned per note. + // Count of active Preserve-engine voices (for the S16 Preserve cap). Rescanned per note-on + // (cheap: bounded by maxVoices) rather than maintained as a running tally. std::size_t activePreserveVoices() const; std::vector voices_;