Found by the lifecycle matrix on 2026-09-28, on all eight Phase 5 classes, and true of the earlier classes by the same construction.
When a control jumps (a patch change, a MIDI value that leaps, a host that sets Mix from 0.3 to 1.0 in one call), the class hands the new value to its nodes at once and the output steps. On a noise burst at 16000 LSB peak, Mix to its top stepped the output by about 4900 against the material's own largest step of about 150. A player hears a click. A knob turned by hand sends many small moves and sounds smooth.
Brad ruled on 2026-09-28: disclose it now, smooth it later. Each Phase 5 class says so in one sentence. This issue is the later.
Wanted
- A stated policy: which controls ramp, over how long, and where the ramp lives (the class, the base
Component, or the node).
- Mix first: it is the control most likely to be jumped and the loudest when it is.
- The lifecycle matrix's step property (P5) then holds with no declared exceptions.
Not decided
Whether a ramp belongs in the nodes (audiodsp) so CircuitPython users of the bare nodes get it too. audioecho.FeedbackDelay already ramps its wow depth over 20 ms.
Found by the lifecycle matrix on 2026-09-28, on all eight Phase 5 classes, and true of the earlier classes by the same construction.
When a control jumps (a patch change, a MIDI value that leaps, a host that sets Mix from 0.3 to 1.0 in one call), the class hands the new value to its nodes at once and the output steps. On a noise burst at 16000 LSB peak, Mix to its top stepped the output by about 4900 against the material's own largest step of about 150. A player hears a click. A knob turned by hand sends many small moves and sounds smooth.
Brad ruled on 2026-09-28: disclose it now, smooth it later. Each Phase 5 class says so in one sentence. This issue is the later.
Wanted
Component, or the node).Not decided
Whether a ramp belongs in the nodes (audiodsp) so CircuitPython users of the bare nodes get it too.
audioecho.FeedbackDelayalready ramps its wow depth over 20 ms.