arduino-audio-tools
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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< T >

Classes

struct  QNode
 

Public Member Functions

virtual AudioInfo audioInfo ()
 Provides the AudioInfo.
 
virtual size_t available ()
 
virtual size_t availableForWrite ()
 
virtual bool begin ()
 Starts the processing.
 
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 void end (bool allow_rampdown)
 
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 (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

applyRamp (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 = false
 
bool activeWarningIssued = false
 
uint32_t currentSample = 0
 
uint32_t downMs = 0
 
uint8_t downPercent = 40
 
uint32_t downSamples = 0
 
float factor = 1.0f
 
AudioInfo info
 
uint32_t playMs = 0
 
uint32_t playSamples = 0
 
RingBufferSPSC< QNode * > queue
 
float rampDownDec = 0.0
 
float rampUpInc = 0.0
 
RingBuffer< uint8_t > ring_buffer {0}
 
uint32_t upMs = 0
 
uint8_t upPercent = 5
 
uint32_t upSamples = 0
 

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()

template<class T = int16_t>
T applyRamp ( sample)
inlineprotectedinherited

◆ audioInfo()

template<class T = int16_t>
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/3]

template<class T = int16_t>
virtual bool begin ( )
inlinevirtualinherited

◆ begin() [2/3]

template<class T = int16_t>
virtual bool begin ( AudioInfo  info)
inlinevirtualinherited

◆ begin() [3/3]

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()

template<class T = int16_t>
virtual AudioInfo defaultConfig ( )
inlinevirtualinherited

◆ empty()

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

◆ end() [1/2]

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

Reimplemented from SoundGenerator< T >.

◆ end() [2/2]

template<class T = int16_t>
virtual void end ( bool  allow_rampdown)
inlinevirtualinherited

Ends the processing. If either setPlayTime() or setRampTimes() have been set, then allow_rampdown=true will start a ramp-down instead of stopping immediately.

◆ getCurrentGenerator()

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

◆ isActive()

template<class T = int16_t>
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(*)(SoundGenerator< T > *, const void *)  start_cb = nullptr,
void(*)(SoundGenerator< T > *, const void *)  end_cb = 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< T >.

◆ readBytesFrames()

template<class T = int16_t>
size_t readBytesFrames ( uint8_t *  buffer,
size_t  lengthBytes,
int  frames,
int  channels 
)
inlineprotectedinherited

◆ readBytesFromBuffer()

template<class T = int16_t>
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< T >.

◆ readSamples()

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

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

Reimplemented from SoundGenerator< T >.

◆ recalculatePlayTime()

template<class T = int16_t>
void recalculatePlayTime ( )
inlineprotectedinherited

◆ removeCurrentGenerator()

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

◆ restart()

template<class T = int16_t>
virtual void restart ( )
inlinevirtualinherited

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

◆ setAudioInfo()

template<class T = int16_t>
virtual void setAudioInfo ( AudioInfo  info)
inlinevirtualinherited

◆ setFrequency()

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

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

Reimplemented from SoundGenerator< 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< T >.

◆ setRampTimes()

template<class T = int16_t>
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

template<class T = int16_t>
bool active = false
protectedinherited

◆ activeWarningIssued

template<class T = int16_t>
bool activeWarningIssued = false
protectedinherited

◆ currentSample

template<class T = int16_t>
uint32_t currentSample = 0
protectedinherited

◆ downMs

template<class T = int16_t>
uint32_t downMs = 0
protectedinherited

◆ downPercent

template<class T = int16_t>
uint8_t downPercent = 40
protectedinherited

◆ downSamples

template<class T = int16_t>
uint32_t downSamples = 0
protectedinherited

◆ factor

template<class T = int16_t>
float factor = 1.0f
protectedinherited

◆ info

template<class T = int16_t>
AudioInfo info
protectedinherited

◆ playMs

template<class T = int16_t>
uint32_t playMs = 0
protectedinherited

◆ playSamples

template<class T = int16_t>
uint32_t playSamples = 0
protectedinherited

◆ queue

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

◆ rampDownDec

template<class T = int16_t>
float rampDownDec = 0.0
protectedinherited

◆ rampUpInc

template<class T = int16_t>
float rampUpInc = 0.0
protectedinherited

◆ ring_buffer

template<class T = int16_t>
RingBuffer<uint8_t> ring_buffer {0}
protectedinherited

◆ upMs

template<class T = int16_t>
uint32_t upMs = 0
protectedinherited

◆ upPercent

template<class T = int16_t>
uint8_t upPercent = 5
protectedinherited

◆ upSamples

template<class T = int16_t>
uint32_t upSamples = 0
protectedinherited

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