arduino-audio-tools
|
MixerStream is mixing the input from Multiple Input Streams. All streams must have the same audo format (sample rate, channels, bits per sample). More...
#include <AudioStreams.h>
Public Member Functions | |
void | add (Stream &in, int weight=100) |
Adds a new input stream. | |
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 | |
virtual int | available () override |
virtual int | availableForWrite () override |
virtual bool | begin () |
virtual bool | begin (AudioInfo info) |
virtual void | clearNotifyAudioChange () |
Deletes all change notify subscriptions. | |
void | end () override |
Remove all input streams. | |
virtual void | flush () override |
bool | isNotifyActive () |
Checks if the automatic AudioInfo update is active. | |
virtual | operator bool () |
size_t | readBytes (uint8_t *data, size_t len) override |
Provides the data from all streams mixed together. | |
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. | |
void | set (int channel, Stream &in) |
Replaces a stream at the indicated channel. | |
virtual void | setAudioInfo (AudioInfo newInfo) override |
Defines the input AudioInfo. | |
void | setLimitToAvailableData (bool flag) |
Limit the copy to the available data of all streams: stops to provide data when any stream has ended. | |
void | setNotifyActive (bool flag) |
Deactivate/Reactivate automatic AudioInfo updates: (default is active) | |
void | setRetryCount (int retry) |
Defines the maximum number of retrys to get data from an input before we abort the read and provide empty data. | |
void | setWeight (int channel, int weight) |
Dynamically update the new weight for the indicated channel: If you set it to 0 it is muted (and the stream is not read any more). We recommend to use values between 1 and 100. | |
int | size () |
Number of stremams to which are mixed together. | |
virtual 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 | |
int | availableBytes () |
Provides the available bytes from the first stream with data. | |
virtual int | not_supported (int out, const char *msg="") |
void | notifyAudioChange (AudioInfo info) |
int | readBytesVector (T *p_data, int byteCount) |
mixing using a vector of samples | |
void | refillReadBuffer () |
void | resultAdd (float fact) |
void | resultClear () |
Protected Attributes | |
int | _timeout = 10 |
Vector< T > | current_vect |
int | frame_size = 4 |
AudioInfo | info |
bool | is_notify_active = true |
bool | limit_available_data = false |
Vector< AudioInfoSupport * > | notify_vector |
Vector< int > | result_vect |
int | retry_count = 5 |
Vector< Stream * > | streams {0} |
RingBuffer< uint8_t > | tmp_in {0} |
RingBuffer< uint8_t > | tmp_out {0} |
int | total_weights = 0 |
Vector< int > | weights {0} |
MixerStream is mixing the input from Multiple Input Streams. All streams must have the same audo format (sample rate, channels, bits per sample).
|
inlinevirtualinherited |
Adds target to be notified about audio changes.
Reimplemented in CodecNOP, MP3DecoderMAD, EncodedAudioOutput, EncodedAudioStream, AACDecoderFDK, DecoderBasic, MP3DecoderHelix, OggContainerDecoder, Pipeline, and Pipeline::ModifyingStreamAdapter.
provides the actual input AudioInfo
Implements AudioInfoSupport.
Reimplemented in JupyterAudioT< T >, MozziStream, TimerCallbackAudioStream, PureDataStream, AdapterAudioOutputToAudioStream, GeneratedSoundStream< T >, and GeneratedSoundStream< int16_t >.
provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
Reimplemented in PureDataStream, PWMAudioOutput, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, Pipeline, and ResampleStream.
Reimplemented from Stream.
Reimplemented in AudioKitStream, A2DPStream, I2SCodecStream, TfLiteAudioStream, UDPStream, ICYStream, BufferedTaskStream, I2SStream, TimedStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, BufferedStream, ConverterStream< T >, InputMerge< T >, Pipeline::ModifyingStreamAdapter, and VolumeStream.
Reimplemented from Print.
Reimplemented in UDPStream, A2DPStream, I2SCodecStream, AbstractURLStream, I2SStream, MeasuringStream, ProgressStream, and VolumeStream.
Reimplemented in AudioOutputWithCallback, SPDIFOutput, VS1053Stream, WM8960Stream, ESPNowStream, TimerCallbackAudioStream, QueueStream< T >, QueueStream< uint8_t >, DynamicMemoryStream, AnalogAudioArduino, AnalogAudioStream, MemoryStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, FormatConverterStream, and Pipeline.
Remove all input streams.
Reimplemented from BaseStream.
Reimplemented from Print.
Reimplemented in ResampleStream, ICYStreamBuffered, BufferedTaskStream, and BufferedStream.
Reimplemented in A2DPStream, Pipeline, I2SStream, and MemoryStream.
Provides the data from all streams mixed together.
Reimplemented from AudioStream.
Defines the input AudioInfo.
Implements AudioInfoSupport.
Reimplemented in VS1053Stream, WM8960Stream, I2SBitBang, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, VolumeStream, MiniAudioStream, PortAudioStream, I2SCodecStream, MozziStream, SPDIFOutput, AudioLoRa, AnalogAudioStream, I2SStream, MeasuringStream, VolumeMeter, TimerCallbackAudioStream, AudioBLEStream, LoRaStream, AudioKitStream, VBANStream, AnalogAudioArduino, Equilizer3Bands, AdapterAudioOutputToAudioStream, TimedStream, ProgressStream, FormatConverterStream, FadeStream, Pipeline::ModifyingStreamAdapter, PureDataStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, Pipeline, and ResampleStream.
Implements BaseStream.
Reimplemented in I2SCodecStream, MozziStream, SPDIFOutput, I2SStream, A2DPStream, FaustStream< DSP >, TfLiteAudioStream, VS1053Stream, AnalogAudioStream, AudioEffectStreamT< T >, BufferedTaskStream, TimedStream, BufferedStream, MeasuringStream, ProgressStream, VolumeStream, TfLiteAudioStreamBase, and AnalogDriverESP32V1::IO16Bit.
Reimplemented in BufferedTaskStream, and BufferedStream.