docs: fix swell_resgen.php path and repair citations broken by the CONTEXT split
mac_resgen.php does not exist. 34 CONTEXT.md citations retargeted to CONTEXT-ARCHIVE.md; 6 self-inverted refs in the archive corrected.
This commit is contained in:
+35
-35
@@ -36,7 +36,7 @@ build` is green with the new `bank_model` + `peaks` suites present.
|
||||
## Milestone 1 — bank_model + JSON round-trip (pure)
|
||||
**Goal:** The `Sample` metadata struct and `BankIndex` (add / remove / query /
|
||||
tier moves / dedup-by-hash) with JSON serialize/deserialize to `std::string`.
|
||||
CONTEXT.md §Data model, §Module architecture.
|
||||
CONTEXT-ARCHIVE.md §Data model, §Module architecture.
|
||||
**Verify:** CTest green. Round-trip is lossless (deserialize(serialize(x)) == x)
|
||||
across all fields; dedup-by-hash and tier filtering asserted; **relative paths
|
||||
only** invariant enforced at the model boundary (no absolute path accepted/stored).
|
||||
@@ -44,7 +44,7 @@ only** invariant enforced at the model boundary (no absolute path accepted/store
|
||||
- [x] Define `Sample` with the full field set (id, display name, relative path,
|
||||
source mode, source range in project time + PPQ, track GUID(s), wet/dry,
|
||||
channels, SR, length sec + beats, capture tempo, optional key, peak/RMS/LUFS,
|
||||
clip flag, tier, content hash, provenance, created ts). CONTEXT.md §Data model.
|
||||
clip flag, tier, content hash, provenance, created ts). CONTEXT-ARCHIVE.md §Data model.
|
||||
- [x] `BankIndex`: ordered collection keyed by id; add / remove / query.
|
||||
- [x] Hash lookup for dedup-by-content-hash.
|
||||
- [x] Tier model (scratch | archive) + tier-move + tier filtering; scratch marked
|
||||
@@ -58,7 +58,7 @@ only** invariant enforced at the model boundary (no absolute path accepted/store
|
||||
|
||||
## Milestone 2 — peaks (pure)
|
||||
**Goal:** Compute waveform min/max bins from raw PCM, dependency-free (not
|
||||
REAPER's peak API). CONTEXT.md §Module architecture, §Non-goals.
|
||||
REAPER's peak API). CONTEXT-ARCHIVE.md §Module architecture, CONTEXT.md §Non-goals.
|
||||
**Verify:** CTest green. Fed a known signal (full-scale sine, ramp), asserted
|
||||
min/max envelope per bin matches expected within tolerance; channel count
|
||||
preserved; bin count honored for arbitrary sample lengths (incl. remainder bin).
|
||||
@@ -72,7 +72,7 @@ preserved; bin count honored for arbitrary sample lengths (incl. remainder bin).
|
||||
|
||||
## Milestone 3 — Offline capture spike (REAPER shell)
|
||||
**Goal:** Offline-render the time-selection master mix to a wav in the project
|
||||
bank folder, add a `Sample`, log it. The render-driving spike. CONTEXT.md
|
||||
bank folder, add a `Sample`, log it. The render-driving spike. CONTEXT-ARCHIVE.md
|
||||
§REAPER API surface (offline render), Build order 3.
|
||||
**Verify (in DAW):** Render runs via `Main_OnCommand(42230)` ("Render using most
|
||||
recent settings") — REAPER always shows its offline-render progress window; no
|
||||
@@ -87,7 +87,7 @@ fallback).
|
||||
added silence without an explicit tail).
|
||||
|
||||
- [x] `ICaptureBackend` interface + `CaptureRequest` (source mode, time range,
|
||||
wet/dry, tail, SR/bit-depth/channels, output path). CONTEXT.md §capture.
|
||||
wet/dry, tail, SR/bit-depth/channels, output path). CONTEXT-ARCHIVE.md §capture.
|
||||
- [x] `OfflineRenderBackend`: drive `GetSetProjectInfo` render settings +
|
||||
`GetSetProjectInfo_String` file/pattern/format; **verify every flag against
|
||||
`vendor/reaper-sdk/sdk/reaper_plugin_functions.h`.**
|
||||
@@ -100,7 +100,7 @@ added silence without an explicit tail).
|
||||
|
||||
## Milestone 4 — persist (index ↔ project ext state)
|
||||
**Goal:** Write the `BankIndex` JSON to project ext state, reload on project open;
|
||||
project-relative path resolution. CONTEXT.md §persist, §Persistence & paths.
|
||||
project-relative path resolution. CONTEXT-ARCHIVE.md §persist, §Persistence & paths.
|
||||
**Verify (in DAW):** Index survives Save / Save As / close+reopen; **bank travels
|
||||
with the .rpp**; **relative paths only** in the persisted index (Save As to a new
|
||||
folder still resolves the bank).
|
||||
@@ -121,7 +121,7 @@ folder still resolves the bank).
|
||||
## Milestone 5 — bank_panel (docked grid)
|
||||
**Goal:** Docked LICE-drawn grid: thumbnails (from `peaks`), audition,
|
||||
multi-select, keyboard navigation. Reuses the docking setup from the retired
|
||||
`mpe_view.cpp`. CONTEXT.md §bank_panel.
|
||||
`mpe_view.cpp`. CONTEXT-ARCHIVE.md §bank_panel.
|
||||
**Verify (in DAW):** Grid docks; thumbnails render from computed peaks; audition
|
||||
plays selected sample; multi-select + keyboard nav work.
|
||||
|
||||
@@ -137,7 +137,7 @@ plays selected sample; multi-select + keyboard nav work.
|
||||
---
|
||||
|
||||
## Milestone 6 — insert (placement)
|
||||
**Goal:** "Insert selected sample at edit cursor" via `InsertMedia`. CONTEXT.md
|
||||
**Goal:** "Insert selected sample at edit cursor" via `InsertMedia`. CONTEXT-ARCHIVE.md
|
||||
§insert, Build order 6.
|
||||
**Verify (in DAW):** Selected sample inserts at the edit cursor wrapped in
|
||||
`Undo_BeginBlock2` / `Undo_EndBlock2`; conform-to-tempo is an explicit flag —
|
||||
@@ -157,7 +157,7 @@ plays selected sample; multi-select + keyboard nav work.
|
||||
## D1 — view_mode_model (pure)
|
||||
**Goal:** REAPER-free mode registry + membership index + folder-tree-aware
|
||||
visibility derivation + parking/restore planner + JSON round-trip. The heart of the
|
||||
phase; mirror of `bank_model`. CONTEXT.md §Design View (Module architecture — pure).
|
||||
phase; mirror of `bank_model`. CONTEXT-ARCHIVE.md §Design View (Module architecture — pure).
|
||||
**Verify:** CTest green. N-mode model (not a boolean); Arrange + Design seeded.
|
||||
Restore-planner round-trip (snapshot → park → restore) returns every driven flag to
|
||||
its captured value. Parent-derivation correct against a supplied folder tree.
|
||||
@@ -182,7 +182,7 @@ mode.
|
||||
|
||||
## D2 — view shell (apply flags in the DAW)
|
||||
**Goal:** Read the folder tree and drive REAPER flags per the planner.
|
||||
CONTEXT.md §Design View (view shell, REAPER API surface).
|
||||
CONTEXT-ARCHIVE.md §Design View (view shell, REAPER API surface).
|
||||
**Verify (in DAW):** Toggling active mode hides + parks inactive leaves
|
||||
(`B_SHOWINTCP`/`B_SHOWINMIXER`/`B_MAINSEND`/`I_FXEN` + per-FX offline) and restores
|
||||
active ones from snapshot. **Master untouched. `B_MUTE`/`I_SOLO` untouched.**
|
||||
@@ -200,7 +200,7 @@ Untagged tracks untouched. Parents follow their tagged descendants.
|
||||
|
||||
## D3 — persist slice (view state ↔ project ext state)
|
||||
**Goal:** Serialize the view section into the `"reasampler"` namespace alongside the
|
||||
bank; reapply the active mode on project open. CONTEXT.md §Design View (persist).
|
||||
bank; reapply the active mode on project open. CONTEXT-ARCHIVE.md §Design View (persist).
|
||||
**Verify (in DAW):** Membership + active mode + snapshots survive Save / Save As /
|
||||
close+reopen; on open, the active mode's visibility + processing is reapplied.
|
||||
Saved-while-parked project restores parked tracks from persisted snapshots (not to a
|
||||
@@ -215,7 +215,7 @@ guessed "on").
|
||||
---
|
||||
|
||||
## D4 — actions
|
||||
**Goal:** Bindable action set for the mode workflow. CONTEXT.md §Design View
|
||||
**Goal:** Bindable action set for the mode workflow. CONTEXT-ARCHIVE.md §Design View
|
||||
(actions). **Verify (in DAW):** Each action registered (bindable in Actions list);
|
||||
toggle + mode-jumps MIDI-bindable; tag/untag acts on the current track selection.
|
||||
|
||||
@@ -331,7 +331,7 @@ mass-tag on the first poll after open).
|
||||
|
||||
## Milestone 7 — capture action family
|
||||
**Goal:** Bindable capture actions for master / selected tracks / selected items /
|
||||
razor area, each with wet-dry + tail options. CONTEXT.md §actions, Build order 7.
|
||||
razor area, each with wet-dry + tail options. CONTEXT-ARCHIVE.md §actions, Build order 7.
|
||||
**Verify (in DAW):** Each action registered (bindable in Actions list), routes to
|
||||
the offline backend, and honors wet/dry + tail. **Load-bearing principle:** none
|
||||
auto-inserts into the arrange.
|
||||
@@ -357,7 +357,7 @@ auto-inserts into the arrange.
|
||||
|
||||
## Milestone 8 — RealtimeRecordBackend
|
||||
**Goal:** Realtime record behind the same `ICaptureBackend`, producing identical
|
||||
bank entries. CONTEXT.md §capture (realtime), §Precision invariants.
|
||||
bank entries. CONTEXT-ARCHIVE.md §capture (realtime), CONTEXT.md §Precision invariants.
|
||||
**Verify (in DAW):** Hidden temp track taps each selected track's own post-fader
|
||||
output via a `CreateTrackSend`; recorded file moves into the bank; **non-destructive**
|
||||
— temp track (and its sends) removed cleanly, every snapshotted track arm, time
|
||||
@@ -623,7 +623,7 @@ View tag family (bindable in the Actions list), plus the three code-review polis
|
||||
items carried from D2-W3-A. The persist slice and lane-ownership index round-trip
|
||||
were completed in D2-W3-A; this wave closes the remaining action surface and
|
||||
cleans up the implementation.
|
||||
See CONTEXT.md §Two-canvas sub-phase (Module architecture — persistence).
|
||||
See CONTEXT-ARCHIVE.md §Two-canvas sub-phase (Module architecture — persistence).
|
||||
**Verify (in DAW):** Item mode actions registered and MIDI-bindable in the Actions
|
||||
list; re-drive mint/apply so each item lands on its mode's managed lane; manual-lane
|
||||
items exempt; one undo block per action. ctest 14/14 green.
|
||||
@@ -763,7 +763,7 @@ collision path between channels.
|
||||
privileged, create/rename/reorder/delete named banks, active-bank id, move/copy a
|
||||
sample between banks, JSON round-trip + legacy-migration. The heart of the phase;
|
||||
mirror of `bank_model` / `view_mode_model`; **`BankIndex` untouched (additive)**.
|
||||
CONTEXT.md §Multi-bank (Module architecture — pure).
|
||||
CONTEXT-ARCHIVE.md §Multi-bank (Module architecture — pure).
|
||||
**Verify:** CTest green. Pool always present, un-deletable, un-renamable,
|
||||
un-evacuable (rules rejected in-model). Active-bank defaults to pool. Move is
|
||||
index-only (source loses entry, destination gains it) and observes destination
|
||||
@@ -847,7 +847,7 @@ As / reopen); relative-paths-only preserved. Prune's consumption of it is Phase
|
||||
**Goal:** Serialize the book under the `banks` key in `"reasampler"` alongside the
|
||||
existing sections, with the pool folded in as bank-zero; migrate a legacy
|
||||
`bank_index` key into the pool on first load and retire the legacy key; reload-on-open
|
||||
and Save-As survival via the existing M4 machinery. CONTEXT.md §Multi-bank (persist).
|
||||
and Save-As survival via the existing M4 machinery. CONTEXT-ARCHIVE.md §Multi-bank (persist).
|
||||
**Verify (in DAW):** Banks + named banks + active bank + all per-bank samples survive
|
||||
Save / Save As / close+reopen; **relative paths only**; bank travels with the `.rpp`;
|
||||
a project saved before this phase (legacy `bank_index` only) loads as pool + zero
|
||||
@@ -868,7 +868,7 @@ written.
|
||||
---
|
||||
|
||||
## B3 — actions
|
||||
**Goal:** Bindable action set for the multi-bank workflow. CONTEXT.md §Multi-bank
|
||||
**Goal:** Bindable action set for the multi-bank workflow. CONTEXT-ARCHIVE.md §Multi-bank
|
||||
(actions). **Verify (in DAW):** Each action registered (bindable in Actions list);
|
||||
bank-activate + move/copy + evacuate MIDI-bindable; create/rename/delete/evacuate
|
||||
drive the B1 model via the B2-persisted session.
|
||||
@@ -887,7 +887,7 @@ drive the B1 model via the B2-persisted session.
|
||||
|
||||
## B4 — bank_panel vertical split (UI)
|
||||
**Goal:** The vertical-split bank window — pool on top, named-banks tab-page region
|
||||
below, full-height toggles — extending the M5 docked grid. CONTEXT.md §Multi-bank
|
||||
below, full-height toggles — extending the M5 docked grid. CONTEXT-ARCHIVE.md §Multi-bank
|
||||
(bank_panel). **Verify (in DAW):** Pool grid renders on top; named-banks tab strip
|
||||
below (empty when no named banks, one tab per named bank); active-bank **unmistakably**
|
||||
indicated; both full-height toggles collapse the split correctly; sample move/copy
|
||||
@@ -968,7 +968,7 @@ timeline item).
|
||||
**Goal:** Populate `Sample.provenance` (parent sample id + a capture-recipe
|
||||
fingerprint) on resample-from-sample, and ship a **"re-capture from source"**
|
||||
action that regenerates a sample from its recorded source. Reconciled with the
|
||||
dual-canvas (Phase D2) model. CONTEXT.md §Data model, §capture; product framing +
|
||||
dual-canvas (Phase D2) model. CONTEXT-ARCHIVE.md §Data model, §capture; product framing +
|
||||
the settled reconciliation in `docs/product/provenance.md`.
|
||||
**Verify (in DAW):** A sample resampled from a bank sample carries its parent id +
|
||||
recipe fingerprint; "re-capture from source" regenerates the file into the bank
|
||||
@@ -1065,7 +1065,7 @@ bank folder, the files referenced by the book (unioned across all banks, pool
|
||||
included), and the **owned-file manifest** (fork R-D, written from capture onward by
|
||||
B-cap), compute the orphan set `(owned ∩ present) − referenced`. The mirror of
|
||||
`ViewModeModel::reconcile(liveGuids)`, one level down (files instead of GUIDs).
|
||||
CONTEXT.md §Prune (Module architecture — pure).
|
||||
CONTEXT-ARCHIVE.md §Prune (Module architecture — pure).
|
||||
**Verify:** CTest green. **Prune null test:** a folder whose every file is
|
||||
referenced deletes nothing; prune returns exactly `(owned ∩ present) − referenced`
|
||||
and nothing else. Referenced-set unioned across every bank (a file referenced by any
|
||||
@@ -1095,7 +1095,7 @@ hand-dropped file) is never an orphan.
|
||||
**Goal:** Enumerate the current project bank folder (M4 project-relative resolution),
|
||||
supply the referenced-set and the **owned-file manifest** (from B-cap) from the
|
||||
session, feed the pure core, and produce a dry-run manifest. No deletion in this
|
||||
wave — the report path only. CONTEXT.md §Prune (persist / prune shell).
|
||||
wave — the report path only. CONTEXT-ARCHIVE.md §Prune (persist / prune shell).
|
||||
**Verify (in DAW):** Dry-run reports the orphan count + reclaimed size (+ file list
|
||||
for a small set) against the resolved current bank folder; resolves paths the same
|
||||
way the index does (survives a Save-As relocation); deletes nothing.
|
||||
@@ -1123,7 +1123,7 @@ way the index does (survives a Save-As relocation); deletes nothing.
|
||||
**Goal:** The confirmed deletion step, the bindable "Prune bank folder" action, and
|
||||
a `bank_panel` prune button: dry-run-first, confirm-with-manifest, then reclaim the
|
||||
orphan set — via OS trash where portably available (fork R-C), else unlink.
|
||||
CONTEXT.md §Prune (guardrails, API).
|
||||
CONTEXT.md §Prune (guardrails) + CONTEXT-ARCHIVE.md §Prune (API).
|
||||
**Verify (in DAW):** "Prune bank folder" (action or panel button) reports first,
|
||||
deletes only on explicit confirm, and reclaims exactly the orphan set — never a
|
||||
referenced file, never a hand-dropped non-bank file; the referenced/owned-set safety
|
||||
@@ -1168,7 +1168,7 @@ untouched.
|
||||
|
||||
## Milestone 11 — polish (wave 1)
|
||||
**Goal:** Batch capture (per selected item / per razor area), action trigger buttons
|
||||
+ keybinding help labels, conform-on-insert. CONTEXT.md Build order 11.
|
||||
+ keybinding help labels, conform-on-insert. CONTEXT-ARCHIVE.md Build order 11.
|
||||
**Verify (gates 23/23 both configs):** CTest green on new pure targets; each
|
||||
in-panel action fires through the command-id contract without regressing precision
|
||||
invariants.
|
||||
@@ -1197,7 +1197,7 @@ invariants.
|
||||
architecture. Mirror of the null-test cut precedent ("Cut (fixed by Daniel)").
|
||||
|
||||
## Milestone 11 — polish (wave 2 / completion)
|
||||
**Goal:** Native OS drag-out — the final M11 polish item. CONTEXT.md Build order 11,
|
||||
**Goal:** Native OS drag-out — the final M11 polish item. CONTEXT-ARCHIVE.md Build order 11,
|
||||
§Non-goals (drag-out deferred to last).
|
||||
**Verify (gates 24/24 both configs):** Drag-out places a valid file in the OS target
|
||||
without regressing the precision invariants; copy-only semantics throughout (no source
|
||||
@@ -1253,7 +1253,7 @@ CONTEXT.md §Prune (Settled forks).
|
||||
**Goal:** Stand up the shared LICE-based drawing kit that every Phase L surface (L2 dock
|
||||
panel, L3 VST editor) consumes — palette/theme module, pure component geometry/hit-test
|
||||
helpers, LICE draw shell, and retirement of the GDI `DrawText` path in `bank_panel`.
|
||||
CONTEXT.md §Phase L (Kit architecture). DS-1 (LICE + WDL, no external frameworks) and
|
||||
CONTEXT-ARCHIVE.md §Phase L (Kit architecture). DS-1 (LICE + WDL, no external frameworks) and
|
||||
DS-2 (Direction B Neon Console + Direction C spectral) are the governing settled decisions.
|
||||
**Verify:** CTest green (`theme_tests`, `component_geometry_tests`). Each text-on-surface
|
||||
pair in the palette clears its WCAG floor (tested). `bank_panel` text routes through
|
||||
@@ -1286,7 +1286,7 @@ cached-font `text()` — GDI `DrawText` path retired. Double-buffer discipline p
|
||||
## L2 — dock-panel layout redesign
|
||||
**Goal:** Full layout redesign of the `bank_panel` dock window — task-grouped action bar,
|
||||
full M11-aware button inventory placed by cluster, entire panel drawn through the L1 kit.
|
||||
CONTEXT.md §Phase L (L2 scope). DS-3 (thorough layout redesign, not a light re-skin) is the
|
||||
CONTEXT-ARCHIVE.md §Phase L (L2 scope). DS-3 (thorough layout redesign, not a light re-skin) is the
|
||||
governing settled decision; sequenced after M11 merged.
|
||||
**Verify:** CTest green (`action_bar_tests`). The panel renders in the settled B+spectral
|
||||
language through the L1 kit — chrome, buttons, tabs, grid cells, dividers all by palette
|
||||
@@ -1315,8 +1315,8 @@ three-zone structure: top toolbar (capture + placement + maintenance), bottom to
|
||||
View tagging + switching), footer (narrow mode toggle · Tail button · Prune). A layout
|
||||
re-home of buttons that fire existing actions; no new actions, no capture/placement behavior
|
||||
change, no touching the "capture ≠ placement" principle. Independent of L3.
|
||||
CONTEXT.md §Phase L (L4 dock-panel button layout). Product framing:
|
||||
`docs/product/visual-design-language.md` §L4.
|
||||
CONTEXT-ARCHIVE.md §Phase L (L4 dock-panel button layout). Product framing:
|
||||
`CONTEXT-ARCHIVE.md` §L4 dock-panel button layout.
|
||||
**Verify (in DAW):** the top toolbar fires every capture + placement + maintenance action; the
|
||||
bottom toolbar tags/untags selected tracks and switches/toggles Arrange/Design/show-both; the
|
||||
footer shows a narrow `[Arrange|Design]` toggle at the left, a Tail button that cycles tail
|
||||
@@ -1552,7 +1552,7 @@ repitch/interpolation from root note, keymap resolution — unit-tested in CTest
|
||||
known signals. **The heart of the phase (D3); the mirror of
|
||||
`bank_model`/`peaks`/`view_mode_model`/`bank_book`; test it hard.** The core is
|
||||
invariant under the build-shape choice — no VST3 or REAPER type at its boundary.
|
||||
CONTEXT.md §Phase S (pure core, module architecture).
|
||||
CONTEXT-ARCHIVE.md §Phase S (pure core, module architecture).
|
||||
**Verify:** CTest green. Voice allocation is correct under polyphony (note-on/off,
|
||||
voice stealing where bounded); ADSR shape asserted against a known signal (mirror of
|
||||
`peaks`); repitch from root note produces the expected pitch ratio; keymap resolution
|
||||
@@ -1807,7 +1807,7 @@ capture-first layout. All layout/hit-test math is **pure geometry** (new `keyboa
|
||||
a `capture_browser` layout module — mirrors of `mode_switch`/`editor_geometry`); the LICE
|
||||
draw + drag-state machine is the editor shell. RT discipline untouched (edits commit
|
||||
off-thread via `commitMapAndReload`); the instrument stays a **read-only bank consumer**.
|
||||
CONTEXT.md §Phase S (ReaSampler 9000 UX — capture-first editor).
|
||||
CONTEXT-ARCHIVE.md §Phase S (ReaSampler 9000 UX — capture-first editor).
|
||||
|
||||
**Policy reversal — fresh instance is SILENT, nothing auto-selected (was S4).** The S4
|
||||
"first sample plays" fallback is **removed**: on open with no stored selection, the
|
||||
@@ -1907,7 +1907,7 @@ loop, snapping to zero-crossings (the S2 spec's zero-crossing-aware requirement)
|
||||
points are a **performance-map override on the zone** where set, seeded from the bank
|
||||
intrinsic (D-B split: the bank carries the file-fact default; the instrument's drag is the
|
||||
performance choice). All marker/waveform layout + hit-test is pure geometry; peaks compute
|
||||
reuses `peaks`; the draw + drag is the shell. CONTEXT.md §Phase S (ReaSampler 9000 UX —
|
||||
reuses `peaks`; the draw + drag is the shell. CONTEXT-ARCHIVE.md §Phase S (ReaSampler 9000 UX —
|
||||
waveform view).
|
||||
**Verify (in DAW):** selecting a zone shows its sample's waveform; dragging the loop-start
|
||||
and loop-end markers sets the sustain loop and a held note audibly loops that region;
|
||||
@@ -1953,7 +1953,7 @@ is fixed — expose attack/decay/sustain/release as draggable sliders, per-insta
|
||||
This is the "sensible list handling + direct manipulation of the parameters that exist"
|
||||
tier. All slider/scroll/search-box layout + hit-test is pure geometry; the shell draws +
|
||||
routes; ADSR/scroll/filter state is instrument-owned (component state / transient UI
|
||||
state). CONTEXT.md §Phase S (ReaSampler 9000 UX — scale + ergonomics).
|
||||
state). CONTEXT-ARCHIVE.md §Phase S (ReaSampler 9000 UX — scale + ergonomics).
|
||||
**Verify (in DAW):** a bank with more samples than fit **scrolls** (wheel + drag) and every
|
||||
sample is reachable; typing filters the list to matching names; a zone's low/high/root can
|
||||
be **typed** (not only dragged) via a click-to-edit field; the amp envelope's ADSR is
|
||||
@@ -2017,7 +2017,7 @@ into the voice engine; today they are fixed defaults), S5 (the map the numeric f
|
||||
OS file drop onto the editor window. The cross-artifact relay was a spike — the
|
||||
instrument's REAPER bridge (`reaper_bridge`) is deliberately READ-ONLY; the relay is
|
||||
DEGRADED and deferred. The two landed items are the drop-accept surface and the UX degrade
|
||||
path. The deferred relay item remains in `PLAN.md`. CONTEXT.md §Phase S (drop-to-load).
|
||||
path. The deferred relay item remains in `PLAN.md`. CONTEXT-ARCHIVE.md §Phase S (drop-to-load).
|
||||
|
||||
**Spike verdict (ps-w12, 2026-07-27): DEGRADED.** The relay would require (a) a new
|
||||
instrument WRITE seam into ext-state and (b) an extension-side timer poller + claim/clear
|
||||
@@ -2151,7 +2151,7 @@ capture **already loaded and selected** for playback. A third `DragGesture` —
|
||||
VST3 component-state injection via `TrackFX_SetNamedConfigParm(..., "vst_chunk", blob)`.
|
||||
The shared `instrument_drop` pure module constructs the blob via the instrument's own
|
||||
`sample_map::serializeComponentState`/`deserializeComponentState` — one serializer called
|
||||
from both artifacts, so the blob format cannot drift. CONTEXT.md §Phase S (drop-and-load).
|
||||
from both artifacts, so the blob format cannot drift. CONTEXT-ARCHIVE.md §Phase S (drop-and-load).
|
||||
**Verify (in DAW):** dragging a single capture from the dock over a track's FX button
|
||||
highlights it; dropping instantiates ReaSampler 9000 on that track with the dragged
|
||||
capture loaded, selected, and MIDI-playable immediately; OS drag-out to Explorer still works
|
||||
|
||||
Reference in New Issue
Block a user