docs(plan): tick S1/S2 checkboxes; correct bridge-read text to VST3 mechanism
This commit is contained in:
@@ -110,22 +110,21 @@ working hit-test; the VST-host bridge resolves `GetProjExtState` by name and rea
|
||||
known `"reasampler"` value. Nothing plays yet — this is the loading/drawing/bridge
|
||||
proof.
|
||||
|
||||
- [ ] CMake second target: a separate VST3 module artifact built alongside
|
||||
- [x] CMake second target: a separate VST3 module artifact built alongside
|
||||
`reaper_reasampler` (Windows VST3 export/bundle wiring; `GetPluginFactory` +
|
||||
`InitDll`/`ExitDll` — **verify exact export names against the vendored SDK**).
|
||||
- [ ] `SingleComponentEffect` skeleton: factory + class registration, `initialize`
|
||||
- [x] `SingleComponentEffect` skeleton: factory + class registration, `initialize`
|
||||
declaring an event-input bus + an audio-output bus (no audio input),
|
||||
`setupProcessing`, `setActive`, empty `process`. Loads silently in REAPER.
|
||||
- [ ] `IPlugView`↔LICE bridge spike: open a plugin editor window hosting a LICE-drawn
|
||||
- [x] `IPlugView`↔LICE bridge spike: open a plugin editor window hosting a LICE-drawn
|
||||
surface (window creation/sizing, host→draw/hit-test event routing), reusing the
|
||||
`bank_panel` LICE/SWELL competence. **The decision's one real unknown — prove it
|
||||
here.** (VSTGUI is the noted fallback only if this proves gnarlier than the panel
|
||||
work suggests.)
|
||||
- [ ] Bridge read spike: resolve `GetProjExtState`/`EnumProjExtState` by name over the
|
||||
host callback (`hostcb` opcode `0xdeadf00d`), fetch host project context
|
||||
(`0xdeadf00e`), and read a known `"reasampler"` ext-state value. **Verify opcodes +
|
||||
marshalling against `reaper_plugin.h` / `video_processor.h` /
|
||||
`reaper_plugin_functions.h`.**
|
||||
- [x] Bridge read spike: resolve `GetProjExtState`/`EnumProjExtState` by name via
|
||||
`IReaperHostApplication::getReaperApi` (host project context via `getReaperParent(3)`)
|
||||
from `reaper_vst3_interfaces.h`, and read a known `"reasampler"` ext-state value.
|
||||
(The `0xdeadf00d`/`0xdeadf00e` opcodes are the VST2 path — verified not applicable here.)
|
||||
|
||||
## S2 — `Sample` intrinsic fields (root note + loop points; in the *extension*)
|
||||
**Goal:** Add the two bank-intrinsic seam fields to `Sample` — **root note** (MIDI
|
||||
@@ -143,13 +142,13 @@ additive).
|
||||
**Depends on:** nothing in Phase S (extension-only; can land before or in parallel
|
||||
with S1).
|
||||
|
||||
- [ ] Add `rootNote` (optional MIDI note) + `loopStart`/`loopEnd` (optional
|
||||
- [x] Add `rootNote` (optional MIDI note) + `loopStart`/`loopEnd` (optional
|
||||
sample-accurate loop points) to `Sample`; JSON serialize/deserialize with clean
|
||||
defaults for samples lacking them (additive, backward-compatible — mirror of how
|
||||
`provenance` was added).
|
||||
- [ ] Populate the fields on capture where derivable (root note) / settable (loop
|
||||
- [x] Populate the fields on capture where derivable (root note) / settable (loop
|
||||
points); leave them cleanly empty otherwise. No existing `Sample` field changes.
|
||||
- [ ] Tests: full round-trip lossless including the new fields; a legacy `Sample`
|
||||
- [x] Tests: full round-trip lossless including the new fields; a legacy `Sample`
|
||||
JSON (no new fields) parses with defaults and re-serializes without loss; additive
|
||||
invariant (no change to existing fields, dedup, tier, or `BankIndex` behavior).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user