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 known `"reasampler"` value. Nothing plays yet — this is the loading/drawing/bridge
proof. 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` + `reaper_reasampler` (Windows VST3 export/bundle wiring; `GetPluginFactory` +
`InitDll`/`ExitDll`**verify exact export names against the vendored SDK**). `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), declaring an event-input bus + an audio-output bus (no audio input),
`setupProcessing`, `setActive`, empty `process`. Loads silently in REAPER. `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 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 `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 here.** (VSTGUI is the noted fallback only if this proves gnarlier than the panel
work suggests.) work suggests.)
- [ ] Bridge read spike: resolve `GetProjExtState`/`EnumProjExtState` by name over the - [x] Bridge read spike: resolve `GetProjExtState`/`EnumProjExtState` by name via
host callback (`hostcb` opcode `0xdeadf00d`), fetch host project context `IReaperHostApplication::getReaperApi` (host project context via `getReaperParent(3)`)
(`0xdeadf00e`), and read a known `"reasampler"` ext-state value. **Verify opcodes + from `reaper_vst3_interfaces.h`, and read a known `"reasampler"` ext-state value.
marshalling against `reaper_plugin.h` / `video_processor.h` / (The `0xdeadf00d`/`0xdeadf00e` opcodes are the VST2 path — verified not applicable here.)
`reaper_plugin_functions.h`.**
## S2 — `Sample` intrinsic fields (root note + loop points; in the *extension*) ## S2 — `Sample` intrinsic fields (root note + loop points; in the *extension*)
**Goal:** Add the two bank-intrinsic seam fields to `Sample`**root note** (MIDI **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 **Depends on:** nothing in Phase S (extension-only; can land before or in parallel
with S1). 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 sample-accurate loop points) to `Sample`; JSON serialize/deserialize with clean
defaults for samples lacking them (additive, backward-compatible — mirror of how defaults for samples lacking them (additive, backward-compatible — mirror of how
`provenance` was added). `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. 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 JSON (no new fields) parses with defaults and re-serializes without loss; additive
invariant (no change to existing fields, dedup, tier, or `BankIndex` behavior). invariant (no change to existing fields, dedup, tier, or `BankIndex` behavior).