docs(phase-s): settle S-VIEW velocity persistence + draggable nodes, single-pass on L3
F1 -> preview velocity persists via VST3 component state (v5->v6). F2 -> envelope nodes draggable via new pure envelope_edit module. Drop the two-pass L3 restyle framing; build on the merged L3 LnF. F3 remains open.
This commit is contained in:
@@ -190,10 +190,14 @@ is **ReaSampler 9000**. Framing + propagation surfaces:
|
||||
> §Addendum r9. When a point lands, doc-keeper moves it to `COMPLETED.md`.
|
||||
>
|
||||
> **Depends on Phase S being on dev** (this redesigns Phase S editor shells —
|
||||
> `reasampler_editor.cpp` + the pure `src/vst/` geometry modules). The Phase L L3 restyle and
|
||||
> this S-VIEW redesign both touch the editor; sequence so they do not collide (S-VIEW is a
|
||||
> layout/param change, L3 is a palette/kit change — best landed as one editor pass or S-VIEW then
|
||||
> L3-restyle-the-new-layout).
|
||||
> `reasampler_editor.cpp` + the pure `src/vst/` geometry modules). **Phase L L3 is FINISHED and
|
||||
> merged** (2026-07-27, commit `c53683e` — `reasampler_editor.cpp` + `reasampler_embed.cpp`
|
||||
> restyled through the L1 kit). S-VIEW builds the new three-view layout **directly on the current
|
||||
> L3 look-and-feel as its baseline — one implementation pass, styled correctly from the start.**
|
||||
> There is **no two-pass "land S-VIEW then restyle through L3"** — L3 already happened; every new
|
||||
> S-VIEW surface (Sample face, Browse modal, Zone surface, envelope overlay + node handles,
|
||||
> piano-key strip, preview cluster) is drawn through the L1 kit at build time, inheriting the L3
|
||||
> palette and component-draw grammar. Restyle-after is not a concern.
|
||||
|
||||
**Goal:** A three-view editor that makes "pick a capture, tune it, play it" fast, easy, and fun —
|
||||
Sample is home, Browse is an easy-to-summon modal picker, Zone is the deliberate keymap surface.
|
||||
@@ -212,15 +216,26 @@ piano-key pattern work; drop-a-capture-onto-FX instantiates a playing instance.
|
||||
Pitch engine / AHDSR|Trigger / AD pitch env — moved from Zone's param panel, single-capture
|
||||
one-zone storage per S15-F2). Reference grammar: Simpler / Phase Plant (labelled value-strip
|
||||
under a hero waveform).
|
||||
- [ ] **S-VIEW-3 — envelope overlay on the hero waveform (new visual).** Draw the amp envelope
|
||||
(AHDSR for Gate, fade/%-length for Trigger) as a curve over the Sample waveform at accurate
|
||||
wall-clock time. New pure `envelope_overlay` module (params + frame-length → polyline; unit-
|
||||
tested); shell traces it in an accent hue. Informative + decorative — sliders stay the edit
|
||||
surface (node-drag deferred, fork S-VIEW-F2).
|
||||
- [ ] **S-VIEW-3 — envelope overlay + DRAGGABLE NODES on the hero waveform (new visual + edit
|
||||
surface).** Draw the amp envelope (AHDSR for Gate, fade/%-length for Trigger) as a curve over the
|
||||
Sample waveform at accurate wall-clock time. New pure `envelope_overlay` module (params + frame-
|
||||
length → polyline; unit-tested); shell traces it in an accent hue. **The breakpoints are draggable
|
||||
handles** (S-VIEW-F2 SETTLED — in scope, not deferred): X → segment time, Y → level on level-
|
||||
breakpoint nodes (sustain drags both axes), monotonic-in-time + range-clamped so a drag can never
|
||||
produce a param the slider couldn't. New pure `envelope_edit` module (node hit-test + pixel-delta→
|
||||
clamped-param inverse map; mirror of `card_drag`; unit-tested at the clamp/monotonic boundaries).
|
||||
Sliders stay the precise numeric surface; **both surfaces read/write the same `PerformanceZone`
|
||||
envelope fields** — one source of truth, kept in sync by re-reading params each paint (no listener
|
||||
chain). Node-drag commits via the same off-audio-thread path a slider edit uses (no new RT
|
||||
surface).
|
||||
- [ ] **S-VIEW-4 — preview-trigger + velocity knob (new, Sample view).** A button firing the
|
||||
sampler at the loaded capture's root note through the live voice engine (off the audio-thread
|
||||
commit path — no MIDI controller needed) + an adjacent velocity knob. Preview velocity leans
|
||||
**transient editor state** (fork S-VIEW-F1). RT discipline: no `process`-thread work.
|
||||
commit path — no MIDI controller needed) + an adjacent velocity knob. **Preview velocity PERSISTS**
|
||||
(S-VIEW-F1 SETTLED): it lands as a new top-level `previewVelocity` field on `ComponentState` via an
|
||||
**envelope bump to v6** (`src/vst/sample_map.h`), round-tripped through the processor's existing
|
||||
`getState`/`setState` over `IBStream` — **not** the extension's project-scoped `persist` ext-state
|
||||
(wrong owner + wrong scope; see CONTEXT.md §S-VIEW). Zones payload untouched (independent version
|
||||
axes); older blobs lift to a mid default. RT discipline: no `process`-thread work.
|
||||
- [ ] **S-VIEW-5 — Browse reduced to *choosing* (modal over Sample).** Keep search + bank tabs +
|
||||
captures grid + scroll + selection; add **confirm/cancel** (double-click loads). **Remove** the
|
||||
large waveform preview, Mono/Stereo toggle, root keyboard-strip (all moved to Sample), and the
|
||||
@@ -262,10 +277,9 @@ piano-key pattern work; drop-a-capture-onto-FX instantiates a playing instance.
|
||||
the new default showing the full Sample face without scroll; cannot shrink below the floor.
|
||||
|
||||
### Phase S editor redesign — forks (Daniel's to call)
|
||||
- **S-VIEW-F1 — preview velocity persistence:** transient editor state (**lean**) vs. a small
|
||||
persisted convenience. Lean transient — no compat surface, no version bump.
|
||||
- **S-VIEW-F2 — envelope-overlay interactivity:** read-only overlay + sliders edit (**lean**, ship
|
||||
first) vs. draggable envelope nodes (deferred stretch).
|
||||
*(S-VIEW-F1 and S-VIEW-F2 SETTLED 2026-07-27 — folded into S-VIEW-4 / S-VIEW-3 above. F1: preview
|
||||
velocity persists via envelope-v6 `ComponentState`. F2: envelope nodes are draggable via the pure
|
||||
`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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user