daniel
678274c19b
docs(TODO-1.0): fold second answer round — items 1-2 fully settled, item 3 down to point bounds and popup gesture convergence
2026-07-28 18:59:46 -04:00
daniel
78a214b247
docs(phase-q): fold Q-W0 sign-off into PLAN/CONTEXT — all 59 dispositions settled; Q-W2v wave, T4-18 VST placement, ~600 ceiling + structural heuristics, W3 riders (wav_codec, ICaptureBackend, Q-9)
2026-07-28 18:44:48 -04:00
daniel
a4571cc074
docs(TODO-1.0): fold in Daniel's answers — radio none-state, knot curve-drag, Filter ranges/label, dual-state Spline EGs
2026-07-28 18:44:41 -04:00
daniel
b06b226182
docs: queue TODO-1.0 — post-1.0 specs for envelope curve dials/overlay radio, MM preamp filter stage, and hard-point Spline EGs
2026-07-28 17:58:19 -04:00
daniel
57e509c64f
Merge pq-w0-audit: Q-W0 pre-restructure audit — 4 track notes + committed code-quality audit (59 findings triaged); docs-only
2026-07-28 17:02:47 -04:00
daniel
3eaa0b886e
docs(Q-W0): committed code-quality audit — 59 findings triaged, Q-W2v VST wave + Q-W2/Q-W3 reshapes proposed, Daniel decision list for sign-off
2026-07-28 17:00:06 -04:00
daniel
2dbefb8c01
audit(q-w0-t4): sizing census — 14 oversize files, VST side unowned; propose Q-W2v wave, 8-seam bank_panel, ICaptureBackend is dead
2026-07-28 16:50:47 -04:00
daniel
ca086f4009
docs(q-w0): T3 env-coupled-constant audit — 7 findings (2 fix-now: gain-ramp step, fade-ceiling frames); persistence surfaces clean
2026-07-28 16:50:38 -04:00
daniel
dfe6ccbddd
docs(q-w0): T2 architecture audit — wire-cursor hardening drift, 5th JSON decoder, 5x readFileBytes, rect-type zoo; 11 triaged findings
2026-07-28 16:43:34 -04:00
daniel
f0d5d23171
docs(q-w0): T1 DSP audit — 11 triaged findings, SOLA engine sound; stereo splice decorrelation is the headline
2026-07-28 16:43:24 -04:00
daniel
363c091308
0.9.9
2026-07-28 14:26:14 -04:00
daniel
18dab9f150
docs(pS-usage): record instance-usage detection — un-prunable guarantee, wire/liveness/fail-safe, deferred identity-persistence follow-up
2026-07-28 14:21:40 -04:00
daniel
c5f7d0e21f
docs: add TODO for persisting VST instance identity so prune reclaims de-referenced captures after reopen
2026-07-28 14:12:55 -04:00
daniel
74ab2681ed
Merge pS-usage: captures held by live ReaSampler 9000 instances are un-prunable — instances publish usage records (ComponentState v11), prune unions live holds; fail-safe to protect/abort
2026-07-28 14:08:16 -04:00
daniel
ec83f14738
fix(pS-usage): close delete-ward residuals — remint on corrupt, named abort keys, truncation protect-all, abort->protect-all set
2026-07-28 13:54:10 -04:00
daniel
a4aeb9dcc8
fix(pS-usage): fail-safe prune protection — in-wire owner nonce + sticky union poison, protect-all on zero identified, abort on unreadable record, rsusage_ prefix
2026-07-28 13:32:14 -04:00
daniel
5886ae1456
pS-usage: captures held by live ReaSampler 9000 instances are un-prunable — instances publish usage_<guid> ext-state records (ComponentState v11), prune unions live holds into referenced
2026-07-28 12:56:36 -04:00
daniel
0ce30cc885
docs: preview via real MIDI path (PreviewCard retired) + self-contained playback (v10 SampleRefs, bank-free decode, heal removed); fix stale reloadFromBank refs
2026-07-28 12:28:25 -04:00
daniel
f988ded543
Merge pS-preview: preview via the real MIDI note path (PreviewCard retired) + self-contained playback (ComponentState v10 SampleRefs, bank-free decode, heal/poll-to-play removed)
2026-07-28 12:18:38 -04:00
daniel
cb89dbf5c4
pS remediation: legacy lift terminates on stale-id proof; displayName in v10 refs; refs-reader range fallbacks; load path keeps owned refs
2026-07-28 12:17:36 -04:00
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