docs(phase-s): fold velocity->amp transfer-curve editor into S-VIEW (r10)
Per-PerformanceZone state home, new pure velocity_curve module, application at Voice::start(), Sample-view editor UI. New PLAN points S-VIEW-9 (foundation, blocked by Wave 1 T-KEYTRK) + S-VIEW-10 (Wave 2 shell). Fork R10-F1 (flat-y=1 default is a non-back-compat behavior change) left open for Daniel.
This commit is contained in:
@@ -181,8 +181,9 @@ is **ReaSampler 9000**. Framing + propagation surfaces:
|
||||
> **Additive Phase S sub-phase (S-VIEW; Daniel, 2026-07-27, r9).** Re-partitions the ReaSampler
|
||||
> 9000 editor from a two-view toggle into a **three-view model where the loaded sample is the
|
||||
> home** — Sample (default face), Browse (modal picker over Sample), Zone (dedicated keymap
|
||||
> surface). Adds two performance parameters (key-tracking, preview velocity) and two visual
|
||||
> components (envelope overlay, real piano-key pattern), and frames two engineering prerequisites
|
||||
> surface). Adds three performance parameters (key-tracking, preview velocity, and the r10
|
||||
> velocity→amp transfer curve) and three visual components (envelope overlay, real piano-key
|
||||
> pattern, and the r10 velocity-curve editor), and frames two engineering prerequisites
|
||||
> (drop-to-FX bug, default window size). An **editor** redesign — the S3 voice engine, keymap
|
||||
> resolution, and read-only-over-bank contract are **unchanged**; component state extends
|
||||
> additively for key-tracking; VST3 class UID unchanged. Authoritative spec: **CONTEXT.md §Phase
|
||||
@@ -255,6 +256,26 @@ piano-key pattern work; drop-a-capture-onto-FX instantiates a playing instance.
|
||||
- [ ] **S-VIEW-8 — Zone view retained + wired.** Keep +Add Zone / Delete, the per-zone keyboard
|
||||
strip (now with the piano pattern), the Low/High/Root numeric-entry legend, and the per-zone
|
||||
param panel; add the key-tracking control. Nothing from today's Zones view dropped.
|
||||
- [ ] **S-VIEW-9 — velocity → amp transfer-curve: pure core + engine application (foundation, r10).**
|
||||
New pure `velocity_curve` module (bezier `eval(velocity 0–127)→amp 0–1`, monotonic-in-x, clamped
|
||||
to the 0–127×0–1 box; control-point add/move/delete x-ordered + box-clamped; hit-test + pixel-
|
||||
delta→clamped-point inverse map; mirror of `envelope_edit`; unit-tested at eval + clamp/order
|
||||
boundaries). Additive `velocityCurve` field on `PerformanceZone` (instrument-owned, D-B), on the
|
||||
**zones-payload version axis**, default = the R10-F1 curve; older blobs lift to that default.
|
||||
Apply at **`Voice::start()`** — replace `velocityGain_ = velocity / 127.0` (`sampler_core.cpp:261`)
|
||||
with `velocityGain_ = curve.eval(velocity)`, off the per-frame path (no new RT work). **BLOCKED BY
|
||||
Wave 1 T-KEYTRK** (`PerformanceZone` schema + payload bump) — this is a LATER additive payload bump
|
||||
sequencing AFTER T-KEYTRK merges (the two never collide on one payload version). NOT blocked by
|
||||
T-STATE (that owns the per-instance `ComponentState` v6 axis for preview velocity). See CONTEXT.md
|
||||
§S-VIEW velocity-curve sub-section.
|
||||
- [ ] **S-VIEW-10 — velocity-curve editor UI (shell, Sample + Zone views, r10).** A compact transfer-
|
||||
curve editor band on the **Sample view** adjacent to the envelope overlay (X = velocity 0–127, Y =
|
||||
amp 0–1; bezier traced in an accent hue; draggable node markers per control point; add on empty-
|
||||
space click, delete on modifier-click/drag-off), drawn through the **L1 kit**; the same editor in
|
||||
the Zone per-zone param panel (one curve per zone). Shell (`reasampler_editor.cpp`) does the LICE
|
||||
draw + mouse routing; **all geometry/hit-test/clamp math in the pure `velocity_curve` module**.
|
||||
**Wave 2 shell-integration item** — gated on S-VIEW-9 (foundation) + composes with S-VIEW-2 (Sample
|
||||
face) / S-VIEW-3 (envelope overlay).
|
||||
|
||||
### Phase S editor prerequisites — routed to staff-engineer (bug + default; NOT design forks)
|
||||
|
||||
@@ -282,6 +303,12 @@ velocity persists via envelope-v6 `ComponentState`. F2: envelope nodes are dragg
|
||||
`envelope_edit` module. Only F3 remains open.)*
|
||||
- **S-VIEW-F3 — Browse modal presentation:** full-window overlay (**lean**) vs. a centered sheet
|
||||
over a dimmed Sample. Presentation detail.
|
||||
- **R10-F1 — velocity-curve default (r10):** **Option A flat y=1** (**lean** — Daniel's verbatim
|
||||
"any velocity plays at full level"; NOT back-compat with today's linear `velocity/127`, so
|
||||
existing zones' dynamics change — flagged as a deliberate shipped-behavior change) vs. **Option B
|
||||
linear y = x/127** (bit-identical to the shipped engine; contradicts the verbatim "full level"
|
||||
default). The only non-back-compat surface the velocity-curve feature introduces. **Daniel's
|
||||
call.**
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user