SOUND4 Plugin Host Library [1.0.2]
Functions
Direct processing

Functions

void plughost_ProcessAudio (struct plughost_CInstance *instance, const float *input, float *output)
 
void plughost_ProcessAudio_Planar (struct plughost_CInstance *instance, float const *const *input, float *const *output)
 
float * plughost_GetBufferIn (struct plughost_CInstance *instance)
 
float * plughost_GetBufferOut (struct plughost_CInstance *instance)
 
unsigned int plughost_GetEstimatedDelay (struct plughost_CInstance *instance)
 

Detailed Description

Optimized processing with direct in->out.

Function Documentation

◆ plughost_GetBufferIn()

float* plughost_GetBufferIn ( struct plughost_CInstance *  instance)

Get preallocated aligned buffer for audio input for plughost_ProcessAudio()

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

◆ plughost_GetBufferOut()

float* plughost_GetBufferOut ( struct plughost_CInstance *  instance)

Get preallocated aligned buffer for audio output for plughost_ProcessAudio()

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

◆ plughost_GetEstimatedDelay()

unsigned int plughost_GetEstimatedDelay ( struct plughost_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

◆ plughost_ProcessAudio()

void plughost_ProcessAudio ( struct plughost_CInstance *  instance,
const float *  input,
float *  output 
)

Process an audio chunk

A chunk contains plughost_GetProcessChunkFrames frames, set at init by frames_per_chunk in plughost_InitProcess3

Input has plughost_GetAudioInputCount() * plughost_GetChannelCount() channels

Ouput has plughost_GetAudioOutputCount() * plughost_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 plughost_GetBufferIn
outputaudio output buffer (64 byte aligned) or NULL to use internal buffer plughost_GetBufferOut

◆ plughost_ProcessAudio_Planar()

void plughost_ProcessAudio_Planar ( struct plughost_CInstance *  instance,
float const *const *  input,
float *const *  output 
)

Process an audio chunk of planar audio

A chunk contains plughost_GetProcessChunkFrames frames, set at init by frames_per_chunk in plughost_InitProcess3

Input has plughost_GetAudioInputCount() * plughost_GetChannelCount() channels

Ouput has plughost_GetAudioOutputCount() * plughost_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)