Jamba C++ API  4.0.0
AudioBuffers< SampleType > Class Template Reference

Represents all the buffers (example for a stereo channel there is 2 underlying sample buffers) More...

#include <AudioBuffer.h>

Classes

struct  AbsoluteMaxOp
 Unary operator adapter for computing the absolute max. More...
 
class  Channel
 Represents a single channel (for example left audio channel). More...
 

Public Types

typedef AudioBuffers< SampleType > class_type
 

Public Member Functions

SampleType absoluteMax () const
 
bool adjustSilenceFlags ()
 Computes and adjust the silence flags. More...
 
 AudioBuffers (AudioBusBuffers &buffer, int32 numSamples)
 
tresult clear ()
 Clears the buffer (and sets the silence flag) More...
 
tresult copyFrom (class_type const &fromBuffer)
 Copy the content of the provided buffer to THIS buffer (up to num samples) More...
 
template<typename UnaryOperation >
UnaryOperation copyFrom (class_type const &iFromBuffer, UnaryOperation f)
 Copy iFromBuffer to this buffer, applying f to each sample for each channel or in other words, for each channel c and each sample i. More...
 
tresult copyTo (class_type &toBuffer) const
 Copy the content of THIS buffer to the provided buffer (up to num samples) More...
 
template<typename UnaryOperation >
UnaryOperation copyTo (class_type &iToBuffer, UnaryOperation f) const
 Same as copyFrom with the roles reversed. More...
 
template<typename UnaryFunction >
UnaryFunction forEachSample (UnaryFunction f)
 Applies the provided unary function to each sample of each channel. More...
 
template<typename UnaryFunction >
UnaryFunction forEachSample (UnaryFunction f) const
 Applies the provided unary function to each sample of each channel. More...
 
Channel getAudioChannel (int32 iChannel)
 Return the audio channel for the provided channel. More...
 
const Channel getAudioChannel (int32 iChannel) const
 Return the audio channel for the provided channel. More...
 
SampleType ** getBuffer ()
 
SampleType const *const * getBuffer () const
 
template<>
Sample32 const *const * getBuffer () const
 
template<>
Sample64 const *const * getBuffer () const
 
template<>
Sample32 ** getBuffer ()
 
template<>
Sample64 ** getBuffer ()
 
Channel getLeftChannel ()
 
const Channel getLeftChannel () const
 
int32 getNumChannels () const
 
int32 getNumSamples () const
 
Channel getRightChannel ()
 
const Channel getRightChannel () const
 
uint64 getSilenceFlags () const
 
bool isSilent () const
 
bool isSilent (int32 iChannel) const
 
void setSilenceFlag (int32 iChannel, bool iSilent)
 Sets a single channel silence flag. More...
 
void setSilenceFlags (uint64 iFlags) const
 

Private Attributes

AudioBusBuffers & fBuffer
 
const int32 fNumSamples
 

Detailed Description

template<typename SampleType>
class pongasoft::VST::AudioBuffers< SampleType >

Represents all the buffers (example for a stereo channel there is 2 underlying sample buffers)

Template Parameters
SampleType

Member Typedef Documentation

◆ class_type

typedef AudioBuffers<SampleType> class_type

Constructor & Destructor Documentation

◆ AudioBuffers()

AudioBuffers ( AudioBusBuffers &  buffer,
int32  numSamples 
)
inline

Member Function Documentation

◆ absoluteMax()

SampleType absoluteMax ( ) const
inline
Returns
the max sample (absolute) across all channels

◆ adjustSilenceFlags()

bool adjustSilenceFlags ( )
inline

Computes and adjust the silence flags.

Returns
true if the buffer is silent (meaning all channels are silent)

◆ clear()

tresult clear ( )
inline

Clears the buffer (and sets the silence flag)

◆ copyFrom() [1/2]

tresult copyFrom ( class_type const &  fromBuffer)
inline

Copy the content of the provided buffer to THIS buffer (up to num samples)

◆ copyFrom() [2/2]

UnaryOperation copyFrom ( class_type const &  iFromBuffer,
UnaryOperation  f 
)
inline

Copy iFromBuffer to this buffer, applying f to each sample for each channel or in other words, for each channel c and each sample i.

getChannel(c).getBuffer[i] = f(iFromBuffer.getChannel(c).getBuffer[i]);

Example:

