SOUND4 x1.CLOUD Library [1.5.0]
Functions
Direct processing

Functions

void cloudx1_ProcessAudio (struct cloudx1_CInstance *instance, const float *input, float *output)
 
void cloudx1_ProcessAudio_Planar (struct cloudx1_CInstance *instance, float const *const *input, float *const *output)
 
float * cloudx1_GetBufferIn (struct cloudx1_CInstance *instance)
 
float * cloudx1_GetBufferOut (struct cloudx1_CInstance *instance)
 
unsigned int cloudx1_GetEstimatedDelay (struct cloudx1_CInstance *instance)
 

Detailed Description

Optimized processing with direct in->out.

Function Documentation

◆ cloudx1_GetBufferIn()

float* cloudx1_GetBufferIn ( struct cloudx1_CInstance *  instance)

Get preallocated aligned buffer for audio input for cloudx1_ProcessAudio()

The buffer is a float[256 * cloudx1_GetAudioInputCount() * cloudx1_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.

◆ cloudx1_GetBufferOut()

float* cloudx1_GetBufferOut ( struct cloudx1_CInstance *  instance)

Get preallocated aligned buffer for audio output for cloudx1_ProcessAudio()

The buffer is a float[256 * cloudx1_GetAudioOutputCount() * cloudx1_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.

◆ cloudx1_GetEstimatedDelay()

unsigned int cloudx1_GetEstimatedDelay ( struct cloudx1_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

◆ cloudx1_ProcessAudio()

void cloudx1_ProcessAudio ( struct cloudx1_CInstance *  instance,
const float *  input,
float *  output 
)

Process an audio chunk

A chunk contains cloudx1_GetProcessChunkFrames frames, set at init by frames_per_chunk in cloudx1_InitProcess3

Input has cloudx1_GetAudioInputCount() * cloudx1_GetChannelCount() channels

Ouput has cloudx1_GetAudioOutputCount() * cloudx1_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 cloudx1_GetBufferIn
outputaudio output buffer (64 byte aligned) or NULL to use internal buffer cloudx1_GetBufferOut

◆ cloudx1_ProcessAudio_Planar()

void cloudx1_ProcessAudio_Planar ( struct cloudx1_CInstance *  instance,
float const *const *  input,
float *const *  output 
)

Process an audio chunk of planar audio

A chunk contains cloudx1_GetProcessChunkFrames frames, set at init by frames_per_chunk in cloudx1_InitProcess3

Input has cloudx1_GetAudioInputCount() * cloudx1_GetChannelCount() channels

Ouput has cloudx1_GetAudioOutputCount() * cloudx1_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)