[AUv3] Parameter ramps and event sample offsets are ignored
Summary
The AUv3 render-event path does not implement sample-accurate parameter changes.
Parameter events and parameter-ramp events appear to be applied as immediate block-level changes, without respecting their sample time or ramp duration.
Severity
P1 — Automation is functionally incorrect
Affected area
modules/yup_audio_plugin_client/auv3/yup_audio_plugin_client_AUv3.mm
Current behaviour
AURenderEventParameter and AURenderEventParameterRamp are handled without splitting the processing block or applying a ramp over the requested duration.
The implementation does not appear to use:
eventSampleTime;
- the event's offset within the current block;
rampDurationSampleFrames.
Impact
- sample-accurate automation is lost;
- parameter ramps become discontinuous jumps;
- fast automation may click or zipper;
- rendered output differs between hosts or buffer sizes;
- modulation timing may be shifted to the beginning of the block.
Steps to reproduce
- Create a gain parameter.
- Schedule a parameter event halfway through a render block.
- Render a constant signal.
- Inspect the exact sample at which gain changes.
- Repeat with a parameter ramp over a known number of frames.
Actual result
The parameter change may be applied to the entire block, and a ramp may be treated as an immediate jump.
Expected result
- Immediate parameter events should take effect at their specified sample offset.
- Ramp events should interpolate across the requested duration.
- Multiple events in one block should be processed in order.
Suggested fix
Process the block in segments:
- Determine each event's sample offset relative to the current render timestamp.
- Render audio up to the next event.
- Apply the event.
- For ramp events, provide an internal ramp or render subsegments using the interpolated value.
- Continue until the end of the block.
Alternatively, extend the processor API so it can receive sample-accurate parameter events directly.
Acceptance criteria
[AUv3] Parameter ramps and event sample offsets are ignored
Summary
The AUv3 render-event path does not implement sample-accurate parameter changes.
Parameter events and parameter-ramp events appear to be applied as immediate block-level changes, without respecting their sample time or ramp duration.
Severity
P1 — Automation is functionally incorrect
Affected area
modules/yup_audio_plugin_client/auv3/yup_audio_plugin_client_AUv3.mmCurrent behaviour
AURenderEventParameterandAURenderEventParameterRampare handled without splitting the processing block or applying a ramp over the requested duration.The implementation does not appear to use:
eventSampleTime;rampDurationSampleFrames.Impact
Steps to reproduce
Actual result
The parameter change may be applied to the entire block, and a ramp may be treated as an immediate jump.
Expected result
Suggested fix
Process the block in segments:
Alternatively, extend the processor API so it can receive sample-accurate parameter events directly.
Acceptance criteria
rampDurationSampleFrames.