Krotos Modules 3
Loading...
Searching...
No Matches
krotos::ConvolutionReverb Class Reference

Audio processing class that uses multi-threading to convolve an input signal with an impulse response. More...

#include <ConvolutionReverb.h>

Public Member Functions

 ConvolutionReverb ()
 
 ~ConvolutionReverb ()
 
void prepareToPlay (double sampleRate, int samplesPerBlock)
 
void prepareNextBlock (const float *const *buffer, int numSamples, int numChannels)
 
float getNextSample (int sampleIdx, int channelIdx)
 
void processBlock (AudioBuffer< float > &buffer)
 
double getSampleRate () const
 
void setSampleRate (double newSampleRate)
 
void setMix (float mixValue)
 
void setOutputGainDb (float outputGainValueIndB)
 
void setPredelayMs (float predelayMs)
 
const OwnedArray< IRConvolver > & getConvolvers () const
 
void updateConvolvers ()
 
void clearConvolvers ()
 
size_t getConvolverTailBlockSize () const
 
size_t getConvolverHeadBlockSize () const
 
void setImpulseResponseFilePath (const String &impulseResponseFilePath)
 
String getImpulseResponseFilePath () const
 
void reset ()
 

Private Types

enum  Channel { LEFT = 0 , RIGHT }
 

Private Attributes

OwnedArray< IRConvolverm_convolvers
 
String m_impulseResponseFilePath {""}
 
const int m_numOutputChannels {2}
 
double m_sampleRate {0.0}
 
DryWet m_mix {1.0f}
 
float m_outputGain {1.0f}
 
float m_predelay {0.0f}
 
const float m_maxPredelayMs {600.0f}
 
OwnedArray< AudioSampleCircularBufferm_predelayBuffers
 
AudioBuffer< float > m_wetBuffer
 
AudioBuffer< float > m_dryBuffer
 
std::vector< float > m_convolutionBufferLL
 
std::vector< float > m_convolutionBufferLR
 
std::vector< float > m_convolutionBufferRL
 
std::vector< float > m_convolutionBufferRR
 
CriticalSection m_convolverMutex
 
size_t m_convolverHeadBlockSize {0}
 
size_t m_convolverTailBlockSize {0}
 
CriticalSection m_irCalculationMutex
 
std::unique_ptr< Thread > m_irCalculation
 

Detailed Description

Audio processing class that uses multi-threading to convolve an input signal with an impulse response.

Member Enumeration Documentation

◆ Channel

Enumerator
LEFT 
RIGHT 

Constructor & Destructor Documentation

◆ ConvolutionReverb()

krotos::ConvolutionReverb::ConvolutionReverb ( )

◆ ~ConvolutionReverb()

krotos::ConvolutionReverb::~ConvolutionReverb ( )

Member Function Documentation

◆ clearConvolvers()

void krotos::ConvolutionReverb::clearConvolvers ( )

◆ getConvolverHeadBlockSize()

size_t krotos::ConvolutionReverb::getConvolverHeadBlockSize ( ) const

◆ getConvolvers()

const OwnedArray< IRConvolver > & krotos::ConvolutionReverb::getConvolvers ( ) const

◆ getConvolverTailBlockSize()

size_t krotos::ConvolutionReverb::getConvolverTailBlockSize ( ) const

◆ getImpulseResponseFilePath()

String krotos::ConvolutionReverb::getImpulseResponseFilePath ( ) const

◆ getNextSample()

float krotos::ConvolutionReverb::getNextSample ( int sampleIdx,
int channelIdx )

◆ getSampleRate()

double krotos::ConvolutionReverb::getSampleRate ( ) const

◆ prepareNextBlock()

void krotos::ConvolutionReverb::prepareNextBlock ( const float *const * buffer,
int numSamples,
int numChannels )

◆ prepareToPlay()

void krotos::ConvolutionReverb::prepareToPlay ( double sampleRate,
int samplesPerBlock )

◆ processBlock()

void krotos::ConvolutionReverb::processBlock ( AudioBuffer< float > & buffer)

◆ reset()

void krotos::ConvolutionReverb::reset ( )

◆ setImpulseResponseFilePath()

void krotos::ConvolutionReverb::setImpulseResponseFilePath ( const String & impulseResponseFilePath)

◆ setMix()

void krotos::ConvolutionReverb::setMix ( float mixValue)

◆ setOutputGainDb()

void krotos::ConvolutionReverb::setOutputGainDb ( float outputGainValueIndB)

◆ setPredelayMs()

void krotos::ConvolutionReverb::setPredelayMs ( float predelayMs)

◆ setSampleRate()

void krotos::ConvolutionReverb::setSampleRate ( double newSampleRate)

◆ updateConvolvers()

void krotos::ConvolutionReverb::updateConvolvers ( )

Member Data Documentation

◆ m_convolutionBufferLL

std::vector<float> krotos::ConvolutionReverb::m_convolutionBufferLL
private

◆ m_convolutionBufferLR

std::vector<float> krotos::ConvolutionReverb::m_convolutionBufferLR
private

◆ m_convolutionBufferRL

std::vector<float> krotos::ConvolutionReverb::m_convolutionBufferRL
private

◆ m_convolutionBufferRR

std::vector<float> krotos::ConvolutionReverb::m_convolutionBufferRR
private

◆ m_convolverHeadBlockSize

size_t krotos::ConvolutionReverb::m_convolverHeadBlockSize {0}
private

◆ m_convolverMutex

CriticalSection krotos::ConvolutionReverb::m_convolverMutex
mutableprivate

◆ m_convolvers

OwnedArray<IRConvolver> krotos::ConvolutionReverb::m_convolvers
private

◆ m_convolverTailBlockSize

size_t krotos::ConvolutionReverb::m_convolverTailBlockSize {0}
private

◆ m_dryBuffer

AudioBuffer<float> krotos::ConvolutionReverb::m_dryBuffer
private

◆ m_impulseResponseFilePath

String krotos::ConvolutionReverb::m_impulseResponseFilePath {""}
private

◆ m_irCalculation

std::unique_ptr<Thread> krotos::ConvolutionReverb::m_irCalculation
private

◆ m_irCalculationMutex

CriticalSection krotos::ConvolutionReverb::m_irCalculationMutex
mutableprivate

◆ m_maxPredelayMs

const float krotos::ConvolutionReverb::m_maxPredelayMs {600.0f}
private

◆ m_mix

DryWet krotos::ConvolutionReverb::m_mix {1.0f}
private

◆ m_numOutputChannels

const int krotos::ConvolutionReverb::m_numOutputChannels {2}
private

◆ m_outputGain

float krotos::ConvolutionReverb::m_outputGain {1.0f}
private

◆ m_predelay

float krotos::ConvolutionReverb::m_predelay {0.0f}
private

◆ m_predelayBuffers

OwnedArray<AudioSampleCircularBuffer> krotos::ConvolutionReverb::m_predelayBuffers
private

◆ m_sampleRate

double krotos::ConvolutionReverb::m_sampleRate {0.0}
private

◆ m_wetBuffer

AudioBuffer<float> krotos::ConvolutionReverb::m_wetBuffer
private

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