LMMS
Loading...
Searching...
No Matches
lmms::MixHelpers Namespace Reference

Classes

struct  AddOp
struct  AddMultipliedOp
struct  AddSwappedMultipliedOp
struct  AddSanitizedMultipliedOp
struct  AddMultipliedStereoOp
struct  MultiplyAndAddMultipliedOp

Functions

bool isSilent (const SampleFrame *src, int frames)
bool isSilent (std::span< sample_t > buffer)
bool useNaNHandler ()
void setNaNHandler (bool use)
bool sanitize (std::span< sample_t > buffer)
 Sanitizes a buffer of infs/NaNs, zeroing the entire buffer if any is detected.
void add (SampleFrame *dst, const SampleFrame *src, int frames)
 Add samples from src to dst.
void add (PlanarBufferView< sample_t > dst, PlanarBufferView< const sample_t > src)
 Add samples from src to dst.
void addMultiplied (SampleFrame *dst, const SampleFrame *src, float coeffSrc, int frames)
 Add samples from src multiplied by coeffSrc to dst.
void multiply (SampleFrame *dst, float coeff, int frames)
 Multiply samples from dst by coeff.
void addSwappedMultiplied (SampleFrame *dst, const SampleFrame *src, float coeffSrc, int frames)
 Add samples from src multiplied by coeffSrc to dst, swap inputs.
void addMultipliedByBuffer (SampleFrame *dst, const SampleFrame *src, float coeffSrc, ValueBuffer *coeffSrcBuf, int frames)
 Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst.
void addMultipliedByBuffers (SampleFrame *dst, const SampleFrame *src, ValueBuffer *coeffSrcBuf1, ValueBuffer *coeffSrcBuf2, int frames)
 Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst.
void addSanitizedMultipliedByBuffer (SampleFrame *dst, const SampleFrame *src, float coeffSrc, ValueBuffer *coeffSrcBuf, int frames)
 Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst - sanitized version.
void addSanitizedMultipliedByBuffers (SampleFrame *dst, const SampleFrame *src, ValueBuffer *coeffSrcBuf1, ValueBuffer *coeffSrcBuf2, int frames)
 Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst - sanitized version.
void addSanitizedMultiplied (SampleFrame *dst, const SampleFrame *src, float coeffSrc, int frames)
 Same as addMultiplied, but sanitize output (strip out infs/nans).
void addMultipliedStereo (SampleFrame *dst, const SampleFrame *src, float coeffSrcLeft, float coeffSrcRight, int frames)
 Add samples from src multiplied by coeffSrcLeft/coeffSrcRight to dst.
void multiplyAndAddMultiplied (SampleFrame *dst, const SampleFrame *src, float coeffDst, float coeffSrc, int frames)
 Multiply dst by coeffDst and add samples from src multiplied by coeffSrc.
void multiplyAndAddMultipliedJoined (SampleFrame *dst, const sample_t *srcLeft, const sample_t *srcRight, float coeffDst, float coeffSrc, int frames)
 Multiply dst by coeffDst and add samples from srcLeft/srcRight multiplied by coeffSrc.

Function Documentation

◆ add() [1/2]

void lmms::MixHelpers::add ( PlanarBufferView< sample_t > dst,
PlanarBufferView< const sample_t > src )

Add samples from src to dst.

◆ add() [2/2]

void lmms::MixHelpers::add ( SampleFrame * dst,
const SampleFrame * src,
int frames )

Add samples from src to dst.

◆ addMultiplied()

void lmms::MixHelpers::addMultiplied ( SampleFrame * dst,
const SampleFrame * src,
float coeffSrc,
int frames )

Add samples from src multiplied by coeffSrc to dst.

◆ addMultipliedByBuffer()

void lmms::MixHelpers::addMultipliedByBuffer ( SampleFrame * dst,
const SampleFrame * src,
float coeffSrc,
ValueBuffer * coeffSrcBuf,
int frames )

Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst.

◆ addMultipliedByBuffers()

void lmms::MixHelpers::addMultipliedByBuffers ( SampleFrame * dst,
const SampleFrame * src,
ValueBuffer * coeffSrcBuf1,
ValueBuffer * coeffSrcBuf2,
int frames )

Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst.

◆ addMultipliedStereo()

void lmms::MixHelpers::addMultipliedStereo ( SampleFrame * dst,
const SampleFrame * src,
float coeffSrcLeft,
float coeffSrcRight,
int frames )

Add samples from src multiplied by coeffSrcLeft/coeffSrcRight to dst.

◆ addSanitizedMultiplied()

void lmms::MixHelpers::addSanitizedMultiplied ( SampleFrame * dst,
const SampleFrame * src,
float coeffSrc,
int frames )

Same as addMultiplied, but sanitize output (strip out infs/nans).

◆ addSanitizedMultipliedByBuffer()

void lmms::MixHelpers::addSanitizedMultipliedByBuffer ( SampleFrame * dst,
const SampleFrame * src,
float coeffSrc,
ValueBuffer * coeffSrcBuf,
int frames )

Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst - sanitized version.

◆ addSanitizedMultipliedByBuffers()

void lmms::MixHelpers::addSanitizedMultipliedByBuffers ( SampleFrame * dst,
const SampleFrame * src,
ValueBuffer * coeffSrcBuf1,
ValueBuffer * coeffSrcBuf2,
int frames )

Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst - sanitized version.

◆ addSwappedMultiplied()

void lmms::MixHelpers::addSwappedMultiplied ( SampleFrame * dst,
const SampleFrame * src,
float coeffSrc,
int frames )

Add samples from src multiplied by coeffSrc to dst, swap inputs.

◆ isSilent() [1/2]

bool lmms::MixHelpers::isSilent ( const SampleFrame * src,
int frames )

◆ isSilent() [2/2]

bool lmms::MixHelpers::isSilent ( std::span< sample_t > buffer)

◆ multiply()

void lmms::MixHelpers::multiply ( SampleFrame * dst,
float coeff,
int frames )

Multiply samples from dst by coeff.

◆ multiplyAndAddMultiplied()

void lmms::MixHelpers::multiplyAndAddMultiplied ( SampleFrame * dst,
const SampleFrame * src,
float coeffDst,
float coeffSrc,
int frames )

Multiply dst by coeffDst and add samples from src multiplied by coeffSrc.

◆ multiplyAndAddMultipliedJoined()

void lmms::MixHelpers::multiplyAndAddMultipliedJoined ( SampleFrame * dst,
const sample_t * srcLeft,
const sample_t * srcRight,
float coeffDst,
float coeffSrc,
int frames )

Multiply dst by coeffDst and add samples from srcLeft/srcRight multiplied by coeffSrc.

◆ sanitize()

bool lmms::MixHelpers::sanitize ( std::span< sample_t > buffer)

Sanitizes a buffer of infs/NaNs, zeroing the entire buffer if any is detected.

Only performs sanitization when the NaN handler is active.

Returns
true if inf or NaN was detected

◆ setNaNHandler()

void lmms::MixHelpers::setNaNHandler ( bool use)

◆ useNaNHandler()

bool lmms::MixHelpers::useNaNHandler ( )