ASPiK SDK
Loading...
Searching...
No Matches
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 ()
 

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()

unsigned int FastConvolver::getFilterIRLength ( )
inline

get current IR length

◆ getFrameLength()

unsigned int FastConvolver::getFrameLength ( )
inline

get current frame length

◆ initialize()

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()

double FastConvolver::processAudioSample ( double  input)
inline

process an input sample through convolver

◆ setFilterIR()

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: