A single modulated delay line produces chorus, flanger, and vibrato depending on its delay-time settings
DDSP’s ModDelay effect implements a delay whose length varies over time, driven by a gain (wet amplitude) and a phase control. The instantaneous delay sweeps within [center_ms - depth_ms, center_ms + depth_ms], computed with variable_length_delay(). This one modulated-delay primitive covers a whole family of classic time-modulation effects: a short, slowly-swept delay mixed with the dry signal gives chorus and flanger, while modulating a delay of a copy of the signal alone gives vibrato — the effect you get is a function of the center delay, modulation depth, and whether the dry signal is added (add_dry). In DDSP the modulation curve is a network output, so the effect can be learned or driven expressively rather than set by fixed LFO knobs.
Examples
mod_delay = ddsp.effects.ModDelay(center_ms=15.0, depth_ms=10.0, add_dry=True)
# gain, phase: [batch, n_samples, 1] curves from a network or LFO
wet = mod_delay(audio, gain, phase)
Assessment
Explain how chorus, flanger, and vibrato all arise from the same modulated-delay processor. What do the center_ms and depth_ms parameters control, and what changes if add_dry is False?