arduino-audio-tools
Loading...
Searching...
No Matches
SimpleFlanger< effectsuite_t > Class Template Reference

Simple Flanger Effect Consistig of a single voice flanger The flanger has an effective range between 0 and 15 miliseconds in this case dleay buffer should be set to sampleRate*3/200 Constructor requires internal delay in samples. More...

#include <AudioEffectsSuite.h>

Inheritance diagram for SimpleFlanger< effectsuite_t >:
DelayEffectBase< effectsuite_t_default > EffectSuiteBase< effectsuite_t_default > AudioEffect

Public Member Functions

 SimpleFlanger ()=default
 SimpleFlanger (effectsuite_t extSampleRate=44100)
 SimpleFlanger (SimpleFlanger &copy)=default
 ~SimpleFlanger ()=default
virtual bool active ()
 determines if the effect is active
SimpleFlanger * clone () override
int id ()
 Allows to identify an effect.
effectsuite_t processFloat (effectsuite_t inputSample) override
virtual void setActive (bool value)
 sets the effect active/inactive
void setDepth (const effectsuite_t depth)
void setEffectGain (effectsuite_t gain)
void setEffectParams (effectsuite_t gain, effectsuite_t depth, effectsuite_t rate)
void setId (int id)
 Allows to identify an effect.
void setRate (const effectsuite_t rate)
void setupDelayEffectBase (const int bufferSizeSamples)
void setupSimpleFlanger (effectsuite_t extSampleRate)

Protected Member Functions

effectsuite_t capGain (effectsuite_t gain)
int16_t clip (int32_t in, int16_t clipLimit=32767, int16_t resultLimit=32767)
 generic clipping method
void copyParent (AudioEffect *copy)
void delaySample (effectsuite_t_default inputSample)
effectsuite_t_default getInterpolatedOut (effectsuite_t_default bufferIndex)
void incDelayBuffReadIndex (effectsuite_t_default indexInc)
void incDelayBuffWriteIndex ()
void setAngleDelta ()
bool setDelayBuffer (int bufferSizeSamples)
void setDelayBuffReadIndex (effectsuite_t_default index)
void storeSample (effectsuite_t_default inputSample)
void updateModulation ()

Static Protected Member Functions

static effectsuite_t_default ** setInterpolationTable ()

Protected Attributes

bool active_flag
effectsuite_t angleDelta = 2.0f * 3.141592653589793f * timeStep
effectsuite_t_default currentDelayReadIndex
int currentDelayWriteIndex
effectsuite_t_default * delayBuffer
int delayTimeSamples
effectsuite_t effectGain = .01
bool error
int id_value
int maxDelayBufferSize
effectsuite_t modulationAngle = 0
effectsuite_t modulationConstant
effectsuite_t modulationDepth = 1000
effectsuite_t modulationIndex = 0
effectsuite_t modulationRate = 0
effectsuite_t timeStep = 1. / 44100.

Static Protected Attributes

static effectsuite_t_default ** interpolationTable
 Table of interpolation values as a 2D array indexed by interpolationTable[pointIndex][alphaIndex]. One instance per DelayEffectBase<effectsuite_t> instantiation (previously a single namespace-scope global shared – and type-mismatched – across every effectsuite_t choice).
static const int interpOrder
static const int interpResolution

Detailed Description

template<typename effectsuite_t = effectsuite_t_default>
class audio_tools::SimpleFlanger< effectsuite_t >

Simple Flanger Effect Consistig of a single voice flanger The flanger has an effective range between 0 and 15 miliseconds in this case dleay buffer should be set to sampleRate*3/200 Constructor requires internal delay in samples.

See also
process
Author
Matthew Hamilton

Constructor & Destructor Documentation

◆ SimpleFlanger() [1/3]

template<typename effectsuite_t = effectsuite_t_default>
SimpleFlanger ( )
default

Constructor: DigitalEffect Base Must Be initialised

See also
DelayEffectBase constructor

◆ SimpleFlanger() [2/3]

template<typename effectsuite_t = effectsuite_t_default>
SimpleFlanger ( SimpleFlanger< effectsuite_t > & copy)
default

◆ SimpleFlanger() [3/3]

template<typename effectsuite_t = effectsuite_t_default>
SimpleFlanger ( effectsuite_t extSampleRate = 44100)
inline

◆ ~SimpleFlanger()

template<typename effectsuite_t = effectsuite_t_default>
~SimpleFlanger ( )
default

Destructor.

Member Function Documentation

◆ active()

virtual bool active ( )
inlinevirtualinherited

determines if the effect is active

◆ capGain()

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t capGain ( effectsuite_t gain)
inlineprotected

capGain: caps gain to a range of 1 and -1;

Parameters
gainaddress of gain value

◆ clip()

int16_t clip ( int32_t in,
int16_t clipLimit = 32767,
int16_t resultLimit = 32767 )
inlineprotectedinherited

generic clipping method

◆ clone()

template<typename effectsuite_t = effectsuite_t_default>
SimpleFlanger * clone ( )
inlineoverridevirtual

Implements AudioEffect.

◆ copyParent()

void copyParent ( AudioEffect * copy)
inlineprotectedinherited

◆ delaySample()

void delaySample ( effectsuite_t_default inputSample)
inlineprotectedinherited

store input sample into the delay buffer and increment currentDelayWriteIndex for tracking when to loop back to start of buffer

Parameters
inputSamplesample to be stored for delay (effectsuite_t)

◆ getInterpolatedOut()

effectsuite_t_default getInterpolatedOut ( effectsuite_t_default bufferIndex)
inlineprotectedinherited

get the value of the requested buffer index by interpolating other points

