Commit Graph

549 Commits

Author SHA1 Message Date
daniel 261a6affa5 self-contained playback — ComponentState v10 SampleRefs (path+intrinsics owned by the instance), reloadInstrument decodes bank-free, heal timer + poll-to-play removed; bank is a browser source 2026-07-28 11:45:10 -04:00
daniel 93e28f4ea5 fix(vst): reopen heal without the editor — bounded main-thread retry timer, re-armable first-poll heal, unconditional preview-off consume + Mono/drain preview tests 2026-07-28 10:56:40 -04:00
daniel 81c4658711 Preview rides the real note path: mailbox drains into VoiceEngine noteOn/noteOff at the root note; PreviewCard retired; first-poll reopen heal reloads a silent-but-should-be-loaded instrument 2026-07-28 10:30:51 -04:00
daniel 6b85df8a8c Merge pS-ga3-tail: Preserve tail wind-down — freeze SOLA writer at source end so the tail + release play clean (no DC-splice chop) 2026-07-28 10:09:42 -04:00
daniel 4f7e15390f fix(pitch_shift): re-anchor fadePos_ on freeze so gNew is continuous at the freeze frame; guard left cast; add step-detector + loop-never-freezes regression 2026-07-28 10:09:23 -04:00
daniel 917626a287 fix(preserve): GA3 tail wind-down — freeze the SOLA writer at source exhaustion so the tail recycles frozen real content (no DC-splice chop through the final window + release) 2026-07-28 09:50:28 -04:00
daniel 1d2da9d456 docs: GA2 fix pass — Preserve ring-prime (gap-free frame-0 onset, no 25ms latency) + bounded-blend takeover declick (supersedes stale (1-amp) gate) 2026-07-28 09:16:13 -04:00
daniel a23ee1b000 Merge pS-ga2-clicks: bounded-blend takeover declick (mono retrig + preview + poly steal), soundingNote() gating — click-free voice restarts 2026-07-28 09:10:23 -04:00
daniel e0295118de Merge pS-ga2-preserve: prime SOLA rings for gap-free frame-0 onset + real-content tail bound + sub-sample alignment — clean Preserve repitch C1..C8 2026-07-28 09:10:16 -04:00
daniel 3e9f5b3b48 fix(sampler_core): bounded-blend declick (no overshoot), soundingNote() gates cap + legato
Replaces frozen-difference declick with bounded blend (out*(1-w)+ref*w, bounded by max(|ref|,|out|)). soundingNote() gates activePreserveVoices and mono-Legato retune away from ramp-only past-end voices. Magnitude-bound test asserts |v|<=1 across the ramp.
2026-07-28 09:10:04 -04:00
daniel f7dfaa9f41 fix(preserve): clamp Preserve feed to real-content bound at tail; lock sub-sample refinement with non-integer f0; fix stale onset-latency doc + clamp comment 2026-07-28 09:10:03 -04:00
daniel 5d3289f0bc fix(vst): declick rev 2 — difference-seeded ungated takeover ramp (rev-1 (1-amp) gate zeroed it on Trigger/zero-attack); preview card opt-in 2026-07-28 08:49:07 -04:00
daniel 2ef3514bc7 fix(preserve): prime SOLA rings with real source (zero-latency, gap-free onset) + sub-sample splice alignment — clean repitch C1..C8 2026-07-28 08:49:05 -04:00
daniel e99bdcf264 docs: record GA DAW-fix pass (Preserve SOLA, voice declick, stereo bus-pin+v9, .vstpreset drop-fx, drag-out, panel toggle); correct stale vst_chunk mechanism 2026-07-28 07:12:07 -04:00
daniel 3e3b79d78a Merge pS-ga-preserve: correlation-aligned SOLA splices fix repitched-Preserve garbage; ratio-scaled fade safe past +24st; spectral-purity test 2026-07-28 07:00:32 -04:00
daniel 157eb8c624 Merge pS-ga-voicesteal: declick every takeover (mono retrig + poly at-cap steal), gated on envelope complement; over-cap steal proven exactly-one 2026-07-28 07:00:24 -04:00
daniel 5056b5fc3b Merge pS-ga-stereo: pin stereo bus (kills dual-mono hard-right pan) + auto-default channel mode from capture (v9) 2026-07-28 07:00:14 -04:00
daniel a8d0dcf944 Merge pS-ga-dropfx: inject dropped capture via .vstpreset/TrackFX_SetPreset (fixes blank-on-drop); prefix FX hotspot; UTF-8 temp path 2026-07-28 06:59:41 -04:00
daniel d1215069eb Merge pS-ga-dragout: capture mouse at drag-arm so first straight-out drag fires OS drop 2026-07-28 06:59:35 -04:00
daniel 37d0923639 Merge pS-ga-paneltoggle: repaint panel mode toggle on Design/Arrange action 2026-07-28 06:59:20 -04:00
daniel 39ea6ce7db fix(sampler_core): gate takeover declick by (1-amp) to remove zero-attack +6 dB blip and long-attack notch; clamp seed to +/-1; add zero-attack test 2026-07-28 06:59:05 -04:00
daniel 3d0406ef64 test(pitch_shift): tighten purity f0 to 1/196 so revert-of-fadeLen_ fails; add hop guard; clamp fadeLen_ in double before int64 cast 2026-07-28 06:59:04 -04:00
daniel 66f2e402b0 fix(instrument_drop_win): UTF-8 temp path, PID collision guard, embed-strip excluded from drop hotspot 2026-07-28 06:37:42 -04:00
daniel e435ab1b8f fix(review): dead silenceFlags store removed; channelModeFor extracted + tested; auto-default + drop comments corrected; v9 constant minted 2026-07-28 06:37:39 -04:00
daniel 436a685984 fix(pitch_shift): ratio-scale splice fade so +24st up-shifts never read stale data; normalize SOLA correlation by candidate energy; tests bracket 4x/0.5x + unity/latency asserts 2026-07-28 06:37:38 -04:00
daniel 056ccd003e fix(voice): declick every takeover of a sounding voice — mono retrig/fallback and poly at-cap steal; same-block double-steal keeps its seed; over-cap repro proves the engine steals exactly one voice per note-on 2026-07-28 06:37:36 -04:00
daniel 7e7143a055 fix(bank_panel): repaint footer mode toggle when Design/Arrange action fires 2026-07-28 06:19:32 -04:00
daniel 8fc2c8f2e0 fix(bank_panel): capture mouse at drag-arm time so first straight-out drag fires OS drop 2026-07-28 06:19:31 -04:00
daniel b4dd6dc9f1 fix(drop-fx): inject via .vstpreset + TrackFX_SetPreset (vst_chunk is REAPER-framed, raw bytes silently no-op); FX hotspot now prefix tcp.fx*/mcp.fx*/fx_* 2026-07-28 06:19:29 -04:00
daniel 3e6629a867 fix(vst): pin output bus to stereo (mode is decode-only) killing the hard-right pan; auto-default channel mode from the loaded capture (state v9) 2026-07-28 06:19:28 -04:00
daniel 22d7893431 fix(preserve): correlation-aligned splices replace dual-tap OLA — fixed w/2 tap offset anti-phase-cancelled crossfades (beating/partials on repitched sines); spectral-purity test added 2026-07-28 06:19:26 -04:00
daniel 104a25f390 docs: FB2 Zone-panel parity landed — S-VIEW-13 to COMPLETED, r11 editor recompose complete (Wave B closed) 2026-07-28 00:14:16 -04:00
daniel 24c3172727 Merge pS-fb2-zoneparity: FB2 (R11-F2) Zone-panel parity — one knob-deck + curve-popup grammar across Sample and Zone 2026-07-28 00:10:36 -04:00
daniel 40bcf0d56d fix(editor): close curve popup on zone-count change; degenerate-rect guard + comment corrections 2026-07-28 00:09:13 -04:00
daniel 682c21509a FB2: Zone panel adopts the r11 knob deck + curve popup (R11-F2 parity) — slider rows and inline curve box retired, zone-authoring affordances kept 2026-07-27 23:58:07 -04:00
daniel d272aab0df docs: record FB1 r11 Sample-view recompose + master gain (v8); move S-VIEW-11/12 to COMPLETED; correct stale r11 zero-state-change line 2026-07-27 23:58:05 -04:00
daniel a66acb7473 Merge pS-fb1-sampleview: FB1 (r11) Sample-view recompose — knob deck, full-width hero, curve popup, post-mixer master gain (v8) 2026-07-27 23:38:30 -04:00
daniel e2c73e30d6 fix(vst): master-gain per-sample ramp (no zipper/click); voice-count commits once on release; minor review items 2026-07-27 23:30:27 -04:00
daniel 43155cf320 Phase S FB1 (r11): Sample-view recomposition — knob deck + elastic full-width hero + curve popup w/ right-click delete + post-mixer master gain (ComponentState v8) 2026-07-27 23:08:04 -04:00
daniel 7bafb7fe9c docs(claude): describe beta version display by shape, not a hardcoded literal 2026-07-27 23:01:06 -04:00
daniel 03ec8d2f96 Merge p10-w3-bump-canary: bump to 0.9.8 + anti-normalization padding canary 2026-07-27 22:59:18 -04:00
daniel 247d1034b0 fix(comments): correct canary justification and expand failure guidance in padding tests 2026-07-27 22:59:08 -04:00
daniel 3790677097 bump to 0.9.8; add padded-canary build (app_version_padding_tests)
Canary re-proven on this base: reconstruct-from-components trips the
fixture checks; an unpadded fixture trips the non-vacuity assertion.
De-literalizes stale version examples in comments.
2026-07-27 22:51:16 -04:00
daniel 0c06bbad2c Merge p10-w1-t2-drop-action-buttons: remove dead action_buttons module 2026-07-27 22:38:40 -04:00
daniel 27b2661ef2 docs: record post-S-VIEW DAW-fix pass + voice-system redesign (parameterized voices, mono, preview card, two-tier panic, v7) 2026-07-27 22:27:33 -04:00
daniel 051b347e93 Merge pS-voice: voice-system redesign — user-set polyphony, mono (retrig|legato), isolated preview card, two-tier panic (v7); incorporates FA1 realtime fixes 2026-07-27 22:14:09 -04:00
daniel 9241c850c2 Merge pS-appver: decouple app_version test from the hardcoded version literal (bump-robust) 2026-07-27 22:14:02 -04:00
daniel 080a7be8ca fix(voice): CC 120 hard-stops voices (incl. Trigger); Mono sizes voices_ to 1; comments corrected
CC 120 -> allSoundsOff/hardStop (immediate silence, stops Trigger one-shots); CC 123 -> allNotesOff/releaseAll (release, unchanged). Mono VoiceEngine sizes voices_ to 1 structurally. Legato same-note re-press edge documented. Three new tests.
2026-07-27 22:08:56 -04:00
daniel cd64be9129 remove dead action_buttons module (superseded by action_bar in Phase L)
Deletes src/action_buttons.{h,cpp} and tests/test_action_buttons.cpp;
removes the static library, test target, and reaper_reasampler link
entry from CMakeLists.txt; scrubs all dangling comment references.
2026-07-27 22:04:27 -04:00
daniel 502f3c9e30 docs: correct six false archive claims; surface docs/product in CLAUDE.md
Phantom symbols commitMapAndReload, AhdsrParams, kReaSamplerProcessorUIDBeta
replaced with what shipped. Corrects two over-claims and un-ticks the D5
tooltip, which was never built.
2026-07-27 21:56:06 -04:00