Commit Graph

425 Commits

Author SHA1 Message Date
daniel e2bd4f4351 docs(phase-s): close out S-VIEW-10 — Phase S three-view editor redesign complete
Move S-VIEW-10 (velocity-curve editor UI) to COMPLETED; all ten S-VIEW points landed. No open S-VIEW items remain.
2026-07-27 16:11:12 -04:00
daniel b7cc8d0ca3 Merge pS-w3-velcurve-ui: velocity-curve editor UI (S-VIEW-10) — draggable spline points in Sample + Zone views 2026-07-27 16:05:32 -04:00
daniel d982d14760 fix(velcurve-ui): caption overlap, add-in-ring data corruption, drag-off warn affordance 2026-07-27 16:05:05 -04:00
daniel 0e8b1b72cf S-VIEW-10: velocity-curve editor UI — draggable spline box beside the Sample hero + in the Zone panel, all math through the pure velocity_curve module 2026-07-27 15:51:36 -04:00
daniel c92d82df3a docs(phase-s): reconcile PLAN/COMPLETED/CLAUDE for S-VIEW Wave 2
Move S-VIEW-1..9 to COMPLETED (three-view editor + velocity spline curve v7); F3 settled (full-window Browse modal); S-VIEW-10 (curve editor UI) remains the lone open Phase S item. Add trigger_seam + velocity_curve to the module inventory.
2026-07-27 15:07:57 -04:00
daniel 21c3656bf7 Merge pS-w2-t2-velcurve: velocity->amp transfer curve (velocity_curve spline + zones-payload v7 + Voice::start apply) 2026-07-27 15:00:10 -04:00
daniel 2edb609b65 Merge pS-w2-t1-shell: three-view ReaSampler 9000 editor (S-VIEW-1/2/5/8 + Wave-1 module wiring) 2026-07-27 15:00:04 -04:00
daniel c2a9f2a814 fix(comments): soften "bit-exact" to "~1e-15 floating-point rounding" in velocity_curve 2026-07-27 14:59:35 -04:00
daniel 026ca90217 vst: curve velocity_curve eval with a monotone cubic Hermite (Fritsch-Carlson) spline
True curved response, provably no overshoot outside [0,1]; collinear knots reproduce the exact linear ramp so linear()'s null-response stays bit-exact. Eval-only; v7 wire-format untouched. Adds spline tests.
2026-07-27 14:45:50 -04:00
daniel 8a7dc4b1c6 fix(trigger-seam): thread startFrame into both envelope converters; extract pure triggerPlayLength module + tests 2026-07-27 14:37:05 -04:00
daniel 25c77a5de3 docs(phase-q): settle Q-10 (audit-report home) and Q-11 (pitch-remediation depth) 2026-07-27 14:36:57 -04:00
daniel bbfb033819 docs(plan): add Phase Q pre-restructure functional+DSP audit wave (Q-W0) 2026-07-27 14:29:56 -04:00
daniel fcca987454 docs: ME-import places instrument on selected track
Update ingest surface (2) + instrument_drop_win entry points in CLAUDE.md
and the Ingest-through-the-bank spec in CONTEXT.md; createTrackWithInstrument
removed.
2026-07-27 14:22:43 -04:00
daniel 3b0c42fe52 Merge ME-import → selected-track placement
ME-import adds the new RS9k to the selected track instead of creating a
new track; no selected track refuses gracefully with the sound still
banked. Removes the now-dead createTrackWithInstrument.
2026-07-27 14:18:19 -04:00
daniel 3a95ce61fe refactor(ingest): ME-import adds RS9k to selected track, not a new track
No track is created; no routing changes. No selected track -> bank
import proceeds, instrument placement is refused with a console message
explaining why. createTrackWithInstrument removed (was sole caller).
2026-07-27 14:18:10 -04:00
daniel a1f9dcf6f8 S-VIEW-9: velocity->amp transfer curve (pure velocity_curve module + zones-payload v7 + Voice::start apply)
Default flat y=1 (R10-F1 Option A) replaces the linear velocity/127 at note-on — a deliberate, non-back-compat behavior change; v1-v6 blobs lift to the flat default.
2026-07-27 14:18:01 -04:00
daniel c12a374b88 Phase S Wave 2: three-view ReaSampler 9000 editor (Sample home / Browse modal / Zone)
Retire the flat toggle; Sample-home face wires the Wave-1 envelope overlay + draggable nodes, preview button + velocity knob, Mono/Stereo, key-track. Browse reduced to a confirm/cancel modal; Zone retained with piano-pattern strip. RT-safe off-thread preview-note mailbox added.
2026-07-27 14:17:58 -04:00
daniel 8576832c84 docs: drop-onto-panel is bank-fill only
Correct ingest surface (3) in CLAUDE.md (only surface (1) assigns now) and
the drag-and-drop bullet in CONTEXT.md to bank-fill-only behavior.
2026-07-27 14:06:18 -04:00
daniel b924e82f63 Merge drop-onto-panel bank-fill only
Dropping audio onto the bank panel imports to the bank without
force-selecting on any live instance; generation bump retained so open
instances see the new sounds.
2026-07-27 14:02:44 -04:00
daniel 5f7fbad7fb fix(ingest): drop-onto-panel is bank-fill only
Remove both ingestAssignActiveInstance() calls from ingestDroppedFiles.
New samples still land in the bank, bump the generation, and persist —
but the drop no longer force-selects on any live instance. Dedup branch
simplified; stale comments corrected. ingestAssignActiveInstance stays
defined for the main.cpp path.
2026-07-27 14:02:38 -04:00
daniel 203005e6cf docs(phase-s): reconcile PLAN/COMPLETED/CLAUDE for S-VIEW Wave 1
Move S-VIEW-BUG-1 + S-VIEW-SIZE-1 to COMPLETED; annotate S-VIEW-3/4/6/7 as Wave 1 core landed / Wave 2 shell pending; record R10-F1 SETTLED (Option A, flat y=1) into S-VIEW-9.
2026-07-27 13:49:45 -04:00
daniel c40458fc53 docs: reflect ME-import → new-instrument behavior
Update ingest surface (2) + instrument_drop_win entry points in CLAUDE.md;
update the Ingest-through-the-bank spec in CONTEXT.md to shipped behavior.
2026-07-27 13:42:14 -04:00
daniel 188f367ba2 Merge ME-import → new RS9k instrument
Repurpose INGEST_IMPORT_MEDIA_EXPLORER to stand up a fresh instrument on
a new track pre-loaded with the imported sound, instead of force-selecting
on the active instance.
2026-07-27 13:39:24 -04:00
daniel 835bddadda feat(ingest): ME import loads a new instrument on a new track
Repurpose INGEST_IMPORT_MEDIA_EXPLORER (id unchanged) to stand up a
fresh ReaSampler 9000 on a new named track pre-loaded with the imported
sound, instead of force-selecting on the active instance. One undo point.
2026-07-27 13:39:18 -04:00
daniel d38e4eef84 Merge pS-w1-t3-state: persist preview-trigger velocity as ComponentState v6 (S-VIEW-4 core) 2026-07-27 13:39:09 -04:00
daniel 912ce5b320 Merge pS-w1-t2-keytrk: per-zone keyTrack scalar + ratio math in both repitch engines (S-VIEW-6 core) 2026-07-27 13:38:56 -04:00
daniel 2b83447189 Merge pS-w1-t5-drop: fix drop-to-FX hotspot classifier, narrowed to tcp.fx/mcp.fx (S-VIEW-BUG-1) 2026-07-27 13:37:58 -04:00
daniel e08f7b827c Merge pS-w1-t6-size: 1080p default window size + min floor (S-VIEW-SIZE-1) 2026-07-27 13:37:43 -04:00
daniel 33e38c69fb Merge pS-w1-t4-kbd: keyboard_strip isNaturalKey predicate (S-VIEW-7 core) 2026-07-27 13:37:32 -04:00
daniel f9bd4d9bf3 Merge pS-w1-t1-env: envelope_overlay + envelope_edit pure modules (S-VIEW-3 core) 2026-07-27 13:37:26 -04:00
daniel 5a859cc9bf 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.
2026-07-27 13:35:01 -04:00
daniel 9a2b752fe9 docs(envelope): add Trigger frames<->fraction seam note + zero-delta guard on fade nodes 2026-07-27 13:34:43 -04:00
daniel 5870b18362 fix(instrument_drop): narrow FX hotspot to tcp.fx/mcp.fx, not bare tcp/mcp (S-VIEW-BUG-1) 2026-07-27 13:34:40 -04:00
daniel 5db620be78 fix(processor): close S-VIEW-4 previewVelocity persistence loop
Add previewVelocity_ member to ReaSamplerProcessor; populate it in
getState and restore it in setState so the field round-trips in the
plugin, not just in the pure unit test. Clamp 1..127 at the
deserialize read boundary in sample_map.cpp.
2026-07-27 13:34:39 -04:00
daniel 7528a53a2a feat(vst-editor): bump default window to 840x560 + checkSizeConstraint floor (S-VIEW-SIZE-1) 2026-07-27 13:26:11 -04:00
daniel fef595be91 fix(drop): recognize TCP/MCP FX-button hotspot for instrument drop (S-VIEW-BUG-1)
The FX-hotspot classifier matched only fx_ (the FX-chain/floating windows),
so a drop on a track TCP FX button (info tcp*) never armed the drop and the
capture fell through to arrange as audio. Widen to fx_/tcp/mcp in a pure,
unit-tested predicate; shell calls it.
2026-07-27 13:26:10 -04:00
daniel 858f736466 feat(keyboard_strip): add isNaturalKey predicate for piano-pattern overlay (S-VIEW-7) 2026-07-27 13:26:08 -04:00
daniel b0b24c3e31 S-VIEW-4: persist preview-trigger velocity as ComponentState envelope v6
New top-level previewVelocity field (MIDI 1..127, mid default 64), sibling of
channelMode. Envelope bumped v5->v6; v5 and older blobs lift to the mid default.
Zones payload untouched (independent version axis). Round-trip + v5/v4-lift +
truncation tests added.
2026-07-27 13:26:07 -04:00
daniel 42dd30b2fe S-VIEW-6: per-zone keyTrack scalar (0-200%, default 100%) with pure ratio math in both repitch engines
keyTrackedRatio is bit-identical to pitchRatio at 100%; keyTrack threads through PerformanceZone->ResolvedZone->KeyZone into baseRatio_, so Varispeed and Preserve both inherit it. Zones payload bumped to v6; older blobs lift to 1.0.
2026-07-27 13:25:53 -04:00
daniel 12a7d072ac S-VIEW-3: add envelope_overlay + envelope_edit pure modules
AHDSR/Trigger params -> polyline forward map (overlay) and node hit-test +
clamped/monotonic pixel->param inverse map (edit) for the draggable Sample-view
envelope. Engine-free, unit-tested, wired into ctest. No shell changes.
2026-07-27 13:24:48 -04:00
daniel 3b9b78b82c 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.
2026-07-27 12:57:08 -04:00
daniel 5ec84ab0eb docs: mark M9 abandoned in Phase Q framing; add L3 + bank_grid/tab_strip to CLAUDE.md
M9 deferred->abandoned in code-organization.md gate (disposition note removed).
CLAUDE.md: L3 identity clause, M9-abandoned line, bank_grid/tab_strip in module
list and targets table.
2026-07-27 12:51:38 -04:00
daniel 85eac37912 docs: close out Phase L L3 — archive to COMPLETED, mark landed in design-language doc
L3 (VST editor + embed-strip restyle) is on dev. Append its COMPLETED entry
and flip visual-design-language.md §5.3/5.4 from GATED to landed / Phase L
complete. PLAN.md + CONTEXT.md L3 edits already landed via the S-VIEW commit.
2026-07-27 12:50:00 -04:00
daniel 13b23801a0 docs(phase-s): spec three-view editor redesign (S-VIEW) — Sample/Browse/Zone 2026-07-27 12:46:43 -04:00
daniel c22a78bcba docs: reconcile CLAUDE.md with Phase S — two artifacts, vst3sdk submodule, VST module blocks + test targets 2026-07-27 12:10:13 -04:00
daniel 0ffa7a4e77 docs(plan): archive Phase S (S3-S18) to COMPLETED; PLAN keeps only the deferred S13 relay stub 2026-07-27 11:57:27 -04:00
daniel c53683e7da Merge pL-w3-vst-restyle: Phase L L3 — VST editor + embed strip restyled through the L1 kit (B pastel-on-grey + pastel spectral keyboard strip) 2026-07-27 05:37:07 -04:00
daniel 774d753b4c Phase L L3: restyle VST editor + embed strip through the L1 kit (B pastel + spectral strip) 2026-07-27 05:30:44 -04:00
daniel 6b643bb089 docs(context): record ratified item auto-tag adoption rule
New items adopt the single mode of their track's pre-existing content; active-mode rule retained for new tracks, empty tracks, and multi-mode tracks. Reconciles spec with the fix-drop-lane-strand merge.
2026-07-27 05:04:00 -04:00
daniel 31faf25889 Merge fix-drop-lane-strand: dropped captures adopt the track's existing mode, preventing lane-strand of pre-existing items 2026-07-27 05:01:34 -04:00