Parameters
bufferIndexThe required buffer index
Returns
interpolated output

◆ id()

int id ( )
inlineinherited

Allows to identify an effect.

◆ incDelayBuffReadIndex()

void incDelayBuffReadIndex ( effectsuite_t_default indexInc)
inlineprotectedinherited

Increments the currentDelayBufferReadIndex by indexInc

Parameters
indexIncThe amount to increment the delay buffer index

◆ incDelayBuffWriteIndex()

void incDelayBuffWriteIndex ( )
inlineprotectedinherited

Increments the currentDelayWriteBufferIndex by 1

◆ processFloat()

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t processFloat ( effectsuite_t inputSample)
inlineoverride

Apply the DSP effect

◆ setActive()

virtual void setActive ( bool value)
inlinevirtualinherited

sets the effect active/inactive

◆ setAngleDelta()

template<typename effectsuite_t = effectsuite_t_default>
void setAngleDelta ( )
inlineprotected

setAngleDelta: sets the angleDelta for delay modulation

◆ setDelayBuffer()

bool setDelayBuffer ( int bufferSizeSamples)
inlineprotectedinherited

Allocates memory for delay buffer and initialises all elements to 0

Parameters
bufferSizeSamplesthe size of delay buffer to be used
Returns
false and error description if there's a problem, or sets the internal delay buffer and returns true

◆ setDelayBuffReadIndex()

void setDelayBuffReadIndex ( effectsuite_t_default index)
inlineprotectedinherited

sets the currentDelayBufferReadIndex by indexInc (Currently no wrapping)

Parameters
indexthe read index index required

◆ setDepth()

template<typename effectsuite_t = effectsuite_t_default>
void setDepth ( const effectsuite_t depth)
inline

<Description#>

Parameters
depth<#depth description#>

◆ setEffectGain()

template<typename effectsuite_t = effectsuite_t_default>
void setEffectGain ( effectsuite_t gain)
inline

setEffectGain: sets the effect gain to a value between 1 and -1

Parameters
gainrequired delay gain. Values beyond 1 and -1 are capped to the maximum to avoid idiocy. Negative velus invoke a phase inversion.

◆ setEffectParams()

template<typename effectsuite_t = effectsuite_t_default>
void setEffectParams ( effectsuite_t gain,
effectsuite_t depth,
effectsuite_t rate )
inline

setEffectGain: sets the parameters for effect

Parameters
gaineffect gain
depthdepth of modulation in samples
raterate of modulation in Hz

◆ setId()

void setId ( int id)
inlineinherited

Allows to identify an effect.

◆ setInterpolationTable()

effectsuite_t_default ** setInterpolationTable ( )
inlinestaticprotectedinherited

Sets the internal lagrange interpolation table. Ideally it should be shared amongst all

Returns
false and an error description if there's a problem, or sets the interpolation lookup table and returns true

◆ setRate()

template<typename effectsuite_t = effectsuite_t_default>
void setRate ( const effectsuite_t rate)
inline

<Description#>

Parameters
rate<#rate description#>

◆ setupDelayEffectBase()

void setupDelayEffectBase ( const int bufferSizeSamples)
inlineinherited

<Description#>

Parameters
bufferSizeSamples<#bufferSizeSamples description#>

◆ setupSimpleFlanger()

template<typename effectsuite_t = effectsuite_t_default>
void setupSimpleFlanger ( effectsuite_t extSampleRate)
inline

◆ storeSample()

void storeSample ( effectsuite_t_default inputSample)
inlineprotectedinherited

store input sample into the delay buffer

Parameters
inputSamplesample to be stored for delay (effectsuite_t)

◆ updateModulation()

template<typename effectsuite_t = effectsuite_t_default>
void updateModulation ( )
inlineprotected

updateModulation: updates the modulationIndex by the correct increment

Member Data Documentation

◆ active_flag

bool active_flag
protectedinherited

◆ angleDelta

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t angleDelta = 2.0f * 3.141592653589793f * timeStep
protected

increment value for modulation signal

◆ currentDelayReadIndex

effectsuite_t_default currentDelayReadIndex
protectedinherited

◆ currentDelayWriteIndex

int currentDelayWriteIndex
protectedinherited

◆ delayBuffer

effectsuite_t_default* delayBuffer
protectedinherited

buffer to stored audio buffer for delay effects

◆ delayTimeSamples

int delayTimeSamples
protectedinherited

the delay time of signal in samples

◆ effectGain

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t effectGain = .01
protected

◆ error

bool error
protectedinherited

internal class error boolean

◆ id_value

int id_value
protectedinherited

◆ interpolationTable

effectsuite_t_default** interpolationTable
staticprotectedinherited

Table of interpolation values as a 2D array indexed by interpolationTable[pointIndex][alphaIndex]. One instance per DelayEffectBase<effectsuite_t> instantiation (previously a single namespace-scope global shared – and type-mismatched – across every effectsuite_t choice).

◆ interpOrder

const int interpOrder
staticprotectedinherited

◆ interpResolution

const int interpResolution
staticprotectedinherited

◆ maxDelayBufferSize

int maxDelayBufferSize
protectedinherited

Maximum number of samples that can be stored in delayBuffer

◆ modulationAngle

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t modulationAngle = 0
protected

◆ modulationConstant

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t modulationConstant
protected

2 * pi * modulationRate / sampleRate

◆ modulationDepth

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t modulationDepth = 1000
protected

◆ modulationIndex

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t modulationIndex = 0
protected

◆ modulationRate

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t modulationRate = 0
protected

◆ timeStep

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t timeStep = 1. / 44100.
protected

1/sampleRate: The time in seconds between samples


The documentation for this class was generated from the following file: