Wherein we present ChucK's Dyno ugen, a dynamics processor that includes Limiter, Compressor, Expander, Noise Gate, and Ducker.
Right-click to copy examples to your workspace
Dyno
is a built-in ugen of ChucK. It is documented here
and includes three ChucK-only examples:
Dyno operates by inferring an amplitude envelope
from an input signal.
Here we show how to use Dyno to duck a
signal based on a sidechain signal. This is a similar goal of the
CCSampler example and it may be worthwhile
understanding the differences and similarities of both. Keep in mind that Dyno
functionality isn't limited to ducking. In fact, the Compression
and
Limiting
features may be Dyno's bread-and-butter.
Still, ducking is fun and requires additional setup. In the graph below,
we see a typical arpeggiator notestream fed through a Square instrument and
then into Dyno
. This is the main signal chain which will be ducked by
the sidechain signal delivered by CCSampler.
Upstream from CCSampler is a SoundBuf Ctrl
node armed with a vocal clip,
obama_clip0.wav
and running continuously (due to its loop
parameter).
While the Preset
parameter below allows you to select an effect
from among Limit
, Compress
, Expand
, Gate
, and Duck
, it's
important to realize that all of these named effects are just the result of
applying the same algorithm to produce an amplitude envelope. We achieve
these effects with different parameter values and thus the effect names are
analogous to named colors on the colorwheel. It's a good idea to develop an
intuitive sense for what the parameters control as this will equip you to
handle the quirks associated with a particular input signal and to efficiently
achieve the effect you desire.
In this example, the DynoOut
plot can help to visualize what's going on.
Here we clearly see the shape of Dyno
's envelope.
Preset
updates/resets the parameters below according to the requested
effect. Note that this stomps on your existing parameters so use with
care. As you explore the parameter space it can be helpful to reset to a known
state.
Threshold
the point above which to stop using SlopeBelow and start
using SlopeAbove to determine output gain vs input gain.
SlopeAbove
the slope of the output gain vs the input envelope's level
when the envelope is above threshold.
SlopeBelow
the slope of the output gain vs the input envelope's
level when the envelope is below thresh.
AttackTime
the duration for the envelope to move linearly from current value
to the absolute value of the signal's amplitude.
ReleaseTime
the duration for the envelope to decay down to around 1/10 of
its current amplitude, if not brought back up by the signal.
UseSideInput
set to true to cue the amplitude envelope off of sidechain
input instead of the input signal. Note that this means you will need to
manually send SideInput (via a Controller). If false, the amplitude envelope
represents the amplitude of the input signal whose dynamics are being processed.