docs(plan): tick S1/S2 checkboxes; correct bridge-read text to VST3 mechanism

This commit is contained in:
2026-07-26 15:58:50 -04:00
parent 09f49441d9
commit 8dd74c6b3a
+10 -11
View File
@@ -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).