Idempotent per target: asking twice moves the existing send rather than building a second one,
because this is called from per-frame code in every consumer that has ever used it and a send
node per frame is a graph that grows until the page stops.
Move to a level over an explicit time, rather than at the fader's own smoothing.
Parameter
Type
Description
level
number
seconds
number
More
A fader is a control and wants to feel immediate; a snapshot recall is an edit and takes as
long as it was asked to take. Both write the same mirrored level, so the mix knows where it is
either way — which AudioGraph.fadeMusic deliberately does not do, because a fade there is
part of an edit that has to return to the player's setting when it is over.
Move over the top of the fader and back, without moving the fader.
Parameter
Type
Description
factor
number
seconds
number
More
duck(0, 0.4) takes this bus away over four tenths of a second; duck(1, 0.4) brings it back
to exactly whatever the fader is set to, including a setting the player changed in between.
Cost: this is a second thing multiplying into one parameter, so a caller that ducks and forgets
to release leaves a bus quiet with a fader that says otherwise — which is why duckedTo is
readable rather than private.