@maruaudio/dsp/processors/serial-effect-stack-reference is a qualification fixture for @maru/processors-serial-effect-stack: a three-slot consumer that dispatches three tiny stages from static if arms, with no callback array or runtime registry. Slot 0 is a one-pole low-pass, slot 1 a one-sample delay averaged with its input, slot 2 the shaper x / (1 + |x|). The stages have different state and transfer functions, so their order changes the output. It is a scheduler oracle, not a product effect and not evidence of MultiFX leaf reuse.
const state = createSerialEffectStackReferenceState()
requestSerialEffectStackReferenceOrder(state, new Int32Array([2, 1, 0]), 0b111)
const y = serialEffectStackReferenceTick(state, x)Lifecycle
createSerialEffectStackReferenceState allocates the three-slot scheduler buffers, two one-word f32 histories and fixed tags [1, 2, 3] → requestSerialEffectStackReferenceOrder(order, activeMask) (never invalidates a slot) → serialEffectStackReferenceTick once per sample. The tick runs the active slots in the committed order, mixes dry and wet with the scheduler's wet gain and advances the scheduler one frame. There is no reset of its own; the scheduler's resetSerialEffectStack applies to state.stack.
When to use it
When changing the scheduler or its lowering, as the smallest consumer that shows order matters and that a pure reorder keeps each stage's state.
Limits
- Mono sample tick, all arithmetic rounded to f32.
- Three fixed stages; the request takes no tags and no invalidate mask.
- The stage histories are not cleared by a reorder or by the scheduler.