ASPiK SDK
FastConvolver Class Reference

The FastConvolver provides a fast convolver - the user supplies the filter IR and the object snapshots the FFT of that filter IR. Input audio is fast-convovled with the filter FFT using complex multiplication and zero-padding. More...

#include <fxobjects.h>

Public Member Functions

void initialize (unsigned int _filterImpulseLength)
 
void setFilterIR (double *irBuffer)
 
double processAudioSample (double input)
 
unsigned int getFrameLength ()
 
unsigned int getFilterIRLength ()
 
void initialize (unsigned int _filterImpulseLength)
 
void setFilterIR (double *irBuffer)
 
double processAudioSample (double input)
 
unsigned int getFrameLength ()
 
unsigned int getFilterIRLength ()
 
void initialize (unsigned int _filterImpulseLength)
 
void setFilterIR (double *irBuffer)
 
double processAudioSample (double input)
 
unsigned int getFrameLength ()
 
unsigned int getFilterIRLength ()
 
void initialize (unsigned int _filterImpulseLength)
 
void setFilterIR (double *irBuffer)
 
double processAudioSample (double input)
 
unsigned int getFrameLength ()
 
unsigned int getFilterIRLength ()
 

Protected Attributes

PhaseVocoder vocoder
 vocoder object
 
FastFFT filterFastFFT
 FastFFT object.
 
fftw_complex * filterFFT = nullptr
 filterFFT output arrays
 
double * filterIR = nullptr
 filter IR
 
unsigned int inputCount = 0
 input sample counter
 
unsigned int filterImpulseLength = 0
 IR length.
 

Detailed Description

The FastConvolver provides a fast convolver - the user supplies the filter IR and the object snapshots the FFT of that filter IR. Input audio is fast-convovled with the filter FFT using complex multiplication and zero-padding.

Audio I/O:

  • processes mono input into mono output.

Control I/F:

  • none.
Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

Member Function Documentation

◆ getFilterIRLength() [1/4]

unsigned int FastConvolver::getFilterIRLength ( )
inline

get current IR length

◆ getFilterIRLength() [2/4]

unsigned int FastConvolver::getFilterIRLength ( )
inline

get current IR length

◆ getFilterIRLength() [3/4]

unsigned int FastConvolver::getFilterIRLength ( )
inline

get current IR length

◆ getFilterIRLength() [4/4]

unsigned int FastConvolver::getFilterIRLength ( )
inline

get current IR length

◆ getFrameLength() [1/4]

unsigned int FastConvolver::getFrameLength ( )
inline

get current frame length

◆ getFrameLength() [2/4]

unsigned int FastConvolver::getFrameLength ( )
inline

get current frame length

◆ getFrameLength() [3/4]

unsigned int FastConvolver::getFrameLength ( )
inline

get current frame length

◆ getFrameLength() [4/4]

unsigned int FastConvolver::getFrameLength ( )
inline

get current frame length

◆ initialize() [1/4]

void FastConvolver::initialize ( unsigned int  _filterImpulseLength)
inline

setup the FFT for a given IR length

Parameters
_filterImpulseLengththe filter IR length, which is 1/2 FFT length due to need for zero-padding (see FX book)

◆ initialize() [2/4]

void FastConvolver::initialize ( unsigned int  _filterImpulseLength)
inline

setup the FFT for a given IR length

Parameters
_filterImpulseLengththe filter IR length, which is 1/2 FFT length due to need for zero-padding (see FX book)

◆ initialize() [3/4]

void FastConvolver::initialize ( unsigned int  _filterImpulseLength)
inline

setup the FFT for a given IR length

Parameters
_filterImpulseLengththe filter IR length, which is 1/2 FFT length due to need for zero-padding (see FX book)

◆ initialize() [4/4]

void FastConvolver::initialize ( unsigned int  _filterImpulseLength)
inline

setup the FFT for a given IR length

Parameters
_filterImpulseLengththe filter IR length, which is 1/2 FFT length due to need for zero-padding (see FX book)

◆ processAudioSample() [1/4]

double FastConvolver::processAudioSample ( double  input)
inline

process an input sample through convolver

◆ processAudioSample() [2/4]

double FastConvolver::processAudioSample ( double  input)
inline

process an input sample through convolver

◆ processAudioSample() [3/4]

double FastConvolver::processAudioSample ( double  input)
inline

process an input sample through convolver

◆ processAudioSample() [4/4]

double FastConvolver::processAudioSample ( double  input)
inline

process an input sample through convolver

◆ setFilterIR() [1/4]

void FastConvolver::setFilterIR ( double *  irBuffer)
inline

setup the filter IRirBuffer MUST be exactly filterImpulseLength in size, or this will crash!

◆ setFilterIR() [2/4]

void FastConvolver::setFilterIR ( double *  irBuffer)
inline

setup the filter IRirBuffer MUST be exactly filterImpulseLength in size, or this will crash!

◆ setFilterIR() [3/4]

void FastConvolver::setFilterIR ( double *  irBuffer)
inline

setup the filter IRirBuffer MUST be exactly filterImpulseLength in size, or this will crash!

◆ setFilterIR() [4/4]

void FastConvolver::setFilterIR ( double *  irBuffer)
inline

setup the filter IRirBuffer MUST be exactly filterImpulseLength in size, or this will crash!


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