arduino-audio-tools
Loading...
Searching...
No Matches
FilterEffectBase< effectsuite_t > Class Template Referenceabstract

A Base class for filter based effects including methods for simple high, low and band pass filtering. More...

#include <AudioEffectsSuite.h>

Inheritance diagram for FilterEffectBase< effectsuite_t >:
EffectSuiteBase< effectsuite_t_default > AudioEffect

Public Member Functions

 FilterEffectBase ()
 FilterEffectBase (FilterEffectBase &copy)
 ~FilterEffectBase ()
virtual bool active ()
 determines if the effect is active
virtual effectsuite_t applyFilter (effectsuite_t sampVal)
virtual AudioEffect * clone ()=0
effectsuite_t envelope (effectsuite_t sample)
int id ()
 Allows to identify an effect.
virtual effect_t process (effect_t inputSample) override
 see applyFilter
virtual effectsuite_t processFloat (effectsuite_t inputSample) override
virtual void setActive (bool value)
 sets the effect active/inactive
bool setChebyICoefficients (effectsuite_t cutFreqIn, bool shelfType, effectsuite_t rippleIn)
void setId (int id)
 Allows to identify an effect.

Protected Member Functions

void allocateBufferMemory ()
bool changeChebyICoefficients (effectsuite_t cutFreq, bool shelfType, effectsuite_t ripple, int poles)
void clearMemory ()
int16_t clip (int32_t in, int16_t clipLimit=32767, int16_t resultLimit=32767)
 generic clipping method
void copyParent (AudioEffect *copy)
void incBufferIndex ()
effectsuite_t rms (effectsuite_t sample)
bool setSimpleLpf (int order)

Protected Attributes

bool active_flag
int bufferIndex = 0
int filterOrder = 0
float * firBuffer = 0
float * firCoefficients = 0
float * firTemp = 0
int id_value
float * iirBuffer = 0
float * iirCoefficients = 0
float * iirTemp = 0
effectsuite_t * rmsBuffer = new effectsuite_t[rmsWindowSize]
int rmsBufferIndex = 0
const int rmsWindowSize = 128
int samplingRate = 0

Detailed Description

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

A Base class for filter based effects including methods for simple high, low and band pass filtering.

See also
FilterEffectBase
Author
Matthew Hamilton

Constructor & Destructor Documentation

◆ FilterEffectBase() [1/2]

template<typename effectsuite_t = effectsuite_t_default>
FilterEffectBase ( )
inline

Constructor.

◆ FilterEffectBase() [2/2]

template<typename effectsuite_t = effectsuite_t_default>
FilterEffectBase ( FilterEffectBase< effectsuite_t > & copy)
inline

◆ ~FilterEffectBase()

template<typename effectsuite_t = effectsuite_t_default>
~FilterEffectBase ( )
inline

Destructor.

Member Function Documentation

◆ active()

virtual bool active ( )
inlinevirtualinherited

determines if the effect is active

◆ allocateBufferMemory()

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

will allocate memory to a buffer given the current filter order and set all values == 0.00

◆ applyFilter()

template<typename effectsuite_t = effectsuite_t_default>
virtual effectsuite_t applyFilter ( effectsuite_t sampVal)
inlinevirtual

with the current filter coefficients this method filters a sample then stores it the sample Buffer and increments the index

Parameters
sampValis the sample to be processed
Returns
filtered audio sample

◆ changeChebyICoefficients()

template<typename effectsuite_t = effectsuite_t_default>
bool changeChebyICoefficients ( effectsuite_t cutFreq,
bool shelfType,
effectsuite_t ripple,
int poles )
inlineprotected

set firCoefficients and iirCoefficients for required chebyshev type I filter sampleBuffer memory is also set @params cutFreq normalised cutoff frequency (0 < x < .5) @params shelfType bool filter shelf type, false = low pass, true = high pass @params ripple percentage ripple (<.2929) @params poles number of poles

Returns
boolean false on error and true on success

◆ clearMemory()

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

checks internal memory storage of filter coeffcients and deletes if required

◆ clip()

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

generic clipping method

◆ clone()

virtual AudioEffect * clone ( )
pure virtualinherited

◆ copyParent()

void copyParent ( AudioEffect * copy)
inlineprotectedinherited

