arduino-audio-tools
Loading...
Searching...
No Matches
GeneratorQueue< T > Class Template Reference

Queues SoundGenerators and plays them sequentially. Queued SoundGenerators must be limited (eg: setPlayTime()) or no later Generator will ever be played. More...

#include <SoundGenerator.h>

Inheritance diagram for GeneratorQueue< T >:
SoundGenerator< int16_t >

Classes

struct  QNode

Public Member Functions

virtual AudioInfo audioInfo ()
 Provides the AudioInfo.
virtual size_t available ()
virtual size_t availableForWrite ()
virtual bool begin (AudioInfo info)
 Starts the processing with the provided AudioInfo.
virtual bool begin (uint16_t queue_size=256)
virtual bool clear ()
virtual AudioInfo defaultConfig ()
 Provides the default configuration.
virtual bool empty ()
virtual void end () override
virtual bool isActive ()
 Checks if the begin method has been called - after end() isActive is false.
virtual SoundGenerator< T > * peek ()
virtual bool pushGenerator (SoundGenerator< T > *gen, void(*start_cb)(SoundGenerator< T > *, const void *)=nullptr, void(*end_cb)(SoundGenerator< T > *, const void *)=nullptr, const void *cb_data=nullptr)
virtual size_t readBytes (uint8_t *buffer, size_t buf_len) override
 Provides the data as byte array with the requested number of channels.
virtual T readSample () override
 Provides a single sample.
virtual size_t readSamples (int16_t *data, size_t len)
virtual size_t readSamples (T *data, size_t len) override
virtual void restart ()
 Restarts the generator, e.g. after a play time has been defined and reached.
virtual void setAudioInfo (AudioInfo info)
 Defines/updates the AudioInfo.
virtual void setFrequency (float f) override
 Abstract method: not implemented! Just provides an error message...
virtual void setPlayTime (uint32_t p, uint8_t u=20, uint8_t d=30) override
 Defines the play time in ms and the ramp up and ramp down time in percent.
virtual void setRampTimes (uint32_t playMs, uint32_t upMs=5, uint32_t downMs=5)
virtual size_t size ()

Protected Member Functions

int16_t applyRamp (int16_t sample)
SoundGenerator< T > * getCurrentGenerator ()
size_t readBytesFrames (uint8_t *buffer, size_t lengthBytes, int frames, int channels)
size_t readBytesFromBuffer (uint8_t *buffer, size_t lengthBytes, int frame_size, int channels)
void recalculatePlayTime ()
bool removeCurrentGenerator ()

Protected Attributes

bool active
bool activeWarningIssued
uint32_t currentSample
uint32_t downMs
uint8_t downPercent
uint32_t downSamples
float factor
AudioInfo info
uint32_t playMs
uint32_t playSamples
RingBufferSPSC< QNode * > queue
float rampDownDec
float rampUpInc
RingBuffer< uint8_t > ring_buffer
uint32_t upMs
uint8_t upPercent
uint32_t upSamples

Detailed Description

template<class T = int16_t>
class audio_tools::GeneratorQueue< T >

Queues SoundGenerators and plays them sequentially. Queued SoundGenerators must be limited (eg: setPlayTime()) or no later Generator will ever be played.

Author
Mark Smith, @SmittyHalibut
Template Parameters
T

Member Function Documentation

◆ applyRamp()

int16_t applyRamp ( int16_t sample)
inlineprotectedinherited

◆ audioInfo()

virtual AudioInfo audioInfo ( )
inlinevirtualinherited

Provides the AudioInfo.

◆ available()

template<class T = int16_t>
virtual size_t available ( )
inlinevirtual

◆ availableForWrite()

template<class T = int16_t>
virtual size_t availableForWrite ( )
inlinevirtual

◆ begin() [1/2]

◆ begin() [2/2]

template<class T = int16_t>
virtual bool begin ( uint16_t queue_size = 256)
inlinevirtual

◆ clear()

template<class T = int16_t>
virtual bool clear ( )
inlinevirtual

◆ defaultConfig()

◆ empty()

template<class T = int16_t>
virtual bool empty ( )
inlinevirtual

◆ end()

template<class T = int16_t>
virtual void end ( )
inlineoverridevirtual

Reimplemented from SoundGenerator< int16_t >.

◆ getCurrentGenerator()

template<class T = int16_t>
SoundGenerator< T > * getCurrentGenerator ( )
inlineprotected

