Skip to content

v0.6.1: meter-anim revert + strip/stuck fix, preset Load, knob sweep, anim polish#19

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

v0.6.1: meter-anim revert + strip/stuck fix, preset Load, knob sweep, anim polish#19
skyRolly merged 1 commit into
mainfrom
claude/beautiful-sagan-JAUFI

Conversation

@skyRolly

Copy link
Copy Markdown
Owner

Anamorph 0.6.0 feedback — all 13 items.

# Item Fix
1 / 9 Meter reveal animation Reverted to the v0.5.9 exponential ease (the curve you preferred); it’s stateless so it always converges, and it now obeys the UI Animations switch (off = instant snap).
2 Thin strip on collapse / sometimes stuck layoutScopeArea is now authoritative for the level-meter visibility every frame — the moment the reserve collapses past ~2 px the meter is hidden, so no 1–2 px sliver can be left behind or stick.
3 Load missing / should use OS dialog Preset menu now has Load Preset… that opens the system file chooser filtered to *.anamorph; selecting a file loads it and adopts its name.
4 “F3” in the tooltip Removed — there was never a key binding, it was just misleading tooltip text.
5 Knobs teleport on preset/A-B Rotary knobs ease their pointer/arc toward the new value (a ~200 ms sweep) on preset and A/B changes; turning by hand stays 1:1 with no lag. Implemented as a per-knob eased vpos the LookAndFeel draws from, always kept current so a jump has a real “from” position.
6 Dirty mark too heavy Bold bullet → light *.
7 Long preset names don’t fit Pro Tools-style abbreviation when the slot is too narrow: drop vowels, keep each word’s first letter (Drum → Drm, Stereo → Stro); hard-clip only if still too wide.
8 Dropdown too narrow Preset list minimum width 228 px so the longest factory name (“Synth Dimension”) shows in full.
10 Toggle glitch on click Hover is now hit-tested against the live cursor instead of enter/exit events (which fire unreliably across clicks/relayouts/pop-ups — the flicker source); eased values are clamped 0..1 and never re-initialised mid-flight, so an in-progress animation always continues from where it is.
11 Cheap focus outline on Save field The name field gets the open-combo accent micro-glow when focused (a glow property + drawTextEditorOutline override), value boxes unchanged.
12 Presets tooltip Shortened to “Presets” (no period).
13 Window-scale resize flash Single guarded transform step with the editor now opaque and a prompt GL repaint, so no see-through/stale frame shows mid-resize; a no-op guard avoids redundant host resizes.

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

Note on #13: the transform is applied atomically (width+height together) and our side no longer flashes; if a particular host still animates its window in two axes that part is host-driven, but the plugin content stays clean throughout.

https://claude.ai/code/session_01Y38PtwPxh2geBLta6yuUwv


Generated by Claude Code

… anim polish

Addresses the 0.6.0 feedback (13 items):
1/9. Meter reveal reverted to the v0.5.9 exponential ease (the curve the user
     preferred); it is stateless so it always converges, and it now follows the
     UI-Animations switch (off = instant).
2.   layoutScopeArea is now authoritative for the level meter's visibility every
     frame, so a collapse can never leave (or stick on) a 1-2 px sliver.
3.   Preset menu gains "Load Preset..." which opens the OS file chooser
     (*.anamorph); PresetManager::loadFile adopts the file's name.
4.   Removed the "(F3)" reference from the UI-Animations tooltip (there was no
     key binding; it was misleading).
5.   Rotary knobs ease their pointer/arc toward the live value, so a preset or
     A/B switch sweeps the knob instead of teleporting; turning by hand stays
     1:1. Driven by a per-knob "vpos" the LookAndFeel draws from.
6.   Dirty marker changed from a bold bullet to a light " *".
7.   When the preset name is too wide for the slot it abbreviates Pro Tools
     style (drop vowels, keep each word's first letter: Drum -> Drm), then
     hard-clips only if still too wide.
8.   Preset list min width 228 px so long factory names show in full.
10.  Micro-anim hover is now hit-tested against the live cursor instead of
     enter/exit events, which fixed the occasional click-time flicker; eased
     values are clamped 0..1 and never re-initialised mid-flight.
11.  The Save-Preset name field gets the open-combo accent micro-glow when
     focused (via a "glow" property + drawTextEditorOutline), instead of a thin
     default outline.
12.  Presets tooltip shortened to "Presets" (no period).
13.  Window-scale change is a single guarded transform step with the editor
     opaque and a prompt GL repaint, so no see-through/stale frame flashes; the
     no-op guard avoids redundant host resizes.

https://claude.ai/code/session_01Y38PtwPxh2geBLta6yuUwv
@skyRolly skyRolly marked this pull request as ready for review June 11, 2026 21:12
@skyRolly skyRolly merged commit 574161a into main Jun 11, 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