Skip to content

Control jumps step the output in the older effects (clicks on quick knob moves) #3

Closed

Description

@bdbarnett

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.

Activity

  1. bdbarnett commented on Oct 30, 2026

    @bdbarnett
    ContributorAuthor

    On hold until the airwindows-py port settles; this gets picked up then.

  2. bdbarnett commented on Nov 10, 2026

    @bdbarnett
    ContributorAuthor

    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.

  3. bdbarnett commented on Nov 10, 2026

    @bdbarnett
    ContributorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions