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:
@@ -43,7 +43,7 @@ The VST3 target forks identically: `REASAMPLER_CHANNEL=beta` produces `reasample
|
|||||||
|
|
||||||
`src/resource.rc` must be pre-processed by SWELL's resgen once per platform:
|
`src/resource.rc` must be pre-processed by SWELL's resgen once per platform:
|
||||||
|
|
||||||
php vendor/WDL/WDL/swell/mac_resgen.php src/resource.rc # macOS; Linux reuses the output
|
php vendor/WDL/WDL/swell/swell_resgen.php src/resource.rc # macOS; Linux reuses the output
|
||||||
|
|
||||||
Add the generated file to the appropriate `APPLE` / Linux `target_sources` block in CMakeLists.txt. The SWS extension build is the canonical reference for this step.
|
Add the generated file to the appropriate `APPLE` / Linux `target_sources` block in CMakeLists.txt. The SWS extension build is the canonical reference for this step.
|
||||||
|
|
||||||
|
|||||||
+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)
|
## Milestone 1 — bank_model + JSON round-trip (pure)
|
||||||
**Goal:** The `Sample` metadata struct and `BankIndex` (add / remove / query /
|
**Goal:** The `Sample` metadata struct and `BankIndex` (add / remove / query /
|
||||||
tier moves / dedup-by-hash) with JSON serialize/deserialize to `std::string`.
|
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)
|
**Verify:** CTest green. Round-trip is lossless (deserialize(serialize(x)) == x)
|
||||||
across all fields; dedup-by-hash and tier filtering asserted; **relative paths
|
across all fields; dedup-by-hash and tier filtering asserted; **relative paths
|
||||||
only** invariant enforced at the model boundary (no absolute path accepted/stored).
|
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,
|
- [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,
|
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,
|
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] `BankIndex`: ordered collection keyed by id; add / remove / query.
|
||||||
- [x] Hash lookup for dedup-by-content-hash.
|
- [x] Hash lookup for dedup-by-content-hash.
|
||||||
- [x] Tier model (scratch | archive) + tier-move + tier filtering; scratch marked
|
- [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)
|
## Milestone 2 — peaks (pure)
|
||||||
**Goal:** Compute waveform min/max bins from raw PCM, dependency-free (not
|
**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
|
**Verify:** CTest green. Fed a known signal (full-scale sine, ramp), asserted
|
||||||
min/max envelope per bin matches expected within tolerance; channel count
|
min/max envelope per bin matches expected within tolerance; channel count
|
||||||
preserved; bin count honored for arbitrary sample lengths (incl. remainder bin).
|
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)
|
## Milestone 3 — Offline capture spike (REAPER shell)
|
||||||
**Goal:** Offline-render the time-selection master mix to a wav in the project
|
**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.
|
§REAPER API surface (offline render), Build order 3.
|
||||||
**Verify (in DAW):** Render runs via `Main_OnCommand(42230)` ("Render using most
|
**Verify (in DAW):** Render runs via `Main_OnCommand(42230)` ("Render using most
|
||||||
recent settings") — REAPER always shows its offline-render progress window; no
|
recent settings") — REAPER always shows its offline-render progress window; no
|
||||||
@@ -87,7 +87,7 @@ fallback).
|
|||||||
added silence without an explicit tail).
|
added silence without an explicit tail).
|
||||||
|
|
||||||
- [x] `ICaptureBackend` interface + `CaptureRequest` (source mode, time range,
|
- [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 +
|
- [x] `OfflineRenderBackend`: drive `GetSetProjectInfo` render settings +
|
||||||
`GetSetProjectInfo_String` file/pattern/format; **verify every flag against
|
`GetSetProjectInfo_String` file/pattern/format; **verify every flag against
|
||||||
`vendor/reaper-sdk/sdk/reaper_plugin_functions.h`.**
|
`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)
|
## Milestone 4 — persist (index ↔ project ext state)
|
||||||
**Goal:** Write the `BankIndex` JSON to project ext state, reload on project open;
|
**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
|
**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
|
with the .rpp**; **relative paths only** in the persisted index (Save As to a new
|
||||||
folder still resolves the bank).
|
folder still resolves the bank).
|
||||||
@@ -121,7 +121,7 @@ folder still resolves the bank).
|
|||||||
## Milestone 5 — bank_panel (docked grid)
|
## Milestone 5 — bank_panel (docked grid)
|
||||||
**Goal:** Docked LICE-drawn grid: thumbnails (from `peaks`), audition,
|
**Goal:** Docked LICE-drawn grid: thumbnails (from `peaks`), audition,
|
||||||
multi-select, keyboard navigation. Reuses the docking setup from the retired
|
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
|
**Verify (in DAW):** Grid docks; thumbnails render from computed peaks; audition
|
||||||
plays selected sample; multi-select + keyboard nav work.
|
plays selected sample; multi-select + keyboard nav work.
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ plays selected sample; multi-select + keyboard nav work.
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Milestone 6 — insert (placement)
|
## 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.
|
§insert, Build order 6.
|
||||||
**Verify (in DAW):** Selected sample inserts at the edit cursor wrapped in
|
**Verify (in DAW):** Selected sample inserts at the edit cursor wrapped in
|
||||||
`Undo_BeginBlock2` / `Undo_EndBlock2`; conform-to-tempo is an explicit flag —
|
`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)
|
## D1 — view_mode_model (pure)
|
||||||
**Goal:** REAPER-free mode registry + membership index + folder-tree-aware
|
**Goal:** REAPER-free mode registry + membership index + folder-tree-aware
|
||||||
visibility derivation + parking/restore planner + JSON round-trip. The heart of the
|
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.
|
**Verify:** CTest green. N-mode model (not a boolean); Arrange + Design seeded.
|
||||||
Restore-planner round-trip (snapshot → park → restore) returns every driven flag to
|
Restore-planner round-trip (snapshot → park → restore) returns every driven flag to
|
||||||
its captured value. Parent-derivation correct against a supplied folder tree.
|
its captured value. Parent-derivation correct against a supplied folder tree.
|
||||||
@@ -182,7 +182,7 @@ mode.
|
|||||||
|
|
||||||
## D2 — view shell (apply flags in the DAW)
|
## D2 — view shell (apply flags in the DAW)
|
||||||
**Goal:** Read the folder tree and drive REAPER flags per the planner.
|
**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
|
**Verify (in DAW):** Toggling active mode hides + parks inactive leaves
|
||||||
(`B_SHOWINTCP`/`B_SHOWINMIXER`/`B_MAINSEND`/`I_FXEN` + per-FX offline) and restores
|
(`B_SHOWINTCP`/`B_SHOWINMIXER`/`B_MAINSEND`/`I_FXEN` + per-FX offline) and restores
|
||||||
active ones from snapshot. **Master untouched. `B_MUTE`/`I_SOLO` untouched.**
|
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)
|
## D3 — persist slice (view state ↔ project ext state)
|
||||||
**Goal:** Serialize the view section into the `"reasampler"` namespace alongside the
|
**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 /
|
**Verify (in DAW):** Membership + active mode + snapshots survive Save / Save As /
|
||||||
close+reopen; on open, the active mode's visibility + processing is reapplied.
|
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
|
Saved-while-parked project restores parked tracks from persisted snapshots (not to a
|
||||||
@@ -215,7 +215,7 @@ guessed "on").
|
|||||||
---
|
---
|
||||||
|
|
||||||
## D4 — actions
|
## 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);
|
(actions). **Verify (in DAW):** Each action registered (bindable in Actions list);
|
||||||
toggle + mode-jumps MIDI-bindable; tag/untag acts on the current track selection.
|
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
|
## Milestone 7 — capture action family
|
||||||
**Goal:** Bindable capture actions for master / selected tracks / selected items /
|
**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
|
**Verify (in DAW):** Each action registered (bindable in Actions list), routes to
|
||||||
the offline backend, and honors wet/dry + tail. **Load-bearing principle:** none
|
the offline backend, and honors wet/dry + tail. **Load-bearing principle:** none
|
||||||
auto-inserts into the arrange.
|
auto-inserts into the arrange.
|
||||||
@@ -357,7 +357,7 @@ auto-inserts into the arrange.
|
|||||||
|
|
||||||
## Milestone 8 — RealtimeRecordBackend
|
## Milestone 8 — RealtimeRecordBackend
|
||||||
**Goal:** Realtime record behind the same `ICaptureBackend`, producing identical
|
**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
|
**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**
|
output via a `CreateTrackSend`; recorded file moves into the bank; **non-destructive**
|
||||||
— temp track (and its sends) removed cleanly, every snapshotted track arm, time
|
— 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
|
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
|
were completed in D2-W3-A; this wave closes the remaining action surface and
|
||||||
cleans up the implementation.
|
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
|
**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
|
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.
|
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
|
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;
|
sample between banks, JSON round-trip + legacy-migration. The heart of the phase;
|
||||||
mirror of `bank_model` / `view_mode_model`; **`BankIndex` untouched (additive)**.
|
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,
|
**Verify:** CTest green. Pool always present, un-deletable, un-renamable,
|
||||||
un-evacuable (rules rejected in-model). Active-bank defaults to pool. Move is
|
un-evacuable (rules rejected in-model). Active-bank defaults to pool. Move is
|
||||||
index-only (source loses entry, destination gains it) and observes destination
|
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
|
**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
|
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
|
`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
|
**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`;
|
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
|
a project saved before this phase (legacy `bank_index` only) loads as pool + zero
|
||||||
@@ -868,7 +868,7 @@ written.
|
|||||||
---
|
---
|
||||||
|
|
||||||
## B3 — actions
|
## 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);
|
(actions). **Verify (in DAW):** Each action registered (bindable in Actions list);
|
||||||
bank-activate + move/copy + evacuate MIDI-bindable; create/rename/delete/evacuate
|
bank-activate + move/copy + evacuate MIDI-bindable; create/rename/delete/evacuate
|
||||||
drive the B1 model via the B2-persisted session.
|
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)
|
## B4 — bank_panel vertical split (UI)
|
||||||
**Goal:** The vertical-split bank window — pool on top, named-banks tab-page region
|
**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
|
(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**
|
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
|
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
|
**Goal:** Populate `Sample.provenance` (parent sample id + a capture-recipe
|
||||||
fingerprint) on resample-from-sample, and ship a **"re-capture from source"**
|
fingerprint) on resample-from-sample, and ship a **"re-capture from source"**
|
||||||
action that regenerates a sample from its recorded source. Reconciled with the
|
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`.
|
the settled reconciliation in `docs/product/provenance.md`.
|
||||||
**Verify (in DAW):** A sample resampled from a bank sample carries its parent id +
|
**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
|
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
|
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
|
B-cap), compute the orphan set `(owned ∩ present) − referenced`. The mirror of
|
||||||
`ViewModeModel::reconcile(liveGuids)`, one level down (files instead of GUIDs).
|
`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
|
**Verify:** CTest green. **Prune null test:** a folder whose every file is
|
||||||
referenced deletes nothing; prune returns exactly `(owned ∩ present) − referenced`
|
referenced deletes nothing; prune returns exactly `(owned ∩ present) − referenced`
|
||||||
and nothing else. Referenced-set unioned across every bank (a file referenced by any
|
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),
|
**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
|
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
|
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
|
**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
|
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.
|
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
|
**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
|
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.
|
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,
|
**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
|
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
|
referenced file, never a hand-dropped non-bank file; the referenced/owned-set safety
|
||||||
@@ -1168,7 +1168,7 @@ untouched.
|
|||||||
|
|
||||||
## Milestone 11 — polish (wave 1)
|
## Milestone 11 — polish (wave 1)
|
||||||
**Goal:** Batch capture (per selected item / per razor area), action trigger buttons
|
**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
|
**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
|
in-panel action fires through the command-id contract without regressing precision
|
||||||
invariants.
|
invariants.
|
||||||
@@ -1197,7 +1197,7 @@ invariants.
|
|||||||
architecture. Mirror of the null-test cut precedent ("Cut (fixed by Daniel)").
|
architecture. Mirror of the null-test cut precedent ("Cut (fixed by Daniel)").
|
||||||
|
|
||||||
## Milestone 11 — polish (wave 2 / completion)
|
## 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).
|
§Non-goals (drag-out deferred to last).
|
||||||
**Verify (gates 24/24 both configs):** Drag-out places a valid file in the OS target
|
**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
|
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
|
**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
|
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`.
|
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.
|
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
|
**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
|
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
|
## L2 — dock-panel layout redesign
|
||||||
**Goal:** Full layout redesign of the `bank_panel` dock window — task-grouped action bar,
|
**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.
|
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.
|
governing settled decision; sequenced after M11 merged.
|
||||||
**Verify:** CTest green (`action_bar_tests`). The panel renders in the settled B+spectral
|
**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
|
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
|
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
|
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.
|
change, no touching the "capture ≠ placement" principle. Independent of L3.
|
||||||
CONTEXT.md §Phase L (L4 dock-panel button layout). Product framing:
|
CONTEXT-ARCHIVE.md §Phase L (L4 dock-panel button layout). Product framing:
|
||||||
`docs/product/visual-design-language.md` §L4.
|
`CONTEXT-ARCHIVE.md` §L4 dock-panel button layout.
|
||||||
**Verify (in DAW):** the top toolbar fires every capture + placement + maintenance action; the
|
**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
|
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
|
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
|
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
|
`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.
|
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,
|
**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
|
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
|
`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
|
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
|
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**.
|
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
|
**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
|
"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
|
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
|
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
|
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).
|
waveform view).
|
||||||
**Verify (in DAW):** selecting a zone shows its sample's waveform; dragging the loop-start
|
**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;
|
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"
|
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 +
|
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
|
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
|
**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
|
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
|
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
|
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
|
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
|
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
|
**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
|
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)`.
|
VST3 component-state injection via `TrackFX_SetNamedConfigParm(..., "vst_chunk", blob)`.
|
||||||
The shared `instrument_drop` pure module constructs the blob via the instrument's own
|
The shared `instrument_drop` pure module constructs the blob via the instrument's own
|
||||||
`sample_map::serializeComponentState`/`deserializeComponentState` — one serializer called
|
`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
|
**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
|
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
|
capture loaded, selected, and MIDI-playable immediately; OS drag-out to Explorer still works
|
||||||
|
|||||||
+6
-9
@@ -30,8 +30,7 @@ REAPER-facing:
|
|||||||
track, time range, tail, SR/bit-depth/channels, output path). Output: a finished
|
track, time range, tail, SR/bit-depth/channels, output path). Output: a finished
|
||||||
file + a populated `Sample` handed to `bank_model`. Capture is always wet; the FX
|
file + a populated `Sample` handed to `bank_model`. Capture is always wet; the FX
|
||||||
*scope* (not a wet/dry dial) is the control — the pure `render_settings` module
|
*scope* (not a wet/dry dial) is the control — the pure `render_settings` module
|
||||||
maps a scope to its render-source bits and its FX-bypass plan (see §Capture FX
|
maps a scope to its render-source bits and its FX-bypass plan (see CLAUDE.md §Precision invariants).
|
||||||
scope below).
|
|
||||||
- `insert` — placement via `InsertMedia`; conform-to-project-tempo vs literal,
|
- `insert` — placement via `InsertMedia`; conform-to-project-tempo vs literal,
|
||||||
as an explicit flag (never silent stretching).
|
as an explicit flag (never silent stretching).
|
||||||
- `bank_panel` — the docked grid: LICE-drawn thumbnails, audition, multi-select,
|
- `bank_panel` — the docked grid: LICE-drawn thumbnails, audition, multi-select,
|
||||||
@@ -65,7 +64,7 @@ Offline render (the crux — prototype this first):
|
|||||||
selected media items (single-file), **track** scope renders selected tracks via
|
selected media items (single-file), **track** scope renders selected tracks via
|
||||||
master. There is **no master-mix scope** (to capture the master, render a track).
|
master. There is **no master-mix scope** (to capture the master, render a track).
|
||||||
Render is always wet — REAPER has no true pre-FX "dry" render bit; FX scoping is done
|
Render is always wet — REAPER has no true pre-FX "dry" render bit; FX scoping is done
|
||||||
by the FX-bypass-around-render mechanism, not a render bit (see §Capture FX scope).
|
by the FX-bypass-around-render mechanism, not a render bit (see CLAUDE.md §Precision invariants).
|
||||||
- Trigger a no-dialog render via the appropriate render action / `RENDER_SETTINGS`
|
- Trigger a no-dialog render via the appropriate render action / `RENDER_SETTINGS`
|
||||||
bit. Confirm the exact command id and the "render without opening dialog" flag
|
bit. Confirm the exact command id and the "render without opening dialog" flag
|
||||||
against current REAPER — do not assume; test that it runs headless.
|
against current REAPER — do not assume; test that it runs headless.
|
||||||
@@ -686,8 +685,7 @@ UX is awful" points at the editor as the live wound, so **S10 leads.**
|
|||||||
- **LICE design-kit surfaces — moved to Phase L.** The shared LICE drawing-kit surface
|
- **LICE design-kit surfaces — moved to Phase L.** The shared LICE drawing-kit surface
|
||||||
verification (`LICE_GradRect`/`LICE_RoundRect`/AA lines/circles/beziers/polygons + the
|
verification (`LICE_GradRect`/`LICE_RoundRect`/AA lines/circles/beziers/polygons + the
|
||||||
`LICE_CachedFont`/`LICE_IFont` font engine, and the vwnd drawing-craft references) now
|
`LICE_CachedFont`/`LICE_IFont` font engine, and the vwnd drawing-craft references) now
|
||||||
lives with **Phase L point L1** on `dev` — see CONTEXT.md §Phase L "LICE / WDL API
|
lives with **Phase L point L1** on `dev` — see §"LICE / WDL API surface" in this file. Phase S surfaces (S10–S13) adopt that kit when it lands; they are not gated on it.
|
||||||
surface". Phase S surfaces (S10–S13) adopt that kit when it lands; they are not gated on it.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -741,7 +739,7 @@ itself**. The extension is the actor for the whole gesture.
|
|||||||
|
|
||||||
**The ReaSampler 9000 load-capture seam (the hard coupling — MUST be added; does not yet
|
**The ReaSampler 9000 load-capture seam (the hard coupling — MUST be added; does not yet
|
||||||
exist).** The Phase S spec today gives the instrument a **live-state *read* seam** (it
|
exist).** The Phase S spec today gives the instrument a **live-state *read* seam** (it
|
||||||
reads bank index + mapping from `"reasampler"` ext-state via the bridge — §The two seams)
|
reads bank index + mapping from `"reasampler"` ext-state via the bridge — CONTEXT.md §The two seams)
|
||||||
but **no entry point for an external actor to say "this fresh instance should play *this
|
but **no entry point for an external actor to say "this fresh instance should play *this
|
||||||
specific* capture."** Reading the bank is not the same as being *pointed at one sample*.
|
specific* capture."** Reading the bank is not the same as being *pointed at one sample*.
|
||||||
This wave is the reason to add that seam, and the seam lands **inside the instrument**
|
This wave is the reason to add that seam, and the seam lands **inside the instrument**
|
||||||
@@ -767,8 +765,7 @@ translate a neutral state representation on its behalf. This makes the **compone
|
|||||||
blob format a shared cross-artifact contract** — one that is **still being defined in Phase
|
blob format a shared cross-artifact contract** — one that is **still being defined in Phase
|
||||||
S** — and a **coordination dependency between the extension and the instrument:** both must
|
S** — and a **coordination dependency between the extension and the instrument:** both must
|
||||||
agree on the exact byte layout that ReaSampler 9000's `setChunk` accepts before either half
|
agree on the exact byte layout that ReaSampler 9000's `setChunk` accepts before either half
|
||||||
is final. The load-capture seam and the component-state persistence work (§Where the toggle
|
is final. The load-capture seam and the component-state persistence work (CONTEXT.md §Where the toggle lives / component-state version bumps) share this one blob format.
|
||||||
lives / component-state version bumps) share this one blob format.
|
|
||||||
|
|
||||||
**Rejected alternative — (A) fresh-instance ext-state handshake.** The extension writes a
|
**Rejected alternative — (A) fresh-instance ext-state handshake.** The extension writes a
|
||||||
small "pending load" hint into `"reasampler"` ext-state keyed to the target track/FX (a
|
small "pending load" hint into `"reasampler"` ext-state keyed to the target track/FX (a
|
||||||
@@ -908,7 +905,7 @@ centerpiece), grouping by *task*:
|
|||||||
affordances, per-selection **move / copy / remove** sample menu.
|
affordances, per-selection **move / copy / remove** sample menu.
|
||||||
- **Prune** button (R-E) — the byte-deleting action; `warn`-colored, set apart.
|
- **Prune** button (R-E) — the byte-deleting action; `warn`-colored, set apart.
|
||||||
|
|
||||||
**M11 adds (dev PLAN.md §M11 — merging to dev now):**
|
**M11 adds (COMPLETED.md §M11):**
|
||||||
- **Action-trigger buttons** — clickable buttons firing the capture + provenance action
|
- **Action-trigger buttons** — clickable buttons firing the capture + provenance action
|
||||||
family directly (capture item / capture track scopes, re-capture from source,
|
family directly (capture item / capture track scopes, re-capture from source,
|
||||||
resample-and-mute-source, batch capture, conform-on-insert, insert-at-cursor, drag-out,
|
resample-and-mute-source, batch capture, conform-on-insert, insert-at-cursor, drag-out,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ it here and appends it to `COMPLETED.md`.
|
|||||||
|
|
||||||
> **Abandoned (Daniel, 2026-07-27) — will not be built.**
|
> **Abandoned (Daniel, 2026-07-27) — will not be built.**
|
||||||
|
|
||||||
**Goal:** "Capture to slot N" / "insert slot N", MIDI-bindable. CONTEXT.md
|
**Goal:** "Capture to slot N" / "insert slot N", MIDI-bindable. CONTEXT-ARCHIVE.md
|
||||||
Build order 9.
|
Build order 9.
|
||||||
**Verify (in DAW):** Slot capture and slot insert fire from MIDI bindings; slot
|
**Verify (in DAW):** Slot capture and slot insert fire from MIDI bindings; slot
|
||||||
state persists via the index.
|
state persists via the index.
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ Pure modules have `<module>_tests` targets that run without REAPER or a DAW.
|
|||||||
|
|
||||||
`src/resource.rc` must be pre-processed by SWELL's resgen once per platform:
|
`src/resource.rc` must be pre-processed by SWELL's resgen once per platform:
|
||||||
|
|
||||||
php vendor/WDL/WDL/swell/mac_resgen.php src/resource.rc # macOS; Linux reuses the output
|
php vendor/WDL/WDL/swell/swell_resgen.php src/resource.rc # macOS; Linux reuses the output
|
||||||
|
|
||||||
Add the generated file to the appropriate `APPLE` / Linux `target_sources` block in
|
Add the generated file to the appropriate `APPLE` / Linux `target_sources` block in
|
||||||
CMakeLists.txt. The SWS extension build is the canonical reference for this step.
|
CMakeLists.txt. The SWS extension build is the canonical reference for this step.
|
||||||
|
|||||||
Reference in New Issue
Block a user