daniel
1c774226d3
fix: close review findings on spline EGs — engine, codec, and popup/overlay UI grammar
...
Live pitch depth, Gate/Spline enable-rule agreement, inert kTrigLength, NaN wire guards, hard-flag-tail corruption no longer wipes the record, RT/cold spline tie-break, retired alt-click, marker-shadow fix, plus new test coverage.
2026-07-31 22:27:41 -04:00
daniel
e44bd42dd9
instrument: spline EGs — hard points on the one shared spline, a drawn contour per envelope beside its staged state, payload v13
2026-07-31 21:33:59 -04:00
daniel
5e290119c5
instrument: the filter's velocity depth knob returns and multiplies the bipolar curve; the pre-v12 lift is a pure domain re-tag
2026-07-31 20:24:40 -04:00
daniel
cfb53aade3
fix: close review findings on the velocity-curve deck and bipolar curves
...
Cancels the curve-node drag whenever the popup closes so Esc mid-drag can't alias the amp curve; generalizes CurveTarget routing to one switch; fixes stale/overstated comments; clamps a pre-v12 depth fold; adds deck-inertness and filter-fold test coverage.
2026-07-31 19:46:37 -04:00
daniel
9d38f87a2d
instrument: one VELOCITY deck for all three velocity curves, bipolar and off by default for pitch and filter
...
Payload v12 appends the new velocity->pitch curve and folds the retired filter velAmount into its now-bipolar curve, so pre-v12 projects reopen sounding identical. Preview button takes a drawn play triangle.
2026-07-31 19:15:17 -04:00
daniel
3cb22e984d
loop: fix the crossfade seam's residual discontinuity, plus six review minors
...
Normalizes crossfadeWeight over crossfade-1 so the last rendered frame lands at exactly the incoming tap instead of a residual step; corrects the CLAUDE.md invariant and seam test to match. Shares lerpSource/crossfadedSource/maxCrossfade, fixes stale docs/constants, and clears crossfade on the loop-OFF gesture.
2026-07-31 17:59:58 -04:00
daniel
0fe4166d7d
loop: crossfade the Gate sustain seam, and unshadow the loop handles that made loop points look gone
2026-07-31 17:36:36 -04:00
daniel
03fb471c92
instrument: fix AHD DecayEnd overlay/grab defect, pin flaky curve test, close comment/doc findings
2026-07-31 10:19:45 -04:00
daniel
2fa1405b06
instrument: fix AHD node-tracking/tie-break/live-latch defects and close staged-envelope-curve test gaps
2026-07-31 09:52:17 -04:00
daniel
d60ab1524a
instrument: latch the note done at the read-head run-off, fit the migrated fades, and lift the curve dial and overlay selection into pure modules
2026-07-31 09:17:04 -04:00
daniel
13e8c5c4d9
instrument: one staged-envelope system — per-segment curves, the sustain-less AHD, and a shared overlay for all three envelopes
...
Trigger's fade pair folds into the AHD (and goes live); the release anchors right;
Preserve rings its synthetic tail out instead of cutting it. Payload v10.
2026-07-31 08:37:57 -04:00
daniel
87d7ceb066
docs: close out Ξ-W1-T1, Ξ-W1-T2 and Θ-W3-T1 into COMPLETED; map the note directory; document the Release build
2026-07-31 07:02:54 -04:00
daniel
98594df878
Merge Θ-W3-T1: live parameter delivery to sounding voices, holding normalized stage position across time edits
2026-07-31 06:44:04 -04:00
daniel
efd1e41f46
instrument: narrow the live-param publish lock to its own mutex, off the reload's decode
...
Knob-drag publishes no longer block behind a full reload's WAV decode — a dedicated livePublishMutex_ replaces reloadMutex_ for the seqlock's single-writer contract. Also fixes an editor comment overclaim and two doc restatements.
2026-07-30 21:54:20 -04:00
daniel
bbc7dc70bb
instrument: snap live params onto a fresh voice, roll a live drag back on capture loss, serialize the seqlock's two writers
2026-07-30 21:39:56 -04:00
daniel
1dade0bfcf
instrument: deliver continuous playback params live to sounding voices via a seqlock block, holding normalized stage position across time edits
2026-07-30 21:03:05 -04:00
daniel
dddecc5734
note: close out the model — correct an inert mutation claim, retag four non-discriminating assertions, assert Tempo's closure, fix three doc/test accuracy gaps
...
No behavior change; verification-record corrections and one static_assert.
2026-07-30 21:03:02 -04:00
daniel
a80eb76c1f
note: close every value type's domain at construction, so resolveNote is finite for every constructible input
...
Division and OffsetAmount get single normalizing doors and private constructors; fromBpm validates by running the conversions rather than their reciprocal. Readers drop their re-clamps and default labels.
2026-07-30 20:37:12 -04:00
daniel
d923b352ae
fix: harden note-program model against corrupt tempo/division/denomination records
...
Reject subnormal BPM that overflows to NaN, normalize Division equality, pin a single out-of-range-denomination interpretation across all readers, flag collapsed capture windows, add offset off-view editors and structural static_asserts, collapse duplicated CLAUDE.md facts.
2026-07-30 20:11:06 -04:00
daniel
834a6ddcc7
note: land the programmed capture-signal model — division ladder, tempo resolution, anchored offsets, one record and one resolver
2026-07-30 19:44:15 -04:00
daniel
0cfd9b6236
filter: sweep the corner continuously; raise the editor floor to 840x620
...
Cutoff-only re-solve (15.5 vs 56.9 ns/frame) makes the unquantized sweep
affordable, replacing the 2048-step mod quantizer. Live-compute parameters
remain blocked on a shell-architecture ruling.
2026-07-30 18:12:10 -04:00
daniel
39389c1183
fix: guard filter tail NaNs, skip static-filter envelope work, pin stereo filter path, correct stale comments
...
Codec fallback for non-finite filter fields, a modAmount==0 early-out in tickFilterCutoff,
new stereo render tests for the dual-mono mirror, and comment/test accuracy fixes flagged
in review (stale deck-width claims, restated invariants, drifted CMake link comments).
2026-07-30 17:35:45 -04:00
daniel
67215509cb
feat: run the per-voice filter between the pitch and amp stages, with its own deck
...
Params ride the one parameter set; payload v8 -> v9, off by default.
Deck composition moves to a pure deck_groups module in pitch -> filter -> amp order.
2026-07-30 15:26:14 -04:00
daniel
d04045be69
build: split the 1423-line root CMakeLists into per-directory files with shared target helpers
2026-07-30 12:19:18 -04:00
daniel
b9d85161e5
Merge Θ-W2-T3: full-width piano strip with uniform key widths, note tooltips, one toolbar font
2026-07-30 11:09:57 -04:00
daniel
3cb6b9de21
Fix filter test/doc claims: retracted DF1 limit-cycle rationale, notch-depth overreach, stale drive-branch wording
2026-07-30 11:04:20 -04:00
daniel
d2364eb5ac
Add an Oberheim-SEM morph law to the SVF filter: HP->notch->LP alongside HP->BP->LP, selected at prepare() time, free on the per-sample path
2026-07-30 11:04:20 -04:00
daniel
f12700c997
Filter review fixes: gate softLimit on drive, correct flush/DF1 measurement claims, pin control-law test literals, fix stale bypass state
2026-07-30 11:04:20 -04:00
daniel
902030bfba
Rebuild the instrument filter as a TPT/SVF with a continuous HP-BP-LP morph and a configurable drive stage
2026-07-30 11:04:20 -04:00
daniel
7d42d7ed29
Make the high-pass feedback tap a fixed 1/48000 s interval so resonance stops scaling with sample rate; 48k and 44.1k bit-identical
2026-07-30 11:04:20 -04:00
daniel
7af3c0c630
Fix filter DSP click-train flush and finish namespace nesting + test coverage
2026-07-30 11:04:20 -04:00
daniel
78e112d1f9
Port Cortex-M4 resonant filter to a pure vtable-free core/instrument/engine/filter module with 0.1-10 Q and log cutoff
2026-07-30 11:04:20 -04:00
daniel
9812690b96
Fix stale hover latch on drag release, tooltip anchor, border off-by-one; pin gutter golden test, drop DPI framing
2026-07-30 11:03:41 -04:00
daniel
ae23ee0882
Rebuild the chrome band: full-width piano strip with uniform key widths, note tooltips, one toolbar font
2026-07-30 11:03:41 -04:00
daniel
dfed1c77bb
Fix waveform_view comment accuracy, cut duplicate comments, align xToFrame to OverlayArea
2026-07-30 10:35:27 -04:00
daniel
fb12c53522
Type-enforce the waveform overlay contract, narrow waveformLanes to LaneSplit, fix laneCount/cache/path-fallback bugs
2026-07-30 09:35:11 -04:00
daniel
2a0d10fab5
Stack L/R waveform lanes in stereo mode, with overlays drawn once at full band height
2026-07-30 09:04:57 -04:00
daniel
e304f2b031
Fix embed use-after-free, restore golden fixture + refs tests, drop dead note_entry
2026-07-30 08:01:22 -04:00
daniel
8d4ccbf841
Retire the zone system: one capture = one parameter set, and re-seam the engine and Sample face into bands
2026-07-30 07:15:54 -04:00
daniel
9d037fb233
Merge 12 comment-reduction tracks: cut source comment volume ~42% tree-wide
2026-07-29 20:49:57 -04:00
daniel
ccd9968be1
Cut core/instrument/ui comment bloat ~49% (comments only, zero code change)
2026-07-29 20:48:39 -04:00
daniel
354192ae27
Cut core/instrument/map comment bloat ~30% (comments only, zero code change)
2026-07-29 20:48:35 -04:00
daniel
3599d97836
Cut core/instrument/engine comment bloat ~33% (comments only, zero code change)
2026-07-29 20:48:32 -04:00
daniel
1f24c4b095
docs: 1.0 documentation restructure
...
Split root CLAUDE.md into 19 per-directory files scoped to their source area.
Roll v0 history into docs/ARCHIVE.md; retire CONTEXT.md, CONTEXT-ARCHIVE.md,
PLAN.md, COMPLETED.md. Move plan docs under docs/. Rescue 9 live deferrals
into docs/TODO.md.
2026-07-29 15:09:48 -04:00
daniel
f3be4d8cce
Q-W6: registration table (OCP) in main.cpp; bank verbs -> shell/bank_ops(Session&); persist.h + wav_trim + namespaces.h shims deleted; 61/61
...
capture.h realtime seam split to capture_realtime_shell.h; GetProjExtState grow-loop rehomed to core/wire/ext_state_read; stale persist.cpp/bank_panel.cpp comment refs fixed; CLAUDE.md persist/bank_book/actions bullets updated. Command-id suffixes, display phrases, and undo labels byte-identical.
2026-07-29 13:40:09 -04:00
daniel
0c39a716a5
docs: scope deletion-authority wording to bank folder + guard growing-read NUL terminator
2026-07-29 13:06:38 -04:00
daniel
75aa93f913
Q-W5: persist → session/ext_state_io/prune_fs (deletion authority concentrated); one GetProjExtState grow-loop in bridge_marshal (T2-04, ×3 rewired); bank_book JSON codec → bank_book_json via private static nameKey; persist.h stays umbrella. 61/61 green.
2026-07-29 13:06:38 -04:00
daniel
f0f91f7698
Q-W2v review follow-ups: golden full-blob fixture test, dead-local cleanup, bool-guard static_assert, explicit VelocityCurve qualification
2026-07-29 11:29:36 -04:00
daniel
ea86f540b8
Q-W2v: split VST god-modules — editor 8 face-axis TUs (+pure layout hoist), processor 3 TUs, component_state_io codec split (extension drops the voice engine), zone_params.h, core/wire putLE; formats frozen, 61/61 green
2026-07-29 11:29:36 -04:00
daniel
2d59bbe35d
Q-W1 code-review follow-ups: restore 104 trailing newlines, relocate reasampler_uid.h to core/wire, drop ext_keys namespaces shim, add slot_map_tests, golden serialize literals for 4 modules, namespaces.h/pragma-once ordering sweep. 60/60 green.
2026-07-28 21:34:09 -04:00