v0.6.6: true duck-around-swap kills A/B/preset pop; spectral 4-band Imager#24
Merged
Conversation
…mager #1 (pop, re-fix): the v0.6.5 duck still popped because (a) the Level-Match re-injection jumped the gain at the TOP of the block while the duck was still at full level, and (b) continuous params applied immediately during the fade-out, leaving a swell for big changes. A forced (A/B / preset / undo) swap is now a TRUE duck-around-swap: the OLD state stays live through the fade-out and the ENTIRE new state -- continuous included -- is applied at the silent bottom, where the smoothers are snapped to their targets and the match injection is consumed. Nothing (smoothed or not) changes at audible level, so it can't click. The normal discrete duck is unchanged. Deferred feature: the rotary Multiband is replaced by a Pro-Q 4 / Ozone-style spectral IMAGER (Advanced mode): - DSP: MultibandWidth extended to FOUR phase-coherent bands (three cascaded Linkwitz-Riley crossovers), each with its own MS width; mono-compatible. - Params: three crossovers (mbFreqLow/Mid/High) + four widths (mbWidthLow/Mid/HiMid/High); two new params added, IDs otherwise stable. - GUI: new SpectrumImager component -- a live FFT analyser (fed by the existing lock-free ScopeBuffer, no new tap) with three draggable crossover handles splitting it into four bands; drag UP/DOWN inside a band sets its width, no knobs. Double-click a crossover or band to reset. Drives the parameters directly (automation + undo aware). Shown only in Advanced mode. https://claude.ai/code/session_01Y38PtwPxh2geBLta6yuUwv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Anamorph 0.6.5 feedback — the A/B/preset pop (re-fix) and the deferred spectral Imager.
1. A/B / preset pop — properly fixed this time (true duck-around-swap)
The v0.6.5 duck still popped. Two real causes, both found by reading the duck machine end-to-end:
matchInject) jumpedmatchGainSmoothat the top of the block — whileswitchPhasewas still ≈1 (full level) — so the gain discontinuity was never under the duck. (This is the A/B click specifically.)Now a forced swap (A/B / preset / undo) is a real duck-around-swap: the OLD state stays live through the fade-out, and the entire new state — continuous included — is applied at the silent bottom, where the smoothers are snapped to their new targets and the match injection is consumed. Nothing changes at an audible level, so it cannot click, regardless of how large the jump is or whether a given control is smoothed. The normal discrete-switch duck (algorithm changes etc.) is unchanged.
2. Spectral Imager (replaces the rotary Multiband)
A FabFilter Pro-Q 4 / Ozone-Imager-style band editor, Advanced-mode only:
MultibandWidthextended from 3 to 4 phase-coherent bands (three cascaded Linkwitz-Riley crossovers), each with its own MS width; recombination stays mono-compatible. Linear, so it stays outside oversampling.mbFreqLow/Mid/High) + four widths (mbWidthLow/Mid/HiMid/High). Two new params added; existing IDs kept so old automation/state still map.SpectrumImager: a live FFT analyser fed by the existing lock-freeScopeBuffer(no new audio-thread tap), with three draggable crossover handles splitting the spectrum into four bands. Drag up/down inside a band to set its width — no knobs. Double-click a crossover or band to reset. It drives the parameters directly via begin/set/endChangeGesture, so host automation and undo work. Replaces the five rotary knobs in the Advanced bottom strip; theOnenable toggle stays.Gates: 14/14 DSP self-tests (incl. the 4-band engine in the NaN/feature matrix) · no new compiler warnings · pluginval strictness 10 PASSED (editor open/close exercises the new FFT/timer component under xvfb).
Note: the Imager currently lives in the Advanced strip where the multiband was (~module-sized). If you want it larger/more prominent (closer to Pro-Q's full-width display), that's an easy follow-up — say the word.
https://claude.ai/code/session_01Y38PtwPxh2geBLta6yuUwv
Generated by Claude Code