Merge ps-w3-tier0: S4 Tier 0 — the bank plays (MIDI to core, live-state seam, LICE sample-pick)
This commit is contained in:
@@ -193,15 +193,22 @@ following the active project works; it never captures and never inserts into the
|
||||
arrange (read-only over the bank).
|
||||
**Depends on:** S1, S2, S3.
|
||||
|
||||
- [ ] VST3 `process` marshalling: read MIDI note-on/off/velocity off the event bus,
|
||||
drive the S3 core, write per-voice audio to the output bus.
|
||||
- [ ] Live-state seam: read the bank index + selected sample's root note from
|
||||
- [x] VST3 `process` marshalling: read MIDI note-on/off/velocity off the event bus,
|
||||
drive the S3 core, write per-voice audio to the output bus. (Block-granular event
|
||||
timing at Tier 0; sample-accurate offset scheduling is a later tier.)
|
||||
- [x] Live-state seam: read the bank index + selected sample's root note from
|
||||
`"reasampler"` ext-state via the bridge; resolve the WAV audio path the M4
|
||||
project-relative way (shared convention with `persist`, not re-implemented).
|
||||
- [ ] Sample selection UI (minimal, in the `IPlugView` LICE editor or a
|
||||
parameters-only default view): choose which bank sample this instance plays.
|
||||
- [ ] Tier-0 playback: chromatic-from-root, basic polyphony, amp envelope,
|
||||
velocity→volume — plays in REAPER's routing/record/render path like any VSTi.
|
||||
project-relative way (shared convention with `persist`, not re-implemented — the
|
||||
parent-of-.rpp derivation is extracted to `capture_paths::projectDirOfRpp`, which both
|
||||
`persist` and the bridge call). Bank JSON parsed via the shared `bank_book` path (the
|
||||
spike string-scan reader retired); ext-state key names shared via pure `ext_keys.h`.
|
||||
- [x] Sample selection UI (minimal, in the `IPlugView` LICE editor): a clickable list
|
||||
of the bank's samples; the pick is the instance's own VST3 component state
|
||||
(setState/getState), never written back to the bank.
|
||||
- [x] Tier-0 playback: chromatic-from-root, basic polyphony (16 voices), amp envelope,
|
||||
velocity→volume — plays in REAPER's routing/record/render path like any VSTi. Sample
|
||||
load / decode / keymap build happen off the audio thread and hand to `process` via a
|
||||
lock-free atomic pointer swap (graveyard-reclaim); `process` never allocates.
|
||||
|
||||
## S5 — Tier 1: "a keymap" (zoned multisamples, per-sample root notes)
|
||||
**Goal:** Multiple bank samples zoned across the keyboard (key ranges), each with its
|
||||
|
||||
Reference in New Issue
Block a user