Skip to content

v0.6.4: state-set undo/AB/copy, Mono Maker Mix fix, slider/anim polish, tooltip revert#22

Merged
skyRolly merged 1 commit into
mainfrom
claude/beautiful-sagan-JAUFI
Jun 16, 2026
Merged

v0.6.4: state-set undo/AB/copy, Mono Maker Mix fix, slider/anim polish, tooltip revert#22
skyRolly merged 1 commit into
mainfrom
claude/beautiful-sagan-JAUFI

Conversation

@skyRolly

Copy link
Copy Markdown
Owner

Anamorph 0.6.3 feedback — all 6 items.

6. Preset / Undo-Redo / A-B carry a full “state set” (the headline fix).
Root cause was exactly as the feedback diagnosed: parameter data and metadata (preset name + dirty-star) were decoupled. Now every undo entry and every A/B slot stores a StateSet { params, presetName, baselineSig }, and dirty = (currentSound ≠ baseline). PresetManager gains baseline() / setMeta(); undo, redo, A/B switch and Copy all restore the metadata together with the params. Traced against the six cases:

  • A — Default → Vocal Air → Undo ⇒ “Default” (clean). ✓
  • B — Default*, → Vocal Air → Undo ⇒ “Default*”. ✓
  • C — on A=Vocal Air*, switch to B(Default) ⇒ “Default” (clean), no residual name/star. ✓
  • D — A=Default*, Copy A→B, view B ⇒ “Default*”. ✓
  • E — on B=Vocal Air, Copy B→A, view A ⇒ “Vocal Air” (clean). ✓

Per-slot name/baseline and the live baseline are serialised into the session state (with backward-compat for pre-0.6.4 sessions), so the dirty-star survives reload.

5. Mono Maker / Mix signal-chain fix. The driven low band used to bypass Mix, so with Mix=0 + high Drive the lows roared through. The un-driven mono low is now kept as the dry low and dry/wet-blended with the same per-sample Mix as the highs: Mix=0 → un-driven mono low (no Drive), Mix=1 → driven mono low. The low band’s mono-ing itself still applies at every Mix value. DSP self-test for Mono Maker still passes.

1. UI Animations toggle. It now adopts its new state immediately on click instead of on the next 24 Hz tick, so turning it ON plays the switch’s own slide and OFF snaps — the user feels the on/off difference on the switch itself.

2. Slider thumb body. The centre fill (not the cyan/white edge) now brightens in two distinct levels — a little on hover, more on press — matching the knob face.

3. Scroll / automation no longer eases. Knob and slider position only eases during a short window opened by a preset / A-B / undo / algorithm change; a scroll-wheel notch or host automation edit snaps instantly, so it never lags or misleads.

4. Tooltip fade reverted. The fade-out could leave tooltips not displaying at all, so it’s removed — back to the plain instant tooltip window.

Gates: 14/14 DSP self-tests · no new compiler warnings · pluginval strictness 10 PASSED.

https://claude.ai/code/session_01Y38PtwPxh2geBLta6yuUwv


Generated by Claude Code

…h, tooltip revert

6. Preset/Undo/Redo/A-B now carry a full STATE SET (params + preset name + dirty
   baseline), not just parameters, so the displayed name and dirty-star always
   match the restored sound. PresetManager gains baseline()/setMeta(); the
   processor stores StateSet in every undo entry and A/B slot, and undo/redo,
   A/B switch and Copy restore the metadata alongside the params. Verified
   against the six feedback cases (A-E). State (incl. per-slot name/baseline) is
   serialised with backward-compat for older sessions.
5. Mono Maker: the driven low band no longer bypasses Mix. The un-driven mono
   low is kept as the dry low and dry/wet-blended with the SAME per-sample Mix as
   the highs, so Mix=0 yields the un-driven mono low (no Drive roar) and Mix=1
   the driven one; the low's mono-ing still applies at all Mix values.
1. UI Animations toggle adopts its new state immediately on click, so turning it
   ON plays the switch's own slide and turning it OFF snaps -- the user feels the
   difference on the switch itself.
2. Slider thumb body fill now brightens in two distinct levels (hover vs press),
   like the knob face.
3. Knob/slider position only eases during a short window opened by a preset /
   A-B / undo / algorithm change; scroll-wheel and host automation edits snap so
   they never lag or mislead.
4. Reverted the tooltip fade-out (it could leave tooltips not showing); back to
   the plain instant tooltip window.

https://claude.ai/code/session_01Y38PtwPxh2geBLta6yuUwv
@skyRolly skyRolly marked this pull request as ready for review June 16, 2026 00:00
@skyRolly skyRolly merged commit 9068fd5 into main Jun 16, 2026
4 checks passed
skyRolly pushed a commit that referenced this pull request Jun 17, 2026
…, layout restructure

DSP
- Crossover drag no longer pitch-shifts: per-sample octaves/sec cutoff slew on
  every split, the same cap Mono Maker uses (#1).
- A/B "weird sound": at the silent duck bottom a forced swap now resets EVERY
  stateful node (Haas/Velvet/Chorus delay lines, all oversamplers, band + mono
  crossovers), so a same-algorithm A/B with different delay/rate/Drive can't
  replay old buffer contents as the duck lifts (#22).

Layout (#2/#3)
- The scope/meter block returns to its previous size: Advanced now GROWS the
  window downward by a full-width Multiband bar instead of squeezing the scope.
- Phase + balance meters hug the scope with an equal gap (cluster centred), so
  the scope-to-phase and scope-to-balance gaps always match, both modes.

Multiband module
- Renamed everywhere to Multiband; default ON, greys out when disabled (#20).
- Variable bands stay; new interaction model: width drag only near the width
  line (#15), add hint over the rest of a band (#14), click-drag adds a split AND
  positions it in one gesture (#16).
- Split delete x shows to the right of a hovered split (#6); reset clamps a split
  between its neighbours so it can't jump across one (#18).
- Double-click a split's number to type a frequency (7.7k / 7.7 / 7700 / 0.5,
  bare <= 20 = kHz) (#5).
- Scroll latch holds its target until the pointer really moves (3 px) (#4); band
  width scroll is 1 %/notch (#17).
- Smoother analyser: Catmull-Rom interpolation kills the low-end stair-stepping
  (#11); the noise floor is sunk below the frame so silence shows no green line
  (#10).
- Visual: split gets the same feathered glow as the width line (#7), an
  integrated rounded cap instead of a floating dot (#9), its bottom connects to
  the frame at rest and breaks only on hover (#12); the add "+" hugs the top edge
  and is larger (#13); a band-pass crossover hint while dragging a split (#19);
  shorter tooltip (#8).

Knobs/sliders (#21)
- A reset (double-click / Option-click) and a typed value now play the eased
  position sweep when Animations are on; a drag, the scroll wheel and host
  automation still snap.

https://claude.ai/code/session_01Y38PtwPxh2geBLta6yuUwv
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.

2 participants