Skip to content

fix(review): held-note detune live-edit + EG-bias ceiling + pitch-EG trap guard (v1.18.1)#17

Merged
hakaru merged 2 commits into
mainfrom
fix/review-followups
Jun 30, 2026
Merged

fix(review): held-note detune live-edit + EG-bias ceiling + pitch-EG trap guard (v1.18.1)#17
hakaru merged 2 commits into
mainfrom
fix/review-followups

Conversation

@hakaru

@hakaru hakaru commented Jun 30, 2026

Copy link
Copy Markdown
Owner

4-agent code review of the v1.17.0 fidelity fixes found three real defects (TDD-fixed):

  • #96 held-note detune: DX7Voice.applyParams reverted a sounding note's detune to the pitch-independent constant on any live param edit (snapshot version bump → applyParams on all active voices) → pitch jump vs a fresh note. Now recomputes per-note dexedDetuneFactor.
  • #97 EG-bias ceiling: the bias boost ignored the min(127, …+klsOffset) ceiling → over-brightened key-scaled ops already saturated at the OL ceiling. Now routes through the same ceiling.
  • Pitch EG guard: PitchEG.process now guards the Float→Int32 unit narrowing against a degenerate sample rate (0/NaN) trapping on the render thread.

Tests: liveEditKeepsPerNoteDetune, egBiasRespectsCeiling. 255 tests pass. Branches off v1.18.0.

🤖 Generated with Claude Code

Hakaru Hirose and others added 2 commits June 30, 2026 11:28
…trap guard

Review follow-ups to v1.17.0 (4-agent review found these):
- #96: DX7Voice.applyParams reverted a held note's detune to the pitch-independent params.detune (constant +-7c) on any live param edit (snapshot version bump), so a sounding note's pitch jumped vs a freshly-struck one. Now recomputes the per-note dexedDetuneFactor, matching noteOn.
- #97: the EG-bias level boost ignored the min(127, ...+klsOffset) ceiling the real env.outlevel applies, over-brightening key-scaled operators already at the OL ceiling. Now routes the boost through the same ceiling.
- PitchEG.process: guard the Float->Int32 unit narrowing against a degenerate sampleRate (0/NaN) trapping on the render thread (mirrors DX7Operator.updateFreq); use kBlockSize instead of a bare 64.0.

Tests: liveEditKeepsPerNoteDetune, egBiasRespectsCeiling. 255 tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hakaru
hakaru merged commit 79a2116 into main Jun 30, 2026
1 check failed
@hakaru
hakaru deleted the fix/review-followups branch June 30, 2026 02:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant