arduino-audio-tools
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
GeneratorFromStream< T > Class Template Reference

An Adapter Class which lets you use any Stream as a Generator. More...

#include <SoundGenerator.h>

Inheritance diagram for GeneratorFromStream< T >:
SoundGenerator< T > VolumeSupport

Public Member Functions

 GeneratorFromStream ()
 
 GeneratorFromStream (Stream &input, int channels=1, float volume=1.0)
 Constructs a new Generator from a Stream object that can be used e.g. as input for AudioEffectss.
 
virtual AudioInfo audioInfo ()
 Provides the AudioInfo.
 
virtual bool begin ()
 Starts the processing.
 
virtual bool begin (AudioInfo info)
 Starts the processing with the provided AudioInfo.
 
virtual AudioInfo defaultConfig ()
 Provides the default configuration.
 
virtual void end ()
 
virtual void end (bool allow_rampdown)
 
virtual bool isActive ()
 Checks if the begin method has been called - after end() isActive is false.
 
virtual size_t readBytes (uint8_t *data, size_t len)
 Provides the data as byte array with the requested number of channels.
 
readSample ()
 Provides a single sample from the stream.
 
virtual size_t readSamples (T *data, size_t len)
 
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.
 
void setChannels (int channels)
 
virtual void setFrequency (float frequency)
 Abstract method: not implemented! Just provides an error message...
 
virtual void setPlayTime (uint32_t playMs, uint8_t upPercent=20, uint8_t downPercent=30)
 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)
 
void setStream (Stream &input)
 (Re-)Assigns a stream to the Adapter class
 
virtual bool setVolume (float volume)
 define the actual volume in the range of 0.0f to 1.0f
 
virtual float volume ()
 provides the actual volume in the range of 0.0f to 1.0f
 

Protected Member Functions

applyRamp (T sample)
 
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 ()
 

Protected Attributes

bool active = false
 
bool activeWarningIssued = false
 
int channels = 1
 
uint32_t currentSample = 0
 
uint32_t downMs = 0
 
uint8_t downPercent = 40
 
uint32_t downSamples = 0
 
float factor = 1.0f
 
AudioInfo info
 
float maxValue
 
Streamp_stream = nullptr
 
uint32_t playMs = 0
 
uint32_t playSamples = 0
 
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
 
float volume_value = 1.0f
 

Detailed Description

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

An Adapter Class which lets you use any Stream as a Generator.

Author
Phil Schatzmann
Template Parameters
T

Constructor & Destructor Documentation

◆ GeneratorFromStream() [1/2]

template<class T = int16_t>
GeneratorFromStream ( )
inline

◆ GeneratorFromStream() [2/2]

template<class T = int16_t>
GeneratorFromStream ( Stream input,
int  channels = 1,
float  volume = 1.0 
)
inline

Constructs a new Generator from a Stream object that can be used e.g. as input for AudioEffectss.

Parameters
inputStream
channelsnumber of channels of the Stream
volumefactor my which the sample value is multiplied - default 1.0; Use it e.g. to reduce the volume (e.g. with 0.5)

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.

◆ begin() [1/2]

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

◆ begin() [2/2]

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

◆ defaultConfig()

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

◆ end() [1/2]

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

◆ 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.

◆ isActive()

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

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

◆ readBytes()

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

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

Reimplemented in GeneratorQueue< 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>
T readSample ( )
inlinevirtual

Provides a single sample from the stream.

Implements SoundGenerator< T >.

◆ readSamples()

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

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

Reimplemented in GeneratorQueue< T >.

◆ recalculatePlayTime()

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

◆ 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

◆ setChannels()

template<class T = int16_t>
void setChannels ( int  channels)
inline

◆ setFrequency()

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

◆ setPlayTime()

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

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

Reimplemented in GeneratorQueue< 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.

◆ setStream()

template<class T = int16_t>
void setStream ( Stream input)
inline

(Re-)Assigns a stream to the Adapter class

◆ setVolume()

virtual bool setVolume ( float  volume)
inlinevirtualinherited

define the actual volume in the range of 0.0f to 1.0f

Reimplemented in Maximilian, I2SCodecStream, VS1053Stream, VolumeStream, A2DPStream, USBAudioDeviceBase, Boost, and AudioPlayer.

◆ volume()

virtual float volume ( )
inlinevirtualinherited

provides the actual volume in the range of 0.0f to 1.0f

Reimplemented in I2SCodecStream, VS1053Stream, USBAudioDeviceBase, VolumeStream, and AudioPlayer.

Member Data Documentation

◆ active

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

◆ activeWarningIssued

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

◆ channels

template<class T = int16_t>
int channels = 1
protected

◆ 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

◆ maxValue

template<class T = int16_t>
float maxValue
protected

◆ p_stream

template<class T = int16_t>
Stream* p_stream = nullptr
protected

◆ playMs

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

◆ playSamples

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

◆ 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

◆ volume_value

float volume_value = 1.0f
protectedinherited

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