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:
@@ -2868,3 +2868,18 @@ now covered by the same mechanism.
|
|||||||
updated.
|
updated.
|
||||||
- [x] `sampler_core` `Voice::start`: declick changed from `(1-amp)` gate to bounded blend
|
- [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.
|
(`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.
|
||||||
|
|||||||
+1
-1
@@ -1171,7 +1171,7 @@ without re-opening each editor. The missing trigger: a **bank-generation counter
|
|||||||
defaults to 0 for projects saved before the stamp exists.
|
defaults to 0 for projects saved before the stamp exists.
|
||||||
- **Reader (instrument).** Poll the generation over the bridge on a safe **off-audio-thread
|
- **Reader (instrument).** Poll the generation over the bridge on a safe **off-audio-thread
|
||||||
cadence** (a UI/timer tick, **never** `process`), compare to the last-seen value, and call
|
cadence** (a UI/timer tick, **never** `process`), compare to the last-seen value, and call
|
||||||
the existing off-thread `reloadFromBank()` on change — reusing S4's atomic pointer-swap
|
the existing off-thread `reloadInstrument()` on change — reusing S4's atomic pointer-swap
|
||||||
handoff (graveyard-reclaim) so a mid-play refresh does not glitch. No new audio-thread work;
|
handoff (graveyard-reclaim) so a mid-play refresh does not glitch. No new audio-thread work;
|
||||||
no allocation in `process`.
|
no allocation in `process`.
|
||||||
- **Cadence + safety.** A low-frequency UI timer, coalescing multiple bumps between polls into
|
- **Cadence + safety.** A low-frequency UI timer, coalescing multiple bumps between polls into
|
||||||
|
|||||||
Reference in New Issue
Block a user