SOUND4 IMPACT.CL Library [1.3.6]
Loading...
Searching...
No Matches
Functions
Direct processing

Optimized processing with direct in->out. More...

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.
But it is sufficient for file processing adjustements.
Changing the preset and parameters may change the returned value.
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)