docs: preview via real MIDI path (PreviewCard retired) + self-contained playback (v10 SampleRefs, bank-free decode, heal removed); fix stale reloadFromBank refs

This commit is contained in:
2026-07-28 12:28:25 -04:00
parent f988ded543
commit 0ce30cc885
3 changed files with 19 additions and 4 deletions
+15
View File
@@ -2868,3 +2868,18 @@ now covered by the same mechanism.
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.
---
## Preview via real MIDI note path + self-contained playback (pS; 2026-07-28)
> **Merged to dev 2026-07-28. Integrated suite 55/55 green.** Architecture corrections from DAW testing — not tracked as PLAN points. PLAN.md has no corresponding entries to move.
**Preview via real MIDI note path:** the dedicated `PreviewCard` is RETIRED. Preview now injects a synthetic note-on at the loaded capture's root note into the main `VoiceEngine` (the same path host MIDI uses), so preview obeys polyphony/mono/voice-stealing/envelopes. `sampler_core` no longer has a `PreviewCard`; the processor no longer sums a preview voice alongside the engine + drain. The unity-Varispeed-bypass demotion (added in GA2 for the PreviewCard) is removed — GA2's primed shifter speaks on frame 0 anyway.
**Self-contained playback:** ReaSampler 9000 no longer depends on the extension being loaded to play. `ComponentState` bumped v9→**v10** with a `SampleRefs` table: per referenced sample the instance owns a project-relative path + decode intrinsics (root note, loop points, channels, displayName) — NOT a copy of the audio. On load, `reloadInstrument()` decodes directly from those refs (bank-free — plays with the extension absent). The bank/bridge is now a browser source: loading a capture copies its reference into the instance's `SampleRefs`. The reopen-heal apparatus (SetTimer retry timer, editor-gated poll-to-play) is removed. Pre-v10 blobs lift to empty refs and re-save self-contained; a bounded legacy lift covers migration.
- [x] `sampler_core`: `PreviewCard` struct and engine methods removed; preview path routes through the main `VoiceEngine` noteOn at the capture's root note.
- [x] `reasampler_processor`: `reloadInstrument` decodes from `SampleRefs_` (bank-free); `SampleRefs` table added to `ComponentState` v10; heal timer + poll-to-play removed; preview summing removed; `PreviewCard` member removed.
- [x] `sample_map`: `SampleRefs` type + `SampleRefEntry` struct; `refreshRefsFromBank`, `retainRefs`, `resolvePerformanceFromRefs` (decodes directly from refs, no bank blob required); `kComponentStateVersion` bumped to 10; pre-v10 lift to empty refs.
- [x] `ComponentState` v10 serialization round-trip: new `sampleRefs` field; pre-v10 blobs migrate on load.