docs(product): reframe S10 capture-first (browser + single-capture setup); reverse S4 auto-select; settle S-NAME-1 filename rename

This commit is contained in:
2026-07-26 19:49:03 -04:00
parent 5de2183ce3
commit 991c190bb8
3 changed files with 312 additions and 102 deletions
+73 -11
View File
@@ -7,10 +7,15 @@ the **product framing behind a scoped phase**. Its build roadmap lives in **PLAN
*why* (the plugin-format reasoning, the bare-VST3-vs-JUCE assessment, the settled
decision record).
Status: framed by product-designer (2026-07-26), **revised 2026-07-26 (r5)**. r5 records
the post-DAW-test directives on the S1S6 instrument: the product name **ReaSampler 9000**
and the **"better than RS5K" UX overhaul** (Phase S points S10S13) — see the Addendum in
§4. r4 (below) settled the four residual forks D-A..D-D. The
Status: framed by product-designer (2026-07-26), **revised 2026-07-26 (r6)**. r6 records the
**workflow-first reframe of S10** (Daniel, 2026-07-26): the editor's default face becomes a
**capture browser + guided single-capture setup**, a fresh instance is **silent with a "pick
a capture" empty state** (reversing the S4 first-sample auto-play), and multi-zone editing is
demoted to an opt-in Zones panel — see the r6 Addendum in §4. r6 also settles **S-NAME-1**
(rename the binary filename too, UID locked). r5 records the post-DAW-test directives on the
S1S6 instrument: the product name **ReaSampler 9000** and the **"better than RS5K" UX
overhaul** (Phase S points S10S13) — see the r5 Addendum in §4. r4 (below) settled the four
residual forks D-A..D-D. The
"no PLAN.md footprint" era is **over** — with D-A through D-D settled (below), the
instrument was scoped into **Phase S** (codename Daniel's: "S" for Sampler, because "D"
collides with the existing Design View phase). **PLAN.md §Phase S is now the
@@ -676,8 +681,9 @@ Instrument"), the S6 embed-strip label, and the docs. **Compat guard (load-beari
orphans every existing instance. The name change is **display-string-only** on the code
side. *Fork S-NAME-1 (Daniel's call):* the on-disk **binary filename** — renaming it
(`reasampler_9000.vst3`) carries compat weight (REAPER keys a saved project's plugin
reference partly by filename), so the lean is **keep the filename, change only display
strings**; flagged, not decided.
reference partly by filename), so the r5 lean was **keep the filename, change only display
strings**; flagged, not decided. *(Now SETTLED in r6, below: rename the filename too, UID
locked, compat is a DAW-verify — the r5 lean is superseded.)*
**The UX bar is "better than ReaSamplOMatic5000."** Verdict verbatim: "okay it works, but
the UX is awful." The S1S6 editor was spike-grade — a clickable list, zone rows with
@@ -711,6 +717,59 @@ is no hard ordering, but the live wound is the editor. Honest counter: if the st
*sound* is what blocks real use, S7-first is defensible — but "it works, the UX is awful"
names the editor as the wound.
### Addendum — S10 workflow-first reframe + S-NAME-1 settled (Daniel, 2026-07-26, r6)
After the r5 UX-overhaul directive was specced (keymap-first S10), Daniel reframed the
workflow before S10 was implemented. This **revises S10** and settles S-NAME-1. Settled
directions, not open forks — recorded here per the doc's settled-decisions convention; PLAN.md
§S10 and CONTEXT.md §Phase S (workflow hierarchy) carry the spec.
**The reframe, verbatim (Daniel, 2026-07-26):** *"We need to think hard about the workflow
with this plugin. Have a giant list of 'item' blocks is visually useless. When the plugin is
loaded, we should not have any samples selected. We also need to show the peaks for each
capture. Filters for a specific bank would be useful. We need to be graphic and descriptive
with the controls, and guide the user QUICKLY towards setting up a sampler. Most of the time
the zones won't be used, but it's a nice-to-have. So we should optimize the UX for working
with individual captures, not a huge list of everything."*
**What changed in S10 (the hierarchy is Daniel's; details are product judgment):**
1. **Primary flow = one capture, fast.** The metric is **time-to-first-note**: open → pick a
capture → see it → play it. The default face serves the single capture, not a keymap.
2. **Fresh instance is SILENT — nothing auto-selected (policy reversal of S4).** The S4
"first sample plays" convenience is **removed**: open with no stored selection → the
instrument plays nothing and shows a **"pick a capture" empty state**, not auto-play of
sample #1. Concretely retires the `selectSample` first-sample fallback (`sample_map.cpp`)
and the processor's Tier-0 fallback that resolved it (an empty stored id → silence). This
is a deliberate reversal of the S4 default, recorded as such — not a regression.
3. **Capture browser, not an item list.** Scannable cards with **peak thumbnails** (the
`Sample` peaks bank_model already carries — the same data the dock panel thumbnails draw),
name, root/key badge, and a **bank filter** (bank_book named banks). "A giant list of item
blocks" is the named anti-pattern; the browser is designed for scanning by eye. `SampleChoice`
grows to carry the peaks + badge + bank (today it is only `{id, displayName}`).
4. **Graphic, descriptive controls with a guided fast path.** Once a capture is picked, a
prominent single-capture setup surface (root note, play-mode basics, level); the keyboard
strip serves the single-capture case first (shows the capture's root).
5. **Zones demoted to an opt-in "Zones" panel (S10-Z), not the default face.** "Most of the
time the zones won't be used." The keyboard-strip drag machinery is still built (it serves
both the single-capture root-set and the opt-in zoning), but multi-zone editing is behind a
toggle. Some S12 list ergonomics **pulled into S10**: the browser card layout, peak
thumbnails, and bank filter are S10's; S12 keeps **scroll** + **type-to-filter search**
layered over the S10 browser. S11's waveform is the same surface S10 shows for the picked
capture ("see it"). No renumber — S11/S12/S13 keep their numbers and their boundaries were
annotated, not moved wholesale.
**S-NAME-1 → SETTLED: rename the binary filename too.** The r5 lean (keep the filename,
display-strings-only) is superseded. The on-disk module is renamed to match the product (e.g.
`reasampler_9000.vst3`) — full surface: **CMake `OUTPUT_NAME`**, factory vendor/name strings,
editor title, embed label. The **VST3 class UID stays locked** as the compat anchor.
**Compat is a DAW-verify, not an asserted fact:** the working assumption is REAPER rebinds a
saved instance by class UID (not filename), so a rename with an unchanged UID keeps saved
projects working — but a web check surfaced a JUCE/VST3-replace-VST2 case suggesting REAPER's
binding can be more nuanced than "UID only" (an FXID match is involved), so UID-only rebinding
is **not** safe to assert from source. Verify by save-rename-reopen in the DAW; if REAPER keys
partly on filename, fall back to keeping the filename and record that as shipped.
---
## Where this landed
@@ -738,11 +797,14 @@ Two further directions set post-scoping (2026-07-26; see the Addendum in §4):
Post-DAW-test directives (2026-07-26; see the "product name + UX overhaul" Addendum in §4):
7. **Product name → `ReaSampler 9000`** (display-string-only; VST3 class UID unchanged;
binary filename = fork S-NAME-1, Daniel's call).
8. **UX overhaul → "better than RS5K"** (**S10S13**): direct-manipulation keyboard-strip
keymap editor (S10), waveform + draggable loop points (S11), scale/ergonomics — scroll,
search, direct numeric entry, ADSR (S12), and drop-to-load folding in the S8 relay (S13).
7. **Product name → `ReaSampler 9000`** (VST3 class UID unchanged; **binary filename renamed
too — S-NAME-1 SETTLED r6**, compat is a DAW-verify).
8. **UX overhaul → workflow-first, "better than RS5K"** (**S10S13**; S10 **reframed r6**):
S10 = **capture browser (peak thumbnails + bank filter) + guided single-capture setup**,
**silent-on-open / no auto-select** (reverses S4), multi-zone editing demoted to an opt-in
Zones panel (S10-Z); S11 waveform + draggable loop points; S12 scroll/search over the S10
browser + numeric entry + ADSR; S13 drop-to-load folding in the S8 relay. Metric:
time-to-first-note.
9. **Visual design language → modern/sleek, system-wide — moved to its own Phase L
(2026-07-26).** The look-and-feel work (a shared LICE drawing kit + the surfaces that
adopt it) was originally drafted here as Phase S points S0-DS + S14; it has been **lifted