UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Audio::FUniformPartitionConvolution Class Reference

#include <UniformPartitionConvolution.h>

+ Inheritance diagram for Audio::FUniformPartitionConvolution:

Public Types

using FSharedFFTRef = TSharedRef< IFFTAlgorithm >
 

Public Member Functions

 FUniformPartitionConvolution (const FUniformPartitionConvolutionSettings &InSettings, FSharedFFTRef InFFTAlgorithm)
 
virtual ~FUniformPartitionConvolution ()
 
virtual int32 GetNumSamplesInBlock () const override
 
virtual int32 GetNumAudioInputs () const override
 
virtual int32 GetNumAudioOutputs () const override
 
virtual void ProcessAudioBlock (const float *const InSamples[], float *const OutSamples[]) override
 
virtual void ResetAudioHistory () override
 
virtual int32 GetMaxNumImpulseResponseSamples () const override
 
virtual int32 GetNumImpulseResponses () const override
 
virtual int32 GetNumImpulseResponseSamples (int32 InImpulseResponseIndex) const override
 
virtual void SetImpulseResponse (int32 InImpulseResponseIndex, const float *InSamples, int32 InNumSamples) override
 
virtual void SetMatrixGain (int32 InAudioInputIndex, int32 InImpulseResponseIndex, int32 InAudioOutputIndex, float InGain) override
 
virtual float GetMatrixGain (int32 InAudioInputIndex, int32 InImpulseResponseIndex, int32 InAudioOutputIndex) const override
 
- Public Member Functions inherited from Audio::IConvolutionAlgorithm
virtual ~IConvolutionAlgorithm ()
 

Detailed Description

FUniformPartitionConvolution

FUniformPartitionConvolution implements a fft based convolution algorithm supporting multiple inputs, impulse responses and outputs. The algorithm subdivides an impulse response into uniform blocks which results in several positive side effects:

1. Latency is set to the block size which in many cases is less than the length of the impulse response.
2. Increased performance over brute time domain convolution.
3. Reuse of fourier transformed data when inputs are mapped to multiple outputs.

The block size and latency is determined by the FFT algorithm passed to the constructor. BlockSize = FFTAlgorithm->Size() / 2 Latency = FFTAlgorithm->Size() / 2

Member Typedef Documentation

◆ FSharedFFTRef

Constructor & Destructor Documentation

◆ FUniformPartitionConvolution()

Audio::FUniformPartitionConvolution::FUniformPartitionConvolution ( const FUniformPartitionConvolutionSettings InSettings,
FSharedFFTRef  InFFTAlgorithm 
)

Create a Uniform Partition Convolution Algorithm

@params InSettings - Settings for algorithm.

Parameters
InFFTAlgorithm- FFTAlgorithm used to transform inputs, outputs and impulse responses.

◆ ~FUniformPartitionConvolution()

Audio::FUniformPartitionConvolution::~FUniformPartitionConvolution ( )
virtual

Destructor.

Member Function Documentation

◆ GetMatrixGain()

float Audio::FUniformPartitionConvolution::GetMatrixGain ( int32  InAudioInputIndex,
int32  InImpulseResponseIndex,
int32  InAudioOutputIndex 
) const
overridevirtual

Gets the gain between an audio input channel, impulse response and audio output channel.

([audio inputs] * [impulse responses]) x [gain matrix] = [audio outputs]

Gets the gain between an audio input, impulse response and audio output.

([audio inputs] * [impulse responses]) x [gain matrix] = [audio outputs]

Implements Audio::IConvolutionAlgorithm.

◆ GetMaxNumImpulseResponseSamples()

int32 Audio::FUniformPartitionConvolution::GetMaxNumImpulseResponseSamples ( ) const
overridevirtual

Maximum supported length of impulse response.

Implements Audio::IConvolutionAlgorithm.

◆ GetNumAudioInputs()

int32 Audio::FUniformPartitionConvolution::GetNumAudioInputs ( ) const
overridevirtual

Returns number of audio inputs.

Implements Audio::IConvolutionAlgorithm.

◆ GetNumAudioOutputs()

int32 Audio::FUniformPartitionConvolution::GetNumAudioOutputs ( ) const
overridevirtual

Returns number of audio outputs.

Implements Audio::IConvolutionAlgorithm.

◆ GetNumImpulseResponses()

int32 Audio::FUniformPartitionConvolution::GetNumImpulseResponses ( ) const
overridevirtual

Return the number of impulse responses.

Implements Audio::IConvolutionAlgorithm.

◆ GetNumImpulseResponseSamples()

int32 Audio::FUniformPartitionConvolution::GetNumImpulseResponseSamples ( int32  InImpulseResponseIndex) const
overridevirtual

Return the number of samples in an impulse response.

Implements Audio::IConvolutionAlgorithm.

◆ GetNumSamplesInBlock()

int32 Audio::FUniformPartitionConvolution::GetNumSamplesInBlock ( ) const
overridevirtual

Returns the number of samples in an audio block.

Implements Audio::IConvolutionAlgorithm.

◆ ProcessAudioBlock()

void Audio::FUniformPartitionConvolution::ProcessAudioBlock ( const float *const  InSamples[],
float *const  OutSamples[] 
)
overridevirtual

Process one block of audio.

InSamples is processed by the impulse responses. The output is placed in OutSamples.

@params InSamples - A 2D array of input deinterleaved audio samples. InSamples[GetNumAudioInputs()][GetNumSamplesInBlock()] @params OutSamples - A 2D array of output deinterleaved audio samples. OutSamples[GetNumAudioOutputs()][GetNumSamplesInBlock()]

Implements Audio::IConvolutionAlgorithm.

◆ ResetAudioHistory()

void Audio::FUniformPartitionConvolution::ResetAudioHistory ( )
overridevirtual

Reset internal history buffer for all audio inputs.

Reset internal history buffers .

Implements Audio::IConvolutionAlgorithm.

◆ SetImpulseResponse()

void Audio::FUniformPartitionConvolution::SetImpulseResponse ( int32  InImpulseResponseIndex,
const float InSamples,
int32  InNumSamples 
)
overridevirtual

Set impulse response values.

Implements Audio::IConvolutionAlgorithm.

◆ SetMatrixGain()

void Audio::FUniformPartitionConvolution::SetMatrixGain ( int32  InAudioInputIndex,
int32  InImpulseResponseIndex,
int32  InAudioOutputIndex,
float  InGain 
)
overridevirtual

Sets the gain between an audio input channel, impulse response and audio output channel.

([audio inputs] * [impulse responses]) x [gain matrix] = [audio outputs]

Sets the gain between an audio input, impulse response and audio output.

([audio inputs] * [impulse responses]) x [gain matrix] = [audio outputs]

Implements Audio::IConvolutionAlgorithm.


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