DXEnvFanOut sends multichannel envelopes, which are used by DXMix / DXMixIn / DXFan / DXFanOut implicitely, to a sequence of out buses, which, together with fadeTimes and stepTimes, can be passed as demand rate ugens. It can be used as envelope and trigger at the same time, which leads to applications such as crossfading PlayBufs and different kinds of granulation, using a buffer or not.
Thanks to Wouter Snoei for his PlayBufCF class. It gave me a lot of inspiration for DX ugens – although in the end the implementation with PanAz and DemandEnvGen is quite different. Thanks also to Till Bovermann for ironing out a longstanding bug in PanAz.
out |
Determines the sequence of buses between which the envelope should be crossfaded. A bus index, a demand rate or other ugen returning bus indices or a SequenceableCollection of such, causing multichannel expansion. If in this case the overall multichannel size is larger than the size of out and the latter contains demand rate ugens, they must all be wrapped into Functions. |
fadeTime |
A fade time, a demand rate or other ugens returning fade times or a SequenceableCollection of such, causing multichannel expansion. If in this case the overall multichannel size is larger than the size of fadeTime and the latter contains demand rate ugens, they must all be wrapped into Functions. The interpretation of fadeTime depends on fadeMode. fadeTime must be larger than the duration of a control cycle. Defaults to 1. |
stepTime |
A step time, a demand rate or other ugens returning step times or a SequenceableCollection of such, causing multichannel expansion. If in this case the overall multichannel size is larger than the size of stepTime and the latter contains demand rate ugens, they must all be wrapped into Functions. The interpretation of stepTime depends on fadeMode. stepTime must be larger than the duration of a control cycle. Defaults to 1. |
fadeMode |
Integers between 0 and 4 or a SequenceableCollection of such, causing multichannel expansion. Not modulatable.
Defaults to 0. |
sine |
Determines the crossfade type: sine-based or not. A Boolean, 0 or 1 or a demand rate or other ugen returning sine numbers or a SequenceableCollection of such, causing multichannel expansion. If in this case the overall multichannel size is larger than the size of sine and the latter contains demand rate ugens, they must all be wrapped into Functions. Modulating this arg is only possible if allowTypeSeq equals 1. Defaults to 1. |
equalPower |
Determines if crossfading of equal power type (square root) should be applied. A Boolean, 0 or 1 or a demand rate or other ugen returning equalPower numbers or a SequenceableCollection of such, causing multichannel expansion. If in this case the overall multichannel size is larger than the size of equalPower and the latter contains demand rate ugens, they must all be wrapped into Functions. Modulating this arg is only possible if allowTypeSeq equals 1. Defaults to 1. |
power |
This only comes into play if equalPower equals 0, then it's applied to the crossfade amplitude. If power and curve are passed, power applies before. A positive Number or a demand rate or other ugen returning positive power numbers or a SequenceableCollection of such, causing multichannel expansion. If in this case the overall multichannel size is larger than the size of power and the latter contains demand rate ugens, they must all be wrapped into Functions. Sequencing this arg with demand rate ugens is only possible if allowTypeSeq equals 1. Defaults to 1. |
curve |
This only comes into play if equalPower equals 0, then it's applied to the crossfade amplitude according to the lincurve mapping. If power and curve are passed, power applies before. A Number or a demand rate or other ugen returning curve numbers or a SequenceableCollection of such, causing multichannel expansion. If in this case the overall multichannel size is larger than the size of curve and the latter contains demand rate ugens, they must all be wrapped into Functions. Sequencing this arg with demand rate ugens is only possible if allowTypeSeq equals 1. Calculation of curvature is not giving reliable results when width and / or dynOutOffset are being modulated at the same time. Defaults to 0. |
allowTypeSeq |
Enables sequencing of sine, equalPower, power and curve with demand rate ugens and modulating of sine and equalPower with other ugens. A Boolean, 0 or 1 or a SequenceableCollection of such, causing multichannel expansion. Not modulatable. As this requires more ugens running in parallel it is disabled by default = 0. |
fadeRate |
One of the Symbols \ar and \kr, determining the crossfade rate used by PanAz or a SequenceableCollection of such, causing multichannel expansion. Not modulatable. Defaults to \ar. |
maxFadeNum |
Integer determining the maximum number of fades, after which doneAction applies. A SequenceableCollection causes multichannel expansion. Not modulatable. Defaults to inf. |
maxWidth |
An Integer determining the maximum width or a SequenceableCollection of such, causing multichannel expansion, width goes into PanAz's width arg. maxWidth increases the internally used and potentially needed number of parallel channels. Not modulatable. Defaults to 2. |
width |
Integer, Float, UGen (only from SC 3.9 onwards) or a SequenceableCollection of such, causing multichannel expansion. Not modulatable in versions earlier than SC 3.9. It determines the width according to PanAz's width arg. Note that a ugen's output must not exceed maxWidth. Defaults to 2. |
initOutOffset |
An Integer or Float or a SequenceableCollection of such, causing multichannel expansion. Determines an initial offset for PanAz's pos arg. This can be useful for a start with full or reduced width. Not modulatable. Defaults to 0. |
maxDynOutOffset |
An Integer or Float or a SequenceableCollection of such, causing multichannel expansion. Determines the maximum dynOutOffset to be expected. maxDynOutOffset increases the internally used and potentially needed number of parallel channels. Not modulatable. Defaults to 1. |
dynOutOffset |
UGen, Integer or Float or a SequenceableCollection of such, causing multichannel expansion. By passing a ugen the movement between buses can be modulated. Note that a ugen's output must not exceed maxDynOutOffset. Defaults to 0. |
allowFadeEnd |
Integer, Boolean or a SequenceableCollection of such, causing multichannel expansion. Determines if a demand rate input to in with finite length will be monitored, which needs a quite complicated trigger logic and more running ugens. If set to 0, the behaviour after the end of in is undefined. Defaults to 1. |
zeroThr |
A Number or a ugen returning zeroThr numbers or a SequenceableCollection of such, causing multichannel expansion. Determines if output values below this threshold are replaced by 0. This makes sense if the output signal is used as trigger (e.g. with DXEnvFan). In the case of low power numbers small inaccuracies are amplified, this is avoided with an appropriate zeroThr (e.g. = 0.001), as the operation is applied before taking the power. As this requires more ugens running in parallel it is disabled by default = nil. |
doneAction |
Integer or a SequenceableCollection of such, causing multichannel expansion. Determines the doneAction after maxFadeNum is exceeded. Defaults to 0. |