◆ envelope()

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t envelope ( effectsuite_t sample)
inline

detect the envelop of an incoming signal

Parameters
samplethe incoming signal sample value
Returns
returns envelope dection signal sample value

◆ id()

int id ( )
inlineinherited

Allows to identify an effect.

◆ incBufferIndex()

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

increment the buffer index and wrap it to the filter order

◆ process()

template<typename effectsuite_t = effectsuite_t_default>
virtual effect_t process ( effect_t inputSample)
inlineoverridevirtual

see applyFilter

Reimplemented from EffectSuiteBase< effectsuite_t_default >.

Reimplemented in FilteredDelay< effectsuite_t >.

◆ processFloat()

template<typename effectsuite_t = effectsuite_t_default>
virtual effectsuite_t processFloat ( effectsuite_t inputSample)
inlineoverridevirtual

◆ rms()

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t rms ( effectsuite_t sample)
inlineprotected

root mean square of signal over a specific sample window

◆ setActive()

virtual void setActive ( bool value)
inlinevirtualinherited

sets the effect active/inactive

◆ setChebyICoefficients()

template<typename effectsuite_t = effectsuite_t_default>
bool setChebyICoefficients ( effectsuite_t cutFreqIn,
bool shelfType,
effectsuite_t rippleIn )
inline

changes the current Chebyshev type 1 coefficients without altering the filter order. This allows for use in an audio process thread as it avoids dynamic allocation of memory. Filter sample and coefficient buffers are unaltered for initialising a chebyshev type 1 filter

See also
setChebyICoefficients @params cutFreq normalised cutoff frequency (0 < x < .5) @params shelfType bool Filters shelf type, false = low pass, true = high pass @params ripple percentage ripple (<.2929)
Returns
boolean false on error and true on success

◆ setId()

void setId ( int id)
inlineinherited

Allows to identify an effect.

◆ setSimpleLpf()

template<typename effectsuite_t = effectsuite_t_default>
bool setSimpleLpf ( int order)
inlineprotected

a simple normalised fir low pass filter @params order number of delay coefficients

Member Data Documentation

◆ active_flag

bool active_flag
protectedinherited

◆ bufferIndex

template<typename effectsuite_t = effectsuite_t_default>
int bufferIndex = 0
protected

current buffer index

◆ filterOrder

template<typename effectsuite_t = effectsuite_t_default>
int filterOrder = 0
protected

order of delay filter including the zero delay coefficients

◆ firBuffer

template<typename effectsuite_t = effectsuite_t_default>
float* firBuffer = 0
protected

buffer to hold forward delay sample data

◆ firCoefficients

template<typename effectsuite_t = effectsuite_t_default>
float* firCoefficients = 0
protected

Numerator coefficients in delay filter firCoefficients[0] z^0 coeffcieint firCoefficients[1] z^-1 coefficient

◆ firTemp

template<typename effectsuite_t = effectsuite_t_default>
float* firTemp = 0
protected

hold temporary values for fir coeffcient buffer

◆ id_value

int id_value
protectedinherited

◆ iirBuffer

template<typename effectsuite_t = effectsuite_t_default>
float* iirBuffer = 0
protected

buffer to hold backward delay sample data

◆ iirCoefficients

template<typename effectsuite_t = effectsuite_t_default>
float* iirCoefficients = 0
protected

Denomiator coefficients in delay filter

See also
firCoefficients

◆ iirTemp

template<typename effectsuite_t = effectsuite_t_default>
float* iirTemp = 0
protected

hold temporary values for iir coeffcient buffer

◆ rmsBuffer

template<typename effectsuite_t = effectsuite_t_default>
effectsuite_t* rmsBuffer = new effectsuite_t[rmsWindowSize]
protected

RMS window buffer

◆ rmsBufferIndex

template<typename effectsuite_t = effectsuite_t_default>
int rmsBufferIndex = 0
protected

current write index of rmsBuffer

◆ rmsWindowSize

template<typename effectsuite_t = effectsuite_t_default>
const int rmsWindowSize = 128
protected

window size in samples of rms window

◆ samplingRate

template<typename effectsuite_t = effectsuite_t_default>
int samplingRate = 0
protected

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