(8.D.2.3) Delays
This section contains the following pages:
Links to individual module pages can also be found in the table at the end of this page.
General Information
Delay modules hold the input signal for some amount of time using an internal circular buffer. This buffer is instantiated with a size maxDelay
. At runtime, currentDelay
is set to control the time constant for the maxDelay
buffer. Most delays update currentDelay
instantaneously, but smoothed(interpolated) delays are provided if the final product needs a varying delay.
Delay time type can be int or fract32 samples, int or fract32 milliseconds, or blocks. Input type also varies, meaning some modules take Float audio data, some take Fract32 audio, and some take any type (including int).
For most cases, use Delay msec or Delay samples. Modulated delays come into play for making musical effects.
Allpass Delays
Allpass Delays use feedback and feedforward in order to vary the phase of a signal without changing its magnitude or its position in time. Our allpass delays have a coef variable which determines the amount of gain on the feedback/forward mix factor. Allpasses are commonly used in audio effects like chorus, flanger, reverb, and stereo effects. Our allpasses also have the option of outputting the delayed signal (in cases where time position and phase should change).
Modulated Delays
Modulated Delays come with a modulation control pin. This control pin feeds the modulation factor mod, limited in depth by modDepth. A common use case is to provide the mod pin with a random or oscillator source that varies from -1 to 1, allowing the delay to vary. This oscillation reduces harmonic artifacts from feedback delay lines.
Delay Taps
Delay Taps create an evenly spaced N amount of delays, which are all interleaved into separate ‘delay channels.’ This is useful for adaptive FIR filters and prediction algorithms due to the consistency in delay length.
Low memory delays
Since delays tend to be memory intensive, memory efficient options are provided. Modules labelled with a 16 in the name use half of the bits (compared to 32 bit data). This results in about half the size on the heap, at a cost of lost amplitude resolution. Our most memory efficient delay for multiple lines is the Delay State Writer16. This uses a circular buffer and multiple pointers instead of multiple buffers in memory, all while using 16-bit resolution.
Table of Delay Modules
Module Name | Input type | Delay Time Type | Time Interpolation | Modulation Control | Delay Tap | Low Mem |
Floating point | Integer Samples | (none) | (none) | (none) | (none) | |
Fract32 | Integer Samples | (none) | (none) | (none) | (none) | |
Floating point | Integer Samples | (none) | (none) | (none) | yes | |
Fract32 | Integer Samples | (none) | (none) | (none) | yes | |
Floating point | Fractional Samples | Cubic | yes | (none) | (none) | |
Floating point | Fractional Samples | Linear | yes | (none) | (none) | |
Any | Blocks | (none) | (none) | (none) | (none) | |
Any | Integer Samples | (none) | (none) | (none) | (none) | |
Fract32 | Fractional Samples | Linear and Cubic | yes | (none) | (none) | |
Any | Fractional Milliseconds | (none) | (none) | (none) | (none) | |
Any | Integer Samples | (none) | (none) | yes | (none) | |
Fract32 | Integer Samples | (none) | (none) | yes | yes | |
Integer | Fractional Samples | (none) | (none) | (none) | (none) | |
Any | Integer Samples | (none) | (none) | (none) | (none) | |
Any | Integer Samples | (none) | (none) | (none) | yes | |
Any | Integer Samples | (none) | (none) | (none) | yes | |
Floating point | Fractional Samples | Cubic | yes | (none) | (none) | |
Delayci Fract32 | Fract32 | Fractional Samples | (none) | (none) | (none) | (none) |
Delayi | Floating point | Fractional Samples | Linear | yes | (none) | (none) |
Fractional Delay Fract32 | Fract32 | Fractional Samples | (none) | (none) | yes | (none) |
Interpolated Delay | Floating point | Fractional Samples | Linear and Cubic | yes | (none) | (none) |
Â