Class fx_variable_delay

Inheritance Relationships

Base Type

Class Documentation

class fx_variable_delay : public fx_effect

Effect: Variable delay - foundational block of flangers and choruses.

The variable delay effect is the basis for a number of time-varying delay effects like chorus, flanger, phaser, vibrato, Leslie simulator, etc.

Here’s a nice tutorial on how variable delays work in these various building blocks: https://www.dsprelated.com/freebooks/pasp/Time_Varying_Delay_Effects.html

Example: ___var_del_1.c___

Public Functions

fx_variable_delay(float rate_hz, float depth, float feedback, OSC_TYPES mod_type)

Basic constructor/initializer for variable delay.

Parameters
  • [in] rate_hz: The modulation rate in Hz

  • [in] depth: The modulation depth (0.0 -> 1.0)

  • [in] feedback: The feedback from output to input (-1.0 -> 1.0)

  • [in] mod_type: The shape of the waveform used to modulate (e.g. OSC_SINE, OSC_TRI, etc.)

fx_variable_delay(float rate_hz, float depth, float feedback, float buf_size_ms, float mix_clean, float mix_delayed, OSC_TYPES mod_type, bool ext_mod)

Basic constructor/initializer for variable delay.

Parameters
  • [in] rate_hz: The modulation rate in Hz

  • [in] depth: The modulation depth (0.0 -> 1.0)

  • [in] feedback: The feedback from output to input (-1.0 ->1.0)

  • [in] buf_size_ms: The size of the audio in milliseconds (start wtih a value around 30)

  • [in] mix_clean: The clean mix. If this is set to 0.0, then you’ll just get the pitch changing aspect of the wave that can used for tape delay simulators, etc.

  • [in] mix_delayed: The delayed signal mix.

  • [in] mod_type: The shape of the waveform used to modulate (e.g. OSC_SINE, OSC_TRI, etc.)

  • [in] ext_mod: whether to use an external modulation source (set to true or false)

fx_variable_delay(float rate_hz, float depth, float feedback, float buf_size_ms, float mix_clean, float mix_delayed, OSC_TYPES mod_type, bool ext_mod, float initial_phase)

Basic constructor/initializer for variable delay.

Parameters
  • [in] rate_hz: The modulation rate in Hz

  • [in] depth: The modulation depth (0.0 -> 1.0)

  • [in] feedback: The feedback from output to input (-1.0 ->1.0)

  • [in] buf_size_ms: The size of the audio in milliseconds (start wtih a value around 30)

  • [in] mix_clean: The clean mix. If this is set to 0.0, then you’ll just get the pitch changing aspect of the wave that can used for tape delay simulators, etc.

  • [in] mix_delayed: The delayed signal mix.

  • [in] mod_type: The shape of the waveform used to modulate (e.g. OSC_SINE, OSC_TRI, etc.)

  • [in] ext_mod: whether to use an external modulation source (set to true or false)

  • [in] initial_phase: Initial phase in degrees

void enable()

Enable the this_effect (it is enabled by default)

void bypass()

Bypass the this_effect (will just pass clean audio through)

void set_depth(float depth)

Updates the depth of the variable delay.

Parameters
  • [in] depth: The new depth value

void set_rate_hz(float rate_hz)

Updates the rate (Hz) of the variable delay.

Parameters
  • [in] rate_hz: The new rate hz

void set_feedback(float feedback)

Updates the feedback parameter of the variable delay.

Parameters
  • [in] feedback: The new feedback value (-1.0->1.0)

void set_mix_clean(float mix_clean)

Updates the clean mix of the variable delay.

Parameters
  • [in] mix_clean: The new clean mix value

void set_mix_delayed(float mix_delayed)

Updates the delayed signal mix of the variable delay.

Parameters
  • [in] mix_delayed: The new delayed mix value

void set_lfo_type(OSC_TYPES new_type)

Sets the the type of oscillator used as the LFO.

Parameters
  • [in] new_type: The new type of LFO (OSC_TYPES)

void print_params(void)

Prints the parameters for this effect.

Public Members

fx_audio_node *input

Audio routing node [input]: primary audio input

fx_audio_node *output

Audio routing node [output]: primary audio output

fx_audio_node *ext_mod_in

Audio routine node [input]: use another signal as the modulator source such as an fx_oscillator. The oscillator can be run though the clipper for example to create new types of waveforms.

fx_audio_node *modulated_out

Audio routing node [output]: just the pitch modulated signal without mixing in the original signal

fx_control_node *depth

Control routing node [input]: modulation depth

fx_control_node *rate_hz

Control routing node [input]: modulation rate in Hz

fx_control_node *feedback

Control routing node [input]: feedback

fx_control_node *mix_clean

Control routing node [input]: clean signal mix

fx_control_node *mix_delayed

Control routing node [input]: delayed signal mix