docs: GA2 fix pass — Preserve ring-prime (gap-free frame-0 onset, no 25ms latency) + bounded-blend takeover declick (supersedes stale (1-amp) gate)

This commit is contained in:
2026-07-28 09:16:13 -04:00
parent a23ee1b000
commit 1d2da9d456
2 changed files with 27 additions and 2 deletions
+25
View File
@@ -2843,3 +2843,28 @@ keybinding).
`.vstpreset` write + `TrackFX_SetPreset` call replaces `TrackFX_SetNamedConfigParm` "vst_chunk".
- [x] `bank_panel`: `SetCapture` moved to drag-arm branch; `bankPanelInvalidate()` called from
`actions.cpp` after mode-toggle actions.
---
## GA2 fix pass (2026-07-28)
> **Merged to dev 2026-07-28. Integrated suite 55/55 green.** Two fixes found during
> GA DAW testing — not tracked as PLAN points. PLAN.md has no corresponding entries to move.
**Preserve pitch engine — ring prime:** `pitch_shift` now **primes its ring buffer with the
actual upcoming source** at note-on (was zero-filled). Result: gap-free frame-0 onset (the
~25 ms Preserve onset latency is gone — Preserve now speaks on frame 0, matching Varispeed),
clean repitch across the full C1C8 range, and a real-content-bounded tail (the last-window
tail-truncation that previously clipped the decay is gone).
**Takeover declick rev-2/3 — bounded blend:** The declick mechanism is now a **bounded blend**
(`out*(1-w) + ref*w`, w decaying from 1.0 over the blend window), applied at every takeover
boundary: mono retrig/fallback, poly at-cap steal, and **preview re-trigger**. This supersedes
the earlier `(1-amp)` envelope-complement gate that zeroed the compensation on Trigger and
zero-attack restarts, leaving a click Daniel still heard in those cases. The preview card is
now covered by the same mechanism.
- [x] `pitch_shift`: ring buffer primed with actual upcoming source at note-on; `pitch_shift_tests`
updated.
- [x] `sampler_core` `Voice::start`: declick changed from `(1-amp)` gate to bounded blend
(`out*(1-w) + ref*w`, w 1.0→0); covers mono retrig + poly at-cap steal + preview re-trigger.