Feedback Delay
Overview
Recursive system implementing a feedback delay module
Discussion
This module implements a time-varying delay, with feedback gain control. The first input pin (mod) specifies the modulation factor; the second input pin is the multichannel audio signal. The module computes the instantaneous delay to apply on a sample-by-sample basis. The instantaneous delay is a floating-point value computed as:
delay[n] = M.currentDelay + mod[n] * M.modDepth
The modulation factor input is usually in the range [-1 +1], but this is not checked by the module.
The instantaneous delay time is a floating-point value and the module implements fractional sample interpolation using linear or cubic (third order) interpolation.
Module Pack
awe-mod-dspc-snd
ClassID
classID = 41825
Type Definition
typedef struct _ModuleFeedbackDelay
{
ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure
INT32 maxDelay; // Maximum delay that can be realized, in samples. The size of the delay buffer (maxDelay+1)*numChannels
INT32 interpType; // Interpolation type. 0 - Linear, 1 - Cubic
FLOAT32 currentDelay; // Current delay
FLOAT32 modDepth; // Maximum depth, in samples, of the modulation signal
FLOAT32 fGain; // Feedback gain.
INT32 stateIndex; // Index of the oldest state variable in the array of state variables
INT32 stateHeap; // Heap in which to allocate memory
FLOAT32* state; // State variable array
} ModuleFeedbackDelayClass;
Variables
Properties
| Name | Type | Usage | isHidden | Default Value | Range | Units |
|---|---|---|---|---|---|---|
| maxDelay | int | const | 0 | 100 | 1:100000 | samples |
| interpType | int | const | 0 | 0 | 0:1 | |
| currentDelay | float | parameter | 0 | 0 | 0:100 | samples |
| modDepth | float | parameter | 0 | 0 | 0:100 | samples |
| fGain | float | parameter | 0 | 0.5 | 0:1 | |
| stateIndex | int | state | 1 | 0 | Unrestricted | |
| stateHeap | int | const | 1 | 561 | Unrestricted | |
| state | float* | state | 1 | [1 x 101] | Unrestricted |
Pins
Input Pins
| Name | mod |
| Description | modulation input |
| Data type | float |
| Channel range | 1 |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Real |
| Name | in |
| Description | audio input |
| Data type | float |
| Channel range | Unrestricted |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Real |
Output Pins
| Name | out |
| Description | audio output |
| Data Type | float |
Matlab Usage
File Name: feedback_delay_module.m
M=feedback_delay_module(NAME, MAXDELAY, MEMHEAP, INTERP_TYPE)
Creates a fractional sample time delay with feedback gain for use in the
Audio Weaver.
Arguments:
NAME - name of the module.
MAXDELAY - Maximum delay, in samples.
MEMHEAP - specifies the memory heap to use to allocate the main
state buffer. This is a string and follows the memory
allocation enumeration in Framework.h. Allowable values
are:
'AWE_HEAP_FAST' - always use internal DM memory.
'AWE_HEAP_FASTB' - always use internal PM memory.
'AWE_HEAP_SLOW' - always use external memory.
'AWE_HEAP_FAST2SLOW' - use internal memory. If this fails
then use external memory (the default).
'AWE_HEAP_FASTB2SLOW' - use internal memory. If this fails
then use external memory.
INTERP_TYPE - Interpolation type. Linear or Cubic.
Copyright (c) 2026 DSP Concepts, Inc.