You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Control jumps step the output in the older effects (clicks on quick knob moves) #3
When a control jumps from one value to another, several effects hand the new value to their node at once, so the output steps. You hear a click when you turn Mix, Rate, Depth or a similar knob quickly, or recall a preset while sound is playing.
This is the behaviour described in the control-smoothing notes: the node ramps that would remove it are not built yet. It affects all fifteen of the older effect classes: Bitcrusher, Chorus, CombFilter, Compressor, DeEsser, Distortion, DynamicEQ, Exciter, Fuzz, MultibandCompressor, Overdrive, Phaser, Saturation, Tremolo and Vibrato. The newer classes already state it as a known limit.
Trigger: lift this when the node ramps from the control-smoothing policy land, Mix first. Until then the lifecycle tests record these classes as having the same stated limit.
The first stage is in review: PyDevices/audiodsp#400 adds the node ramps (the Mixer's level_ramp, a 20 ms walk of a Mix, post gain or makeup move in the Waveshaper, Biquad, AllPass, Dynamics and FeedbackDelay nodes, and Port.play(after=)), and #15 uses them in all fifteen classes. With both, a jump of Mix or a level walks over 20 ms: rendered with a triangle going in, the largest step at the move went from up to 62 times the triangle's own steepest step (Saturation's Mix to 0) to at most 1.09.
This issue stays open for what still steps: Fuzz on its way back from Mix 0, Tremolo's Depth (21.7 times at 48 kHz), and DeEsser's Range coming back from 0 at 22.05 kHz, as on main. Filter corners and patch changes that rebuild part of a graph are the later stages on the roadmap.
A jump of Mix or a level now walks over 20 ms in the older effects (#15, on audiodsp's node ramps). The steepest step a jump makes fell from up to 61.8 times the material's own (Saturation's Mix to 0) to at most 1.09 times. What still steps is planned work in the roadmap: Fuzz back from Mix 0, Tremolo's Depth and DeEsser's Range at 22.05 kHz, then filter corners, then crossfaded patch changes (which also clear Exciter's patch steps). Released in 0.5.2.dev1.
Activity
bdbarnett commentedon Oct 30, 2026
On hold until the airwindows-py port settles; this gets picked up then.
bdbarnett commentedon Nov 10, 2026
The first stage is in review: PyDevices/audiodsp#400 adds the node ramps (the Mixer's
level_ramp, a 20 ms walk of a Mix, post gain or makeup move in the Waveshaper, Biquad, AllPass, Dynamics and FeedbackDelay nodes, andPort.play(after=)), and #15 uses them in all fifteen classes. With both, a jump of Mix or a level walks over 20 ms: rendered with a triangle going in, the largest step at the move went from up to 62 times the triangle's own steepest step (Saturation's Mix to 0) to at most 1.09.This issue stays open for what still steps: Fuzz on its way back from Mix 0, Tremolo's Depth (21.7 times at 48 kHz), and DeEsser's Range coming back from 0 at 22.05 kHz, as on main. Filter corners and patch changes that rebuild part of a graph are the later stages on the roadmap.
bdbarnett commentedon Nov 10, 2026
A jump of Mix or a level now walks over 20 ms in the older effects (#15, on audiodsp's node ramps). The steepest step a jump makes fell from up to 61.8 times the material's own (Saturation's Mix to 0) to at most 1.09 times. What still steps is planned work in the roadmap: Fuzz back from Mix 0, Tremolo's Depth and DeEsser's Range at 22.05 kHz, then filter corners, then crossfaded patch changes (which also clear Exciter's patch steps). Released in 0.5.2.dev1.