arduino-audio-tools
|
EffectsStreamT: the template class describes an input or output stream to which one or multiple effects are applied. The number of channels are used to merge the samples of one frame into one sample before outputting the result as a frame (by repeating the result sample for each channel). Currently only int16_t values are supported, so I recommend to use the AudioEffectStream class which is defined as using AudioEffectStream = AudioEffectStreamT<effect_t>;. More...
#include <AudioEffects.h>
Public Member Functions | |
AudioEffectStreamT (Print &out) | |
AudioEffectStreamT (Stream &io) | |
void | addEffect (AudioEffect &effect) |
Adds an effect object (by reference) | |
void | addEffect (AudioEffect *effect) |
Adds an effect using a pointer. | |
virtual void | addNotifyAudioChange (AudioInfoSupport &bi) |
Adds target to be notified about audio changes. | |
virtual AudioInfo | audioInfo () override |
provides the actual input AudioInfo | |
virtual AudioInfo | audioInfoOut () |
provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream | |
int | available () override |
int | availableForWrite () override |
bool | begin () |
bool | begin (AudioInfo cfg) |
void | clear () |
deletes all defined effects | |
virtual void | clearNotifyAudioChange () |
Deletes all change notify subscriptions. | |
AudioInfo | defaultConfig () |
void | end () override |
AudioEffect * | findEffect (int id) |
Finds an effect by id. | |
virtual void | flush () override |
bool | isNotifyActive () |
Checks if the automatic AudioInfo update is active. | |
virtual | operator bool () |
AudioEffect * | operator[] (int idx) |
gets an effect by index | |
size_t | readBytes (uint8_t *data, size_t len) override |
virtual size_t | readSilence (uint8_t *buffer, size_t length) |
Source to generate silence: just sets the buffer to 0. | |
virtual bool | removeNotifyAudioChange (AudioInfoSupport &bi) |
Removes a target in order not to be notified about audio changes. | |
virtual void | setAudioInfo (AudioInfo newInfo) override |
Defines the input AudioInfo. | |
void | setNotifyActive (bool flag) |
Deactivate/Reactivate automatic AudioInfo updates: (default is active) | |
void | setOutput (Print &print) override |
Defines/Changes the output target. | |
void | setStream (Stream &io) override |
Defines/Changes the input & output. | |
size_t | size () |
Provides the actual number of defined effects. | |
size_t | write (const uint8_t *data, size_t len) override |
virtual size_t | write (uint8_t ch) override |
virtual void | writeSilence (size_t len) |
Writes len bytes of silence (=0). | |
Protected Member Functions | |
virtual int | not_supported (int out, const char *msg="") |
void | notifyAudioChange (AudioInfo info) |
void | refillReadBuffer () |
Protected Attributes | |
int | _timeout = 10 |
bool | active = false |
AudioEffectCommon | effects |
AudioInfo | info |
bool | is_notify_active = true |
Vector< AudioInfoSupport * > | notify_vector |
Stream * | p_io =nullptr |
Print * | p_print =nullptr |
RingBuffer< uint8_t > | tmp_in {0} |
RingBuffer< uint8_t > | tmp_out {0} |
EffectsStreamT: the template class describes an input or output stream to which one or multiple effects are applied. The number of channels are used to merge the samples of one frame into one sample before outputting the result as a frame (by repeating the result sample for each channel). Currently only int16_t values are supported, so I recommend to use the AudioEffectStream class which is defined as using AudioEffectStream = AudioEffectStreamT<effect_t>;.
|
inlineoverridevirtual |
Provides the audio data by reading the assinged Stream and applying the effects on that input
Reimplemented from AudioStream.
|
inlineoverridevirtual |
Writes the samples passed in the buffer and applies the effects before writing the result to the output defined in the constructor.
Reimplemented from AudioStream.