SOUND4 IMPACT.CL Library [1.3.1]
Functions
Direct processing

Functions

void impact_ProcessAudio (struct impact_CInstance *instance, const float *input, float *output)
 
void impact_ProcessAudio_Planar (struct impact_CInstance *instance, float const *const *input, float *const *output)
 
float * impact_GetBufferIn (struct impact_CInstance *instance)
 
float * impact_GetBufferOut (struct impact_CInstance *instance)
 
unsigned int impact_GetEstimatedDelay (struct impact_CInstance *instance)
 

Detailed Description

Optimized processing with direct in->out.

Function Documentation

◆ impact_GetBufferIn()

float* impact_GetBufferIn ( struct impact_CInstance *  instance)

Get preallocated aligned buffer for audio input for impact_ProcessAudio()

The buffer is a float[256 * impact_GetAudioInputCount() * impact_GetChannelCount()]

So for this process/version : float[256*1*2]

Note
The calling process can allocate the buffer itself, but it must be aligned.
Parameters
instancethe processing instance
Returns
An audio input dedicated buffer.

◆ impact_GetBufferOut()

float* impact_GetBufferOut ( struct impact_CInstance *  instance)

Get preallocated aligned buffer for audio output for impact_ProcessAudio()

The buffer is a float[256 * impact_GetAudioOutputCount() * impact_GetChannelCount()]

So for this process/version : float[256*1*2]

Note
The calling process can allocate the buffer itself, but it must be aligned.
Parameters
instancethe processing instance
Returns
An audio output dedicated buffer.

◆ impact_GetEstimatedDelay()

unsigned int impact_GetEstimatedDelay ( struct impact_CInstance *  instance)

Get the delay (estimated) of current processing algorithm

Remarks
This is not very accurate, it does not take into account group delays.
Returns
Estimated delay in frames

◆ impact_ProcessAudio()

void impact_ProcessAudio ( struct impact_CInstance *  instance,
const float *  input,
float *  output 
)

Process an audio chunk

A chunk contains impact_GetProcessChunkFrames frames, set at init by frames_per_chunk in impact_InitProcess3

Input has impact_GetAudioInputCount() * impact_GetChannelCount() channels

Ouput has impact_GetAudioOutputCount() * impact_GetChannelCount() channels

Each sample is a native 32-bit floating-point number where 1.0 is full scale. Channels are interlaced, so the buffers are [L0,R0,L1,R1,...,Ln,Rn] (L=Left, R=Right)

In case of multiple audio input/output, buffer is [aL0,aR0,bL0,bR0,...,aLn,aRn,bLn,bRn]

Warning
Buffers must be 64-byte aligned
Note
With 64 frames per chunk and 2 channels and 1 audio input, input buffer size is 64*1*2*4=512 bytes
Parameters
instancethe processing instance
inputaudio input buffer (64 byte aligned) or NULL to use internal buffer impact_GetBufferIn
outputaudio output buffer (64 byte aligned) or NULL to use internal buffer impact_GetBufferOut

◆ impact_ProcessAudio_Planar()

void impact_ProcessAudio_Planar ( struct impact_CInstance *  instance,
float const *const *  input,
float *const *  output 
)

Process an audio chunk of planar audio

A chunk contains impact_GetProcessChunkFrames frames, set at init by frames_per_chunk in impact_InitProcess3

Input has impact_GetAudioInputCount() * impact_GetChannelCount() channels

Ouput has impact_GetAudioOutputCount() * impact_GetChannelCount() channels

Each sample is a native 32-bit floating-point number where 1.0 is full scale. Channels are NOT interlaced, so the buffers are arrays of planar audio : [ [L0,L1,...,Ln] , [R0,R1,...,Rn] ] (L=Left, R=Right)

In case of multiple audio input/output, buffer are [ [aL...], [aR...], [bL...], [bR...], ... ]

Parameters
instancethe processing instance
inputarray of audio input buffers for each input channel (no alignment required)
outputarray of audio output buffers for each input channel (no alignment required)