Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Overview

Modulated time delay using cubic interpolation

Discussion

THIS MODULE IS DEPRECATED AND NOT RECOMMENDED FOR NEW DESIGNS.

PLEASE USE THE AllpassDelayci MODULE INSTEAD.

This module implements a time-varying delay. 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 cubic (third order) interpolation. A related module is delayi which implements the same function but uses linear interpolation.

Type Definition

typedef struct _ModuleDelayci
{
    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
    FLOAT32 currentDelay;                         // Current delay
    FLOAT32 modDepth;                             // Maximum depth, in samples, of the modulation signal
    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
} ModuleDelayciClass;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

maxDelay

int

const

0

100

1:100000

samples

currentDelay

float

parameter

0

0

0:100

samples

modDepth

float

parameter

0

0

0:100

samples

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: delayci_module.m

 M=delayci_module(NAME, MAXDELAY, MEMHEAP)
 Creates a fractional sample time delay for use in the Audio Weaver.  Arguments:
 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.

  • No labels