AudioBuffers<SampleType> in(data.inputs[0], data.numSamples);
AudioBuffers<SampleType> out(data.outputs[0], data.numSamples);

double gain = 0.5;
out.copyFrom(in, [gain](SampleType iSample) { return iSample * gain; });
Template Parameters
UnaryOperationcan be a lambda, a function object (etc...) but should provide an api similar to std::function<SampleType(SampleType)>
Returns
the function provided

◆ copyTo() [1/2]

tresult copyTo ( class_type toBuffer) const
inline

Copy the content of THIS buffer to the provided buffer (up to num samples)

◆ copyTo() [2/2]

UnaryOperation copyTo ( class_type iToBuffer,
UnaryOperation  f 
) const
inline

Same as copyFrom with the roles reversed.

◆ forEachSample() [1/2]

UnaryFunction forEachSample ( UnaryFunction  f)
inline

Applies the provided unary function to each sample of each channel.

Example:

double gain = 0.5;
out.forEachSample([gain](SampleType &iSample) { iSample *= gain; });
Template Parameters
UnaryFunctioncan be a lambda, a function object (etc...) but should provide an api similar to std::function<void(SampleType)> or std::function<void(SampleType &)>
Returns
the function (similar api as std::for_each)

◆ forEachSample() [2/2]

UnaryFunction forEachSample ( UnaryFunction  f) const
inline

Applies the provided unary function to each sample of each channel.

Because the method is const, the unary function cannot modify the elements.

Example:

auto max = out.forEachSample(AbsoluteMaxOp()).fAbsoluteMax;
Template Parameters
UnaryFunctioncan be a lambda, a function object (etc...) but should provide an api similar to std::function<void(SampleType)> or std::function<void(SampleType const &)>
Returns
the function (similar api as std::for_each)

◆ getAudioChannel() [1/2]

Channel getAudioChannel ( int32  iChannel)
inline

Return the audio channel for the provided channel.

Note that this method never fails and will return an object where Channel::isActive returns false in the event the channel is not active.

Returns
the audio channel provided its channel

◆ getAudioChannel() [2/2]

const Channel getAudioChannel ( int32  iChannel) const
inline

Return the audio channel for the provided channel.

Note that this method never fails and will return an object where Channel::isActive returns false in the event the channel is not active.

Returns
the audio channel provided its channel

◆ getBuffer() [1/6]

SampleType** getBuffer ( )
inline

◆ getBuffer() [2/6]

SampleType const* const* getBuffer ( ) const
inline

◆ getBuffer() [3/6]

Sample32 const *const * getBuffer ( ) const
inline

◆ getBuffer() [4/6]

Sample64 const *const * getBuffer ( ) const
inline

◆ getBuffer() [5/6]

Sample32 ** getBuffer ( )
inline

◆ getBuffer() [6/6]

Sample64 ** getBuffer ( )
inline

◆ getLeftChannel() [1/2]

Channel getLeftChannel ( )
inline
Returns
the left channel (using the fact that the left channel is 0)

◆ getLeftChannel() [2/2]

const Channel getLeftChannel ( ) const
inline
Returns
the left channel (using the fact that the left channel is 0)

◆ getNumChannels()

int32 getNumChannels ( ) const
inline
Returns
number of channels (2 for stereo) of the underlying buffer

◆ getNumSamples()

int32 getNumSamples ( ) const
inline
Returns
number of samples in the buffer

◆ getRightChannel() [1/2]

Channel getRightChannel ( )
inline
Returns
the right channel (using the fact that the left channel is 1)

◆ getRightChannel() [2/2]

const Channel getRightChannel ( ) const
inline
Returns
the right channel (using the fact that the left channel is 1)

◆ getSilenceFlags()

uint64 getSilenceFlags ( ) const
inline

◆ isSilent() [1/2]

bool isSilent ( ) const
inline

◆ isSilent() [2/2]

bool isSilent ( int32  iChannel) const
inline
Returns
true if the channel is silent (according to silenceFlags)

◆ setSilenceFlag()

void setSilenceFlag ( int32  iChannel,
bool  iSilent 
)
inline

Sets a single channel silence flag.

◆ setSilenceFlags()

void setSilenceFlags ( uint64  iFlags) const
inline

Member Data Documentation

◆ fBuffer

AudioBusBuffers& fBuffer
private

◆ fNumSamples

const int32 fNumSamples
private

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