Commit Graph

325 Commits

Author SHA1 Message Date
daniel b653a4f6a7 Merge ps-w4-tier1-keymap: S5 Tier 1 — zoned keymap editor + performance-map persistence 2026-07-27 04:09:49 -04:00
daniel 03e760631c S6: embedded TCP/MCP UI via IReaperUIEmbedInterface
Inline keymap/level strip drawn into REAPER's embed bitmap, reusing the LICE
idiom. Pure embed_strip layout/hit-test (tested); processor exposes the embed
interface off queryInterface and publishes an RT-safe block peak for the level.
2026-07-27 04:09:49 -04:00
daniel ed2df9c1d5 docs: spec Phase S stereo (S7), bank-ingest (S8), change-detection (S9)
Settled 2026-07-26: per-instance mono|stereo mode with automatic bus
negotiation (S3-core extension); ingest routes through the bank, extension-
owned, instrument stays read-only; bank-generation counter for hands-free
recapture refresh. ME + drop-target SDK limits verified; spikes flagged.
2026-07-27 04:09:49 -04:00
daniel a3142bbe3e fix(comments): correct ZoneField button count/order; generalize single-zone setState seed comment 2026-07-27 04:07:10 -04:00
daniel 2356958930 S5 Tier-1: zoned keymap editor + performance-map playback/persistence
Zone editor in the IPlugView LICE surface, zoned resolution built off-thread into the
LoadedInstrument keymap with Tier-0 fallback, performance map in VST3 component state
with v1 back-compat. Pure resolve/build/serialize + geometry with CTest coverage.
2026-07-27 04:07:10 -04:00
daniel 6ae843345c Merge ps-w3-tier0: S4 Tier 0 — the bank plays (MIDI to core, live-state seam, LICE sample-pick) 2026-07-27 04:07:09 -04:00
daniel bb066fe1ab docs(plan): tick S3 checkboxes; resolve VST-host bridge must-verify entry 2026-07-27 04:07:09 -04:00
daniel b4b64ce68f fix(S4): close graveyard epoch ordering race; add canvas-clip + stride integration tests
Tag LoadedInstrument with installedAt; process() publishes that field (not a re-read
of reloadGeneration_) so the pruner's displacedAt <= seen bound is airtight. Also fixes
sampleRowHitTest canvas.bottom over-read and adds interleave-stride + canvas-clip tests.
2026-07-27 04:07:09 -04:00
daniel b0fc052113 Merge ps-w2-sampler-core: S3 pure sampler core (voices, ADSR, keymap, loop-aware repitch) 2026-07-27 04:07:09 -04:00
daniel 0cde457224 S4 Tier 0: the bank plays — VST3 marshals MIDI to the S3 core, reads the live bank + resolves WAV the M4 way, mono downmix, lock-free load handoff, LICE sample-pick 2026-07-27 04:07:09 -04:00
daniel 8dd74c6b3a docs(plan): tick S1/S2 checkboxes; correct bridge-read text to VST3 mechanism 2026-07-27 04:07:08 -04:00
daniel a04ef54eec fix(tests): rework testNoteOffReleasesNewestSameNote to actually prove newest-first release; add single-frame-loop test; add two comments in sampler_core.cpp 2026-07-27 04:07:08 -04:00
daniel 74d2e976e7 S3: pure sampler core — voices, ADSR, keymap, loop-aware repitch
REAPER-free and VST3-free voice engine with bounded stealing, ADSR
envelope, key/velocity keymap resolution, and repitch from root note
with loop-point sustain. Test target links neither SDK.
2026-07-27 04:07:08 -04:00
daniel 09f49441d9 Merge ps-w1-t2-sample-intrinsics: S2 Sample seam fields (rootNote + loop points) 2026-07-27 04:04:07 -04:00
daniel 72ac766a5b Merge ps-w1-t1-vst3-spike: S1 VST3 skeleton, IPlugView-LICE editor, REAPER bridge read 2026-07-27 04:04:07 -04:00
daniel b5a573aebb feat(bank_model): add Phase S seam fields (rootNote + loop points) to Sample
Additive optional MIDI root note and sustain-loop points with JSON round-trip and deserialize-boundary validation; capture leaves them empty (not derivable). Mirrors the provenance addition; BankIndex behavior unchanged.
2026-07-27 04:04:07 -04:00
daniel 3c2a7c45b2 feat(vst): stand up VST3 instrument spike (S1) — skeleton, IPlugView↔LICE editor, REAPER bridge read
Vendor Steinberg VST3 SDK (v3.7.9_build_61); add reasampler_vst.vst3 as a second, additive build artifact with pure editor-geometry + bridge-marshal helpers under CTest.
2026-07-27 04:02:28 -04:00
daniel 5595ba42f9 docs: record settled L3 decision — beta title band stays textual, no channel accent
Daniel (2026-07-27): the S18 beta channel title band gets no distinct
visual accent; L3 restyles it in the standard B pastel palette and the
beta-vs-stable distinction stays purely textual. Closes the one open fork
from the L3 readiness review.
2026-07-27 03:51:47 -04:00
daniel ba50cfb857 CLion files 2026-07-27 03:51:03 -04:00
daniel 8c65069fc3 docs(phase-q): reconcile gate to S+L3 and add naming-consistency dimension
Correct the Phase Q gate (L2 landed; outstanding is Phase S + Phase L L3;
D2 complete, M9 deferred). Add a grep-verified naming audit (code-organization
§2b) and forks Q-7/Q-8/Q-9; FOREVER-STABLE contract strings excluded.
2026-07-27 03:50:20 -04:00
daniel a434ef47f8 docs(plan): ground L3 readiness against landed Phase S surfaces
Both VST draw shells still draw flat off a local pre-L1 palette — L3
restyle confirmed live, not a born-in-kit no-op. Name the concrete gate
files, add the palette-reconcile point, enumerate the landed editor set.
2026-07-27 03:42:24 -04:00
daniel 40ee6bb6d1 Merge fix-empty-slot-drop: reorder drop lands in empty slots and beyond the extent (trailing row) 2026-07-27 03:32:16 -04:00
daniel d2cc33e9de fix(card_drag): extend drop rects one trailing row so beyond-extent drops land
computeSlotRectsForDrop adds cols slots past maxSlot; classifyCardDrag and
drawCardDropTarget use it instead of the render rects. doReorderDrop already
accepts any non-negative slot. New tests cover beyond-extent resolves,
empty-bank trailing row, gap pixels still miss, empty-cell within-extent works.
2026-07-27 03:31:29 -04:00
daniel 9a1bcbcf7a docs: archive Phase L L7 to COMPLETED; reconcile CLAUDE.md + CONTEXT.md + PLAN.md 2026-07-27 03:00:42 -04:00
daniel 776be32dff Merge pL-w7-capture-cards: L7 capture ordering (SlotMap + reorder/Alt-replace drag + cursor cues), card metadata overlay, tertiary-border selection 2026-07-27 02:48:12 -04:00
daniel 1585f0bbe6 fix: same-slot reorder is a no-op; WM_DESTROY clears card drag state; fix card_meta.h ms-rounding comment 2026-07-27 02:47:29 -04:00
daniel 439bb44e0d L7 Wave 2: wire capture-ordering into bank_panel
Render the grid in sparse SlotMap order with empty-slot cells; remap every
cell↔sample consumer (selection, nav, audition, drag) to occupied-ordinal
space. Drop dispatches reorder/replace/move/copy via card_drag; per-slot
highlight + stock cursor cues. One drop = one Ctrl-Z.
2026-07-27 02:02:57 -04:00
daniel fdb9e38ad6 L7: capture-order slot model, card metadata overlay, tertiary-border selection
Add gap-preserving per-bank SlotMap (reorder + Alt-replace mutators, JSON
round-trip, insertion-order migration) to bank_book; stamp captureTimeSig on
Sample; pure card_meta formatters + card_drag gesture/slot module; card
metadata overlay + purple selection border in the panel. Shell drop/cursor
wiring deferred. Fixes: removeSample syncs SlotMap; card_drag gap-probe coordinate.
2026-07-27 01:49:07 -04:00
daniel 7dc77e51b5 docs(product): settle Phase L §L7 forks F1/F2/F3 (capture-time stamp, interchangeable substrate, drag rule + cursor cues + Alt-replace) 2026-07-27 01:19:36 -04:00
daniel e4bcc8f075 docs(product): spec Phase L L7 — capture ordering, card metadata, and selection styling
Persisted gap-preserving per-bank display order + drag-drop reorder (model change, JSON round-trip + migration), decorative bars.beats/s.ms overlay, tertiary-border selection restyle. Model work separated from draw work; forks flagged (meter source, M9 substrate overlap, drag disambiguation).
2026-07-27 01:11:05 -04:00
daniel 9decd25d88 Merge fix-toggle-docker-desync: derive panel toggle from live window visibility 2026-07-27 00:52:22 -04:00
daniel c37419beb9 fix: toggle panel once after Alt+D docker hide — derive visibility from IsWindowVisible, not stale g_panel.open flag 2026-07-27 00:51:33 -04:00
daniel f250dd0a62 docs: record L6 toolbar polish; reconcile CLAUDE.md + CONTEXT.md 2026-07-27 00:46:08 -04:00
daniel 0f8bcf1687 Merge pL-w6-toolbar-polish: single-row button faces, Cancel RT to overflow menu, Re-capture between groups 2026-07-27 00:42:51 -04:00
daniel acda259ab6 L6 toolbar polish: single-row faces, Cancel RT -> overflow, Re-capture between groups
Button faces now show only the short label (keybinding moved to hover tooltip as
"name — binding"). Cancel RT joins the overflow menu alongside Capture RT. Re-capture
sits between the capture and placement clusters. Toolbar heights 40->28.
2026-07-27 00:38:32 -04:00
daniel 7961458edd docs: archive Phase L L5 to COMPLETED; reconcile CLAUDE.md + CONTEXT.md + PLAN.md 2026-07-27 00:14:38 -04:00
daniel 5009cafc59 Merge pL-w5-button-refinements: L5 dock-panel button refinements (overflow menu, LICE tooltips, opposite-mode tag buttons, grouping spacing) 2026-07-27 00:05:34 -04:00
daniel 3876d2d822 tooltip: clamp box width to client on narrow panels; add narrow-client test 2026-07-27 00:05:14 -04:00
daniel 7cd0771e45 L5: dock-panel button refinements — overflow menu, tooltips, opposite-mode tag buttons
Top-bar rare-capture variants move to a right-anchored More popup; short faces gain
hover-delay full-name tooltips (prefix stripped); bottom bar becomes four opposite-mode
Item/Track tag buttons + Show Both (Toggle/Activates dropped); wider cluster gaps. New
pure overflow_menu/mode_enable/tooltip modules, CTest-covered. Same actions, same contract.
2026-07-26 23:56:49 -04:00
daniel 0c7b871d8d docs(product): spec Phase L L5 — dock-panel button refinements
Top-toolbar overflow menu for rare capture variants; short button faces + full-name tooltips (drop ReaSampler: prefix); Item/Track x Arrange/Design tag buttons enabled only for the opposite of active mode; remove redundant Toggle; semantic-grouping spacing. Item-level tagging confirmed existing — layout wiring, not feature work. Ungated; sequences after L4; L3 gate intact.
2026-07-26 23:33:13 -04:00
daniel 52ac9b5eea Revert "docs(product): spec S7 drop-and-load — drag capture onto TCP FX button to instantiate ReaSampler 9000 preloaded"
This reverts commit b8e8d47af5.
2026-07-26 23:18:46 -04:00
daniel 0f2bad1617 docs: archive Phase L L4 to COMPLETED; reconcile CLAUDE.md + CONTEXT.md + PLAN.md 2026-07-26 23:18:31 -04:00
daniel 9a0396efc5 Merge pL-w4-button-layout: L4 dock-panel button layout — three-zone (top capture/placement/maintenance, bottom Design-View, footer toggle+Tail+Prune) 2026-07-26 23:10:26 -04:00
daniel f8fffabf15 fix(bank_panel): restore Re-capture + Cancel RT buttons to top toolbar 2026-07-26 23:04:48 -04:00
daniel 8f4a84ac79 L4: re-home dock-panel buttons into three zones
Top toolbar = capture+placement, bottom toolbar = Design-View verbs, footer = narrow Arrange|Design toggle + count + Tail button + set-apart Prune. New pure footer_bar module; Tail is now a real kit button.
2026-07-26 22:42:56 -04:00
daniel 7dd9de14df Merge fix-drag-unselected: arm drag from unselected bank_panel cell in one gesture 2026-07-26 22:16:30 -04:00
daniel 81264138f2 docs: reconcile CLAUDE.md + COMPLETED.md to the landed grey+pastel palette 2026-07-26 22:16:00 -04:00
daniel ca857115a9 Merge pL-w3-repalette: three-accent pastel palette + REAPER-grey neutrals 2026-07-26 22:12:36 -04:00
daniel b8e8d47af5 docs(product): spec S7 drop-and-load — drag capture onto TCP FX button to instantiate ReaSampler 9000 preloaded 2026-07-26 22:12:26 -04:00
daniel 26311257e5 test(theme): assert AccentPrimary/Secondary/Tertiary clear 3:1 floor on bg/panel 2026-07-26 22:12:10 -04:00