◆ isActive()

virtual bool isActive ( )
inlinevirtualinherited

Checks if the begin method has been called - after end() isActive is false.

◆ peek()

template<class T = int16_t>
virtual SoundGenerator< T > * peek ( )
inlinevirtual

◆ pushGenerator()

template<class T = int16_t>
virtual bool pushGenerator ( SoundGenerator< T > * gen,
void(* start_cb )(SoundGenerator< T > *, const void *) = nullptr,
void(* end_cb )(SoundGenerator< T > *, const void *) = nullptr,
const void * cb_data = nullptr )
inlinevirtual

◆ readBytes()

template<class T = int16_t>
virtual size_t readBytes ( uint8_t * data,
size_t len )
inlineoverridevirtual

Provides the data as byte array with the requested number of channels.

Reimplemented from SoundGenerator< int16_t >.

◆ readBytesFrames()

size_t readBytesFrames ( uint8_t * buffer,
size_t lengthBytes,
int frames,
int channels )
inlineprotectedinherited

◆ readBytesFromBuffer()

size_t readBytesFromBuffer ( uint8_t * buffer,
size_t lengthBytes,
int frame_size,
int channels )
inlineprotectedinherited

◆ readSample()

template<class T = int16_t>
virtual T readSample ( )
inlineoverridevirtual

Provides a single sample.

Implements SoundGenerator< int16_t >.

◆ readSamples() [1/2]

virtual size_t readSamples ( int16_t * data,
size_t len )
inlinevirtualinherited

Provides the data as T array (interleaved by channel) with the requested number of samples (values, not frames)

◆ readSamples() [2/2]

template<class T = int16_t>
virtual size_t readSamples ( T * data,
size_t len )
inlineoverridevirtual

◆ recalculatePlayTime()

void recalculatePlayTime ( )
inlineprotectedinherited

◆ removeCurrentGenerator()

template<class T = int16_t>
bool removeCurrentGenerator ( )
inlineprotected

◆ restart()

virtual void restart ( )
inlinevirtualinherited

Restarts the generator, e.g. after a play time has been defined and reached.

◆ setAudioInfo()

◆ setFrequency()

template<class T = int16_t>
virtual void setFrequency ( float frequency)
inlineoverridevirtual

Abstract method: not implemented! Just provides an error message...

Reimplemented from SoundGenerator< int16_t >.

◆ setPlayTime()

template<class T = int16_t>
virtual void setPlayTime ( uint32_t playMs,
uint8_t upPercent = 20,
uint8_t downPercent = 30 )
inlineoverridevirtual

Defines the play time in ms and the ramp up and ramp down time in percent.

Reimplemented from SoundGenerator< int16_t >.

◆ setRampTimes()

virtual void setRampTimes ( uint32_t playMs,
uint32_t upMs = 5,
uint32_t downMs = 5 )
inlinevirtualinherited

Alternative to setPlayTime. It sets ramp-up and ramp-down times in ms instead of percentages. If playMs == 0, it will play indefinitely. restart();begin(); starts the ramp-up and sustain as normal, but it will sustain forever. end(true) triggers a ramp-down then inactive.

◆ size()

template<class T = int16_t>
virtual size_t size ( )
inlinevirtual

Member Data Documentation

◆ active

bool active
protectedinherited

◆ activeWarningIssued

bool activeWarningIssued
protectedinherited

◆ currentSample

uint32_t currentSample
protectedinherited

◆ downMs

uint32_t downMs
protectedinherited

◆ downPercent

uint8_t downPercent
protectedinherited

◆ downSamples

uint32_t downSamples
protectedinherited

◆ factor

float factor
protectedinherited

◆ info

AudioInfo info
protectedinherited

◆ playMs

uint32_t playMs
protectedinherited

◆ playSamples

uint32_t playSamples
protectedinherited

◆ queue

template<class T = int16_t>
RingBufferSPSC<QNode *> queue
protected

◆ rampDownDec

float rampDownDec
protectedinherited

◆ rampUpInc

float rampUpInc
protectedinherited

◆ ring_buffer

RingBuffer< uint8_t > ring_buffer
protectedinherited

◆ upMs

uint32_t upMs
protectedinherited

◆ upPercent

uint8_t upPercent
protectedinherited

◆ upSamples

uint32_t upSamples
protectedinherited

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