Jamba  3.2.0
pongasoft::VST::AudioBuffers< SampleType > Class Template Reference

#include <AudioBuffer.h>

Classes

struct  AbsoluteMaxOp
 
class  Channel
 

Public Types

typedef AudioBuffers< SampleType > class_type
 

Public Member Functions

SampleType absoluteMax () const
 
bool adjustSilenceFlags ()
 
 AudioBuffers (AudioBusBuffers &buffer, int32 numSamples)
 
tresult clear ()
 
tresult copyFrom (class_type const &fromBuffer)
 
template<typename UnaryOperation >
UnaryOperation copyFrom (class_type const &iFromBuffer, UnaryOperation f)
 
tresult copyTo (class_type &toBuffer) const
 
template<typename UnaryOperation >
UnaryOperation copyTo (class_type &iToBuffer, UnaryOperation f) const
 
template<typename UnaryFunction >
UnaryFunction forEachSample (UnaryFunction f)
 
template<typename UnaryFunction >
UnaryFunction forEachSample (UnaryFunction f) const
 
Channel getAudioChannel (int32 iChannel)
 
const Channel getAudioChannel (int32 iChannel) const
 
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)
 
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

template<typename SampleType >
typedef AudioBuffers<SampleType> pongasoft::VST::AudioBuffers< SampleType >::class_type

Constructor & Destructor Documentation

◆ AudioBuffers()

template<typename SampleType >
pongasoft::VST::AudioBuffers< SampleType >::AudioBuffers ( AudioBusBuffers &  buffer,
int32  numSamples 
)
inline

Member Function Documentation

◆ absoluteMax()

template<typename SampleType >
SampleType pongasoft::VST::AudioBuffers< SampleType >::absoluteMax ( ) const
inline
Returns
the max sample (absolute) across all channels

◆ adjustSilenceFlags()

template<typename SampleType >
bool pongasoft::VST::AudioBuffers< SampleType >::adjustSilenceFlags ( )
inline

Computes and adjust the silence flags

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

◆ clear()

template<typename SampleType >
tresult pongasoft::VST::AudioBuffers< SampleType >::clear ( )
inline

Clears the buffer (and sets the silence flag)

◆ copyFrom() [1/2]

template<typename SampleType >
tresult pongasoft::VST::AudioBuffers< SampleType >::copyFrom ( class_type const &  fromBuffer)
inline

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

◆ copyFrom() [2/2]

template<typename SampleType >
template<typename UnaryOperation >
UnaryOperation pongasoft::VST::AudioBuffers< SampleType >::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]

template<typename SampleType >
tresult pongasoft::VST::AudioBuffers< SampleType >::copyTo ( class_type toBuffer) const
inline

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

◆ copyTo() [2/2]

template<typename SampleType >
template<typename UnaryOperation >
UnaryOperation pongasoft::VST::AudioBuffers< SampleType >::copyTo ( class_type iToBuffer,
UnaryOperation  f 
) const
inline

Same as copyFrom with the roles reversed

◆ forEachSample() [1/2]

template<typename SampleType >
template<typename UnaryFunction >
UnaryFunction pongasoft::VST::AudioBuffers< SampleType >::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]

template<typename SampleType >
template<typename UnaryFunction >
UnaryFunction pongasoft::VST::AudioBuffers< SampleType >::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]

template<typename SampleType >
Channel pongasoft::VST::AudioBuffers< SampleType >::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]

template<typename SampleType >
const Channel pongasoft::VST::AudioBuffers< SampleType >::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]

template<typename SampleType >
SampleType** pongasoft::VST::AudioBuffers< SampleType >::getBuffer ( )
inline

◆ getBuffer() [2/6]

template<typename SampleType >
SampleType const* const* pongasoft::VST::AudioBuffers< SampleType >::getBuffer ( ) const
inline

◆ getBuffer() [3/6]

template<>
Sample32 const *const * pongasoft::VST::AudioBuffers< Sample32 >::getBuffer ( ) const
inline

◆ getBuffer() [4/6]

template<>
Sample64 const *const * pongasoft::VST::AudioBuffers< Sample64 >::getBuffer ( ) const
inline

◆ getBuffer() [5/6]

template<>
Sample32 ** pongasoft::VST::AudioBuffers< Sample32 >::getBuffer ( )
inline

◆ getBuffer() [6/6]

template<>
Sample64 ** pongasoft::VST::AudioBuffers< Sample64 >::getBuffer ( )
inline

◆ getLeftChannel() [1/2]

template<typename SampleType >
Channel pongasoft::VST::AudioBuffers< SampleType >::getLeftChannel ( )
inline
Returns
the left channel (using the fact that the left channel is 0)

◆ getLeftChannel() [2/2]

template<typename SampleType >
const Channel pongasoft::VST::AudioBuffers< SampleType >::getLeftChannel ( ) const
inline
Returns
the left channel (using the fact that the left channel is 0)

◆ getNumChannels()

template<typename SampleType >
int32 pongasoft::VST::AudioBuffers< SampleType >::getNumChannels ( ) const
inline
Returns
number of channels (2 for stereo) of the underlying buffer

◆ getNumSamples()

template<typename SampleType >
int32 pongasoft::VST::AudioBuffers< SampleType >::getNumSamples ( ) const
inline
Returns
number of samples in the buffer

◆ getRightChannel() [1/2]

template<typename SampleType >
Channel pongasoft::VST::AudioBuffers< SampleType >::getRightChannel ( )
inline
Returns
the right channel (using the fact that the left channel is 1)

◆ getRightChannel() [2/2]

template<typename SampleType >
const Channel pongasoft::VST::AudioBuffers< SampleType >::getRightChannel ( ) const
inline
Returns
the right channel (using the fact that the left channel is 1)

◆ getSilenceFlags()

template<typename SampleType >
uint64 pongasoft::VST::AudioBuffers< SampleType >::getSilenceFlags ( ) const
inline

◆ isSilent() [1/2]

template<typename SampleType >
bool pongasoft::VST::AudioBuffers< SampleType >::isSilent ( ) const
inline

◆ isSilent() [2/2]

template<typename SampleType >
bool pongasoft::VST::AudioBuffers< SampleType >::isSilent ( int32  iChannel) const
inline
Returns
true if the channel is silent (according to silenceFlags)

◆ setSilenceFlag()

template<typename SampleType >
void pongasoft::VST::AudioBuffers< SampleType >::setSilenceFlag ( int32  iChannel,
bool  iSilent 
)
inline

Sets a single channel silence flag

◆ setSilenceFlags()

template<typename SampleType >
void pongasoft::VST::AudioBuffers< SampleType >::setSilenceFlags ( uint64  iFlags) const
inline

Member Data Documentation

◆ fBuffer

template<typename SampleType >
AudioBusBuffers& pongasoft::VST::AudioBuffers< SampleType >::fBuffer
private

◆ fNumSamples

template<typename SampleType >
const int32 pongasoft::VST::AudioBuffers< SampleType >::fNumSamples
private

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