arduino-audio-tools
Classes | Typedefs | Enumerations | Functions | Variables
audio_tools Namespace Reference

Generic Implementation of sound input and output for desktop environments using portaudio. More...

Classes

class  A2DPConfig
 Configuration for A2DPStream. More...
 
class  A2DPStream
 Stream support for A2DP using https://github.com/pschatzmann/ESP32-A2DP: begin(TX_MODE) opens a a2dp_source and begin(RX_MODE) a a2dp_sink. The data is in int16_t with 2 channels at 44100 hertz. We support only one instance of the class! Please note that this is a conveniance class that supports the stream api, however this is rather inefficient, beause quite a bit buffer needs to be allocated. It is recommended to use the API with the callbacks. Examples can be found in the examples-basic-api directory. More...
 
class  AACDecoderFAAD
 AAC Decoder using faad: https://github.com/pschatzmann/arduino-libfaad This needs a stack of around 60000 and you need to make sure that memory is allocated on PSRAM. See https://www.pschatzmann.ch/home/2023/09/12/arduino-audio-tools-faat-aac-decoder/. More...
 
class  AACDecoderFDK
 Audio Decoder which decodes AAC into a PCM stream This is basically just a wrapper using https://github.com/pschatzmann/arduino-fdk-aac which uses AudioInfo and provides the handlig of AudioInfo changes. More...
 
class  AACDecoderHelix
 AAC Decoder using libhelix: https://github.com/pschatzmann/arduino-libhelix This is basically just a simple wrapper to provide AudioInfo and AudioInfoSupport. More...
 
class  AACEncoderFDK
 Encodes PCM data to the AAC format and writes the result to a stream This is basically just a wrapper using https://github.com/pschatzmann/arduino-fdk-aac. More...
 
class  AbstractMetaData
 Common Metadata methods. More...
 
class  AbstractParameter
 Base class for all parameters. More...
 
class  AbstractSynthesizerChannel
 Defines the sound generation for one channel. A channel is used to process an indivudual key so that we can generate multiple notes at the same time. More...
 
class  AbstractURLStream
 Abstract Base class for all URLStream implementations. More...
 
class  AdapterAudioOutputToAudioStream
 Wrapper which converts a AudioStream to a AudioOutput. More...
 
class  AdapterAudioStreamToAudioOutput
 Wrapper which converts a AudioStream to a AudioOutput. More...
 
class  AdapterPrintToAudioOutput
 Wrapper which converts a Print to a AudioOutput. More...
 
class  ADPCMDecoder
 Decoder for ADPCM. Depends on https://github.com/pschatzmann/adpcm. More...
 
class  ADPCMDecoderXQ
 Decoder for ADPCM-XQ. Depends on https://github.com/pschatzmann/arduino-adpcm-xq. More...
 
class  ADPCMEncoder
 Encoder for ADPCM - Depends on https://github.com/pschatzmann/adpcm. More...
 
class  ADPCMEncoderXQ
 Encoder for ADPCM-XQ - Depends on https://github.com/pschatzmann/arduino-adpcm-xq. More...
 
class  ADSR
 Generates ADSR values between 0.0 and 1.0. More...
 
class  ADSRGain
 ADSR Envelope: Attack, Decay, Sustain and Release. Attack is the time taken for initial run-up oeffect_tf level from nil to peak, beginning when the key is pressed. Decay is the time taken for the subsequent run down from the attack level to the designated sustainLevel level. Sustain is the level during the main sequence of the sound's duration, until the key is released. Release is the time taken for the level to decay from the sustainLevel level to zero after the key is released.[4]. More...
 
class  ADTSDecoder
 Audio Data Transport Stream (ADTS) is a format similar to Audio Data Interchange Format (ADIF), used by MPEG TS or Shoutcast to stream audio defined in MPEG-2 Part 7, usually AAC. This parser extracts all valid ADTS frames from the data stream ignoring other data. More...
 
struct  ADTSParser
 
class  Allocator
 Memory allocateator which uses malloc. More...
 
class  AllocatorExt
 Memory allocateator which uses ps_malloc (on the ESP32) and if this fails it resorts to malloc. More...
 
struct  AllocSize
 
class  AnalogAudioStream
 ESP32: A very fast ADC and DAC using the ESP32 I2S interface. For all other architectures we support reading of audio only using analog input with a timer. More...
 
class  AnalogConfigESP32
 ESP32 specific configuration for i2s input via adc. The default input pin is GPIO34. We always use int16_t values. The default output pins are GPIO25 and GPIO26! More...
 
class  AnalogConfigESP32V1
 ESP32 specific configuration for i2s input via adc using the adc_continuous API. More...
 
class  AnalogConfigStd
 Generic ADC and DAC configuration. More...
 
class  AnalogDriverArduino
 Please use the AnalogAudioStream: Reading Analog Data using a timer and the Arduino analogRead() method and writing using analogWrite();. More...
 
class  AnalogDriverBase
 
class  AnalogDriverESP32
 Please use AnalogAudioStream: A very fast ADC and DAC using the ESP32 I2S interface. More...
 
class  AnalogDriverESP32V1
 AnalogAudioStream: A very fast DAC using DMA using the new dac_continuous API. More...
 
class  AnalogDriverMBED
 Please use AnalogAudioStream: A ADC and DAC API for the Arduino Giga. More...
 
struct  AppropriateSumType
 Provides a reduced sampling rate through binning. More...
 
struct  AppropriateSumType< int16_t >
 
struct  AppropriateSumType< int24_t >
 
struct  AppropriateSumType< int32_t >
 
struct  AppropriateSumType< int8_t >
 
class  APTXDecoder
 Decoder for OpenAptx. Depends on https://github.com/pschatzmann/libopenaptx. More...
 
class  APTXEncoder
 Encoder for OpenAptx - Depends on https://github.com/pschatzmann/libopenaptx. More...
 
class  AudioActions
 A simple class to assign functions to gpio pins e.g. to implement a simple navigation control or volume control with buttons. More...
 
class  AudioBoardStream
 New functionality which replaces the AudioKitStream that is based on the legacy AudioKit library. This functionality uses the new arduino-audio-driver library! It is the same as I2SCodecStream extended by some AudioActions and some method calls to determine defined pin values. See https://github.com/pschatzmann/arduino-audio-driver. More...
 
class  AudioClientRTSP
 A simple RTSPClient using https://github.com/pschatzmann/arduino-live555. More...
 
class  AudioCmsisFFT
 AudioFFT for ARM processors that provided Cmsis DSP. More...
 
struct  AudioConfirmDataToReceive
 Protocol Record for Request. More...
 
struct  AudioDataBegin
 Protocal Record To Start. More...
 
struct  AudioDataEnd
 Protocol Record for End. More...
 
class  AudioDecoder
 Docoding of encoded audio into PCM data. More...
 
class  AudioDecoderExt
 
class  AudioEffect
 Abstract Base class for Sound Effects. More...
 
class  AudioEffectCommon
 
class  AudioEffects
 OBSOLETE AudioEffects: the template class describes the input audio to which the effects are applied: e.g. SineWaveGenerator, SquareWaveGenerator, GeneratorFromStream etc. We support only one channel of int16_t data! More...
 
class  AudioEffectStream
 EffectsStream supporting variable bits_per_sample. This class is only available when __cplusplus >= 201703L. Otherwise AudioEffectStream results in using AudioEffectStream = AudioEffectStreamT<effect_t>;. More...
 
class  AudioEffectStreamT
 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...
 
class  AudioEncoder
 Encoding of PCM data. More...
 
class  AudioEncoderExt
 
class  AudioESP32FFT
 AudioFFT using RealFFT. More...
 
class  AudioESP32ULP
 Outputs to ESP32 DAC through the ULP (Ultra> Low Power coprocessor), freeing I2S for other uses. Connect left channel on pin 25 Connect right channel on pin 26. More...
 
class  AudioEspressifFFT
 AudioFFT using FFTReal. The only specific functionality is the access to the dataArray. More...
 
class  AudioFFTBase
 Executes FFT using audio data. The Driver which is passed in the constructor selects a specifc FFT implementation. More...
 
struct  AudioFFTConfig
 Configuration for AudioFFT. If there are more then 1 channel the channel_used is defining which channel is used to perform the fft on. More...
 
struct  AudioFFTResult
 Result of the FFT. More...
 
struct  AudioHeader
 Common Header for all records. More...
 
struct  AudioInfo
 Basic Audio information which drives e.g. I2S. More...
 
struct  AudioInfoLAME
 LAME parameters. More...
 
class  AudioInfoSource
 Supports the subscription to audio change notifications. More...
 
class  AudioInfoSupport
 Supports changes to the sampling rate, bits and channels. More...
 
class  AudioKissFFT
 AudioFFT using FFTReal. The only specific functionality is the access to the dataArray. More...
 
class  AudioKitStream
 AudioKit Stream which uses the https://github.com/pschatzmann/arduino-audiokit library. More...
 
class  AudioKitStreamConfig
 Configuration for AudioKitStream: we use as subclass of I2SConfig. More...
 
class  AudioMP34DT05
 MP34DT05 Microphone of Nano BLE Sense. We provide a proper Stream implementation. See https://github.com/arduino/ArduinoCore-nRF528x-mbedos. More...
 
struct  AudioMP34DT05Config
 Config for MP34DT05 Microphone. Supported sample rates 16000, 41667, Supported bits_per_sample only 16. More...
 
class  AudioOutput
 Abstract Audio Ouptut class. More...
 
class  AudioOutputAdapter
 Base class for Output Adpapters. More...
 
class  AudioOutputWithCallback
 ESP8266Audio AudioOutput class which stores the data in a temporary buffer. The buffer can be consumed e.g. by a callback function by calling read(); Dependencies: ESP8266Audio Library Dependencies: ESP32-A2DP Library. More...
 
class  AudioPlayer
 Implements a simple audio player which supports the following commands: More...
 
class  AudioRealFFT
 AudioFFT using RealFFT. More...
 
struct  AudioSendData
 Protocol Record for Data. More...
 
class  AudioServerEx
 A powerfull Web server which is based on https://github.com/pschatzmann/TinyHttp. It supports multiple concurrent clients. You can e.g. use it to write mp3 data and make it available in multiple clients. More...
 
struct  AudioServerExConfig
 Config information for AudioServerEx. More...
 
class  AudioSource
 Abstract Audio Data Source for the AudioPlayer which is used by the Audio Players. More...
 
class  AudioSourceCallback
 Callback Audio Data Source which is used by the Audio Players. More...
 
class  AudioSourceDynamicURL
 Audio Source which provides the data via the network from an URL. The URLs are stored in an Vector of dynamically allocated strings. More...
 
class  AudioSourceIdxSD
 ESP32 AudioSource for AudioPlayer using an SD card as data source. This class is based on the Arduino SD implementation Connect the SD card to the following pins: More...
 
class  AudioSourceIdxSDFAT
 ESP32 AudioSource for AudioPlayer using an SD card as data source. This class is based on the Arduino SD implementation For UTF8 Support change SdFatConfig.h #define USE_UTF8_LONG_NAMES 1. More...
 
class  AudioSourceIdxSDMMC
 ESP32 AudioSource for AudioPlayer using an SD card as data source. This class is based on the Arduino SD_MMC implementation Connect the SD card to the following pins: More...
 
class  AudioSourceLittleFS
 ESP32 AudioSource for AudioPlayer using an the LittleFS file system. More...
 
class  AudioSourceSD
 ESP32 AudioSource for AudioPlayer using an SD card as data source. This class is based on the Arduino SD implementation Connect the SD card to the following pins: More...
 
class  AudioSourceSDFAT
 ESP32 AudioSource for AudioPlayer using an SD card as data source. This class is based on the Arduino SD implementation Connect the SD card. For UTF8 Support change SdFatConfig.h #define USE_UTF8_LONG_NAMES 1. More...
 
class  AudioSourceSDMMC
 ESP32 AudioSource for AudioPlayer using an SD card as data source. This class is based on the Arduino SD_MMC implementation Connect the SD card to the following pins: More...
 
class  AudioSourceSPIFFS
 ESP32 AudioSource for AudioPlayer using an the SPIFFS file system. More...
 
class  AudioSourceSTD
 AudioSource using the standard C++ api. More...
 
class  AudioSourceURL
 Audio Source which provides the data via the network from an URL. More...
 
class  AudioStream
 Base class for all Audio Streams. It support the boolean operator to test if the object is ready with data. More...
 
class  AudioStreamWrapper
 To be used to support implementations where the readBytes is not virtual. More...
 
class  AudioSyncReader
 Receving Audio Data over the wire and requesting for more data when done to synchronize the processing with the sender. The audio data is processed by the EncodedAudioStream; If you have multiple readers, only one receiver should be used as confirmer! More...
 
class  AudioSyncWriter
 Audio Writer which is synchronizing the amount of data that can be processed with the AudioReceiver. More...
 
class  AudioTime
 Tools for calculating timer values. More...
 
class  AudioWAVServerEx
 A powerfull WAV Web server which is based on https://github.com/pschatzmann/TinyHttp. It supports multiple concurrent clients. More...
 
class  AudioWriter
 E.g. used by Encoders and Decoders. More...
 
class  AudioWriterToAudioOutput
 Adapter class which lets an AudioWriter behave like a Print. More...
 
class  AVIDecoder
 AVI Container Decoder which can be fed with small chunks of data. The minimum length must be bigger then the header size! The file structure is documented at https://learn.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference. More...
 
struct  AVIMainHeader
 
struct  AVIStreamHeader
 
class  BandPassFilter
 Biquad DF2 Band Pass Filter. When dealing with high-order IIR filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
class  BaseBuffer
 Shared functionality of all buffers. More...
 
class  BaseConverter
 Abstract Base class for Converters A converter is processing the data in the indicated array. More...
 
class  Bin
 Provides reduced sampling rates through binning. More...
 
class  BinaryContainerDecoder
 Decodes the provided data from the DAT and CFG segments. More...
 
class  BinaryContainerEncoder
 Wraps the encoded data into Config, Data, and Meta segments so that we can recover the audio configuration and orignial segments if this is relevant. We assume that a full segment is written with each call of write(); The segments are separated with a new line character. More...
 
class  BinT
 
class  BiQuadDF1
 Biquad DF1 Filter. converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
class  BiQuadDF2
 Biquad DF2 Filter. When dealing with high-order IIR filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
struct  BitmapInfoHeader
 
class  Blackman
 Blackman FFT Window function. More...
 
class  BlackmanHarris
 BlackmanHarris FFT Window function. More...
 
class  BlackmanNuttall
 BlackmanNuttall FFT Window function. More...
 
class  Boost
 Boost AudioEffect. More...
 
class  BufferedArray
 Class which is usfull ot provide incremental data access e.g. for EdgeImpulse which request data with an offset and length starting from 0 up to the buffer length, restarting at 0 again. More...
 
class  BufferedStream
 The Arduino Stream supports operations on single characters. This is usually not the best way to push audio information, but we will support it anyway - by using a buffer. On reads: if the buffer is empty it gets refilled. More...
 
class  BufferedTaskStream
 A FreeRTOS task is filling the buffer from the indicated stream. Only to be used on the ESP32. More...
 
class  BufferedWindow
 Buffered window function, so that we do not need to re-calculate the values. More...
 
class  BufferRTOS
 Buffer implementation which is using a FreeRTOS StreamBuffer. The default allocator uses psram is available. More...
 
class  CachedVolumeControl
 In order to optimize the processing time we cache the last input & factor and recalculate the new factor only if the input has changed. More...
 
class  CallbackConverterT
 You can provide a lambda expression to conver the data. More...
 
class  CallbackStream
 CallbackStream: A Stream that allows to register callback methods for accessing and providing data. The callbacks can be lambda expressions. More...
 
class  CallbackVolumeControl
 Provide the volume function as callback method: This is easy to use e.g together with a lamda function! More...
 
class  CatStream
 Provides data from a concatenation of Streams. Please note that the provided Streams can be played only once! You will need to reset them (e.g. moving the file pointer to the beginning) and readd them back if you want to process them a second time. The default timeout on the available() method is set to 0. This might be not good if you use e.g. a URLStream. More...
 
class  ChannelConverter
 Increasing or decreasing the number of channels. More...
 
class  ChannelEnhancer
 Increases the channel count. More...
 
class  ChannelFormatConverterStream
 Channel converter which does not use a template. More...
 
class  ChannelFormatConverterStreamT
 Converter for reducing or increasing the number of Channels. More...
 
class  ChannelReducer
 We combine a datastream which consists of multiple channels into less channels. E.g. 2 to 1 The last target channel will contain the combined values of the exceeding source channels. More...
 
class  ChannelReducerT
 We combine a datastream which consists of multiple channels into less channels. E.g. 2 to 1 The last target channel will contain the combined values of the exceeding source channels. More...
 
class  ChannelSplitOutput
 Simple functionality to extract mono streams from a multichannel (e.g. stereo) signal. More...
 
class  ChannelsSelectOutput
 Flexible functionality to extract one or more channels from a multichannel signal. Warning: the destinatios added with addOutput are not automatically notified about audio changes. More...
 
class  ChartT
 Displays audio in a Jupyter as chart Just wrapps a stream to provide the chart data. More...
 
class  Client
 
class  Codec2Decoder
 Decoder for Codec2. Depends on https://github.com/pschatzmann/arduino-libcodec2. More...
 
class  Codec2Encoder
 Encoder for Codec2 - Depends on https://github.com/pschatzmann/arduino-libcodec2. More...
 
class  CodecNOP
 Dummy no implmentation Codec. This is used so that we can initialize some pointers to decoders and encoders to make sure that they do not point to null. More...
 
struct  CommonHeader
 
class  Compressor
 Compressor inspired by https://github.com/YetAnotherElectronicsChannel/STM32_DSP_COMPRESSOR/blob/master/code/Src/main.c. More...
 
struct  ConfigEquilizer3Bands
 Configuration for 3 Band Equilizer: Set channels,bits_per_sample,sample_rate. Set and update gain_low, gain_medium and gain_high to value between 0 and 1.0. More...
 
class  ContainerDecoder
 Parent class for all container formats. More...
 
class  ContainerMP4
 Minimum flexible parser for MPEG4 data (which is based on the Quicktime format). Small atoms will be make available via a callback method. The big (audio) content is written to the Print object which was specified in the constructor. Depends on https://github.com/pschatzmann/arduino-libhelix! More...
 
class  ContainerTarget
 ContainerTarget: forwards requests to both the output and the encoder/decoder and sets up the output chain for Containers. We also manage the proper sequence of the output classes. More...
 
class  ContainerTargetPrint
 
class  Converter1Channel
 Converter for 1 Channel which applies the indicated Filter. More...
 
class  ConverterAutoCenter
 Makes sure that the avg of the signal is set to 0. More...
 
class  ConverterAutoCenterT
 Makes sure that the avg of the signal is set to 0. More...
 
class  ConverterFillLeftAndRight
 Make sure that both channels contain any data. More...
 
class  ConverterNChannels
 Converter for n Channels which applies the indicated Filter. More...
 
class  ConverterScaler
 Multiplies the values with the indicated factor adds the offset and clips at maxValue. To mute use a factor of 0.0! More...
 
class  ConverterStream
 Both the data of the read or write operations will be converted with the help of the indicated converter. More...
 
class  ConverterSwitchLeftAndRight
 Switches the left and right channel. More...
 
class  ConverterToInternalDACFormat
 special case for internal DAC output, the incomming PCM buffer needs to be converted from signed 16bit to unsigned More...
 
class  CopyChannels
 Copy channel Cx value of type T shifted by S bits to all Cn channels. More...
 
class  CopyDecoder
 Dummy Decoder which just copies the provided data to the output. More...
 
class  CopyEncoder
 Dummy Encoder which just copies the provided data to the output. More...
 
class  CsvOutput
 Stream Wrapper which can be used to print the values as readable ASCII to the screen to be analyzed in the Serial Plotter The frames are separated by a new line. The channels in one frame are separated by a ,. More...
 
class  Debouncer
 Helper class to debounce user input from a push button. More...
 
class  Decimate
 Provides a reduced sampling rate by ignoring a defined rate of samples. More...
 
class  DecimateT
 Provides reduced sampling rates. More...
 
class  DecoderAdapter
 Adapter class which allows the AudioDecoder API on a StreamingDecoder. More...
 
class  DecoderBase64
 DecoderBase64 - Converts a Base64 encoded Stream into the original data stream. Decoding only gives a valid result if we start at a limit of 4 bytes. We therefore use by default a newline to determine a valid start boundary. More...
 
class  DecoderBasic
 DecoderBasic - supports mime type audio/basic Requires https://github.com/pschatzmann/arduino-libg7xx The content of the "audio/basic" subtype is single channel audio encoded using 8bit ISDN mu-law [PCM] at a sample rate of 8000 Hz. More...
 
class  DecoderFloat
 DecoderFloat - Converts Stream of floats into 2 byte integers. More...
 
class  DecoderHelix
 MP3 and AAC Decoder using libhelix: https://github.com/pschatzmann/arduino-libhelix. We dynamically create a MP3 or AAC decoder dependent on the provided audio format. More...
 
class  DecoderL16
 DecoderL16 - Converts an 16 Bit Stream into 16Bits network byte order. More...
 
class  DecoderL8
 DecoderL8 - Converts an 8 Bit Stream into 16Bits Most microcontrollers can not output 8 bit data directly. 8 bit data however is very memory efficient and helps if you need to store audio on constrained resources. This decoder translates 8bit data into 16bit data. By default the encoded data is represented as uint8_t, so the values are from 0 to 255. More...
 
class  DefaultSynthesizerChannel
 Default implementation for a Channel. You can provide the Sound Generator as parameter to the effects: e.g. DefaultSynthesizerChannel<AudioEffects<SineWaveGenerator<int16_t>>> *channel = new DefaultSynthesizerChannel<AudioEffects<SineWaveGenerator<int16_t>>>();. More...
 
class  Delay
 Delay/Echo AudioEffect. See https://wiki.analog.com/resources/tools-software/sharc-audio-module/baremetal/delay-effect-tutorial Howver the dry value and wet value were replace by the depth parameter. More...
 
class  DelayEffectBase
 A Base class for delay based digital effects. Provides the basic methods that are shared amongst Flanger, Delay, Chorus and Phaser. More...
 
class  Distortion
 Distortion AudioEffect. More...
 
class  DriverPWMBase
 Base Class for all PWM drivers. More...
 
class  DynamicMemoryStream
 MemoryStream which is written and read using the internal RAM. For each write the data is allocated on the heap. More...
 
class  EffectSuiteBase
 Base Class for Effects. More...
 
class  EncodedAudioOutput
 A more natural Print class to process encoded data (aac, wav, mp3...). Just define the output and the decoder and write the encoded data. More...
 
class  EncodedAudioStream
 A more natural Stream class to process encoded data (aac, wav, mp3...) which also supports the decoding by calling readBytes(). More...
 
class  EncoderBase64
 EncoderBase64s - Encodes the input data into a Base64 string. By default each audio frame is followed by a new line, so that we can easily resynchronize the reading of a data stream. The generation of the new line can be configured with the setNewLine() method. More...
 
class  EncoderBasic
 EncoderBasic - supports mime type audio/basic. The content of the "audio/basic" subtype is single channel audio encoded using 8bit ISDN mu-law [PCM] at a sample rate of 8000 Hz. Requires https://github.com/pschatzmann/arduino-libg7xx. More...
 
class  EncoderFloat
 EncoderFloats - Encodes 16 bit PCM data stream to floats data. More...
 
class  EncoderL16
 EncoderL16s - Condenses 16 bit PCM data stream to 8 bits data. Most microcontrollers can not process 8 bit audio data directly. 8 bit data however is very memory efficient and helps if you need to store audio on constrained resources. This encoder translates 16bit data into 8bit data. More...
 
class  EncoderL8
 EncoderL8s - Condenses 16 bit PCM data stream to 8 bits data. Most microcontrollers can not process 8 bit audio data directly. 8 bit data however is very memory efficient and helps if you need to store audio on constrained resources. This encoder translates 16bit data into 8bit data. By default the encoded data is represented as uint8_t, so the values are from 0 to 255. More...
 
class  EnvelopeFilter
 EnvelopeFilter. More...
 
class  Equilizer3Bands
 3 Band Equilizer inspired from https://www.musicdsp.org/en/latest/Filters/236-3-band-equaliser.html More...
 
class  ESP3288AudioOutput
 Stream Adapter for ESP8288-Audio AudioOutput. More...
 
class  ESPNowStream
 ESPNow as Arduino Stream. More...
 
struct  ESPNowStreamConfig
 Configuration for ESP-NOW protocolö.W. More...
 
class  ExponentialVolumeControl
 Simple exponentional volume control using the formula pow(2.0, input) - 1.0;. More...
 
class  Fade
 Fade In and Fade out in order to prevent popping sound when the audio is started or stopped. The fade in/out is performed over the length of the buffer. More...
 
class  FadeConverter
 converter which does a fade out or fade in. More...
 
class  FadeStream
 Stream which can be used to manage fade in and fade out. Before you read or write data you need to call setAudioInfo() to provide the bits_per_sample and channels. More...
 
class  FastSineGenerator
 Sine wave which is based on a fast approximation function. More...
 
class  FaustStream
 Integration into Faust DSP see https://faust.grame.fr/ To generate code from faust, select src and cpp. More...
 
class  FFTDisplay
 
class  FFTDriver
 Abstract Class which defines the basic FFT functionality. More...
 
class  FFTDriverCmsisFFT
 Driver for Cmsis-FFT see https://arm-software.github.io/CMSIS_5/DSP. More...
 
class  FFTDriverESP32FFT
 Driver for ESP32-FFT https://github.com/pschatzmann/esp32-fft
More...
 
class  FFTDriverEspressifFFT
 fft Driver for espressif dsp library: https://espressif-docs.readthedocs-hosted.com/projects/esp-dsp/en/latest/esp-dsp-apis.html More...
 
class  FFTDriverKissFFT
 Driver for RealFFT. More...
 
class  FFTDriverRealFFT
 Driver for RealFFT. More...
 
class  File
 Arduino File support using std::fstream. More...
 
class  FileLoop
 A simple class which implements a automatic looping file. The file needs to be of the class File from FS.h. The number of loops can be defined by calling setLoopCount(). You can also optinally limit the total looping file size by calling setSize();. More...
 
class  FileLoopT
 A simple class which implements a automatic looping file. In order to support different file implementation the file class is a template parameter. The number of loops can be defined by calling setLoopCount(). You can also optinally limit the total looping file size by calling setSize();. More...
 
class  FileOutput
 Simple layer for Print object to write to a c++ file. More...
 
class  Filter
 Abstract filter interface definition;. More...
 
class  FilterChain
 FilterChain - A Cascade of multiple filters. More...
 
class  FilteredDelay
 Delay effect that filters the repeat delay. More...
 
class  FilteredStream
 Stream to which we can apply Filters for each channel. The filter might change the result size! More...
 
class  FilterEffectBase
 A Base class for filter based effects including methods for simple high, low and band pass filtering. More...
 
class  FIR
 FIR Filter Converted from https://github.com/sebnil/FIR-filter-Arduino-Library/tree/master/src You can use https://www.arc.id.au/FilterDesign.html to design the filter. More...
 
class  FLACDecoder
 Decoder for FLAC. Depends on https://github.com/pschatzmann/arduino-libflac. We support an efficient streaming API and an very memory intensitiv standard interface. So you should prefer the streaming interface where you call setOutput() before the begin and copy() in the loop. Validated with http://www.2l.no/hires/. More...
 
class  FLACEncoder
 FLACEncoder. More...
 
class  FlatTop
 FlatTop FFT Window function. More...
 
class  float16
 Stores float values with 2 bytes. More...
 
class  float32
 Stores float values as uint32_t so that we can use memory allocated with MALLOC_CAP_32BIT. More...
 
class  FormatConverterStream
 Converter which converts bits_per_sample, channels and the sample_rate. The conversion is supported both on the input and output side. More...
 
class  FS
 Eumlate FS using C++ or Posix functions. More...
 
class  Fuzz
 Fuzz AudioEffect. More...
 
class  G711_ALAWDecoder
 64 kbit/s g711 ALOW Decoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G711_ALAWEncoder
 64 kbit/s g711 ALOW Encoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G711_ULAWDecoder
 64 kbit/s g711 ULOW Decoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G711_ULAWEncoder
 64 kbit/s g711 ULOW Encoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G711Decoder
 64 kbit/s g711 ULOW Decoder based on https://github.com/pschatzmann/arduino-libg7xx Supported decoder parameters: alaw2linear, ulaw2linear More...
 
class  G711Encoder
 64 kbit/s g711 ULOW Encoder based on https://github.com/pschatzmann/arduino-libg7xx Supported encoder parameters: linear2alaw2, linear2ulaw More...
 
class  G721Decoder
 32Kbps G721 Decoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G721Encoder
 32Kbps G721 Encoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G722Decoder
 Decoder for G.722. Depends on https://github.com/pschatzmann/arduino-libg722. More...
 
class  G722Encoder
 Encoder for G.722 - Depends on https://github.com/pschatzmann/arduino-libg722. Inspired by g722enc.c. More...
 
class  G723_24Decoder
 24Kbps G723 Decoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G723_24Encoder
 24Kbps G723 Encoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G723_40Decoder
 40Kbps G723 Decoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G723_40Encoder
 40Kbps G723 Encoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G7xxDecoder
 g723_24, g721, g723_40 Decoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  G7xxEncoder
 g723_24, g721, g723_40 Encoder based on https://github.com/pschatzmann/arduino-libg7xx More...
 
class  GeneratedSoundStream
 Source for reading generated tones. Please note. More...
 
class  GeneratorFixedValue
 Just returns a constant value. More...
 
class  GeneratorFromArray
 We generate the samples from an array which is provided in the constructor. More...
 
class  GeneratorFromStream
 An Adapter Class which lets you use any Stream as a Generator. More...
 
class  GeneratorMixer
 Generator which combines (mixes) multiple sound generators into one output. More...
 
class  GSMDecoder
 Decoder for GSM. Depends on https://github.com/pschatzmann/arduino-libgsm. Inspired by gsmdec.c. More...
 
class  GSMEncoder
 Encoder for GSM - Depends on https://github.com/pschatzmann/arduino-libgsm. Inspired by gsmenc.c. More...
 
class  Hamming
 Hamming FFT Window function. More...
 
class  HammingFEC
 Hamming forware error correction. Inspired by https://github.com/nasserkessas/hamming-codes. More...
 
class  Hann
 Hann FFT Window function. More...
 
class  HardwareSerial
 
class  HexDumpOutput
 Creates a Hex Dump. More...
 
class  HighPassFilter
 Biquad DF2 High Pass Filter. When dealing with high-order IIR filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
class  HighShelfFilter
 Biquad DF2 High Shelf Filter. When dealing with high-order IIR filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
class  HLSParser
 Simple Parser for HLS data. We select the entry with min bandwidth. More...
 
class  HLSStream
 HTTP Live Streaming using HLS: The result is a MPEG-TS data stream that must be decoded e.g. with a DecoderMTS. More...
 
class  HttpChunkReader
 Http might reply with chunks. So we need to dechunk the data. see https://en.wikipedia.org/wiki/Chunked_transfer_encoding. More...
 
class  HttpHeader
 In a http request and reply we need to process header information. With this API we can define and query the header information. The individual header lines are stored in a vector. This is the common functionality for the HttpRequest and HttpReplyHeader subclasses. More...
 
struct  HttpHeaderLine
 A individual key - value header line. More...
 
class  HttpLineReader
 We read a single line. A terminating 0 is added to the string to make it compliant for c string functions. More...
 
class  HttpReplyHeader
 Reading and Writing of Http Replys. More...
 
class  HttpRequest
 Simple API to process get, put, post, del http requests I tried to use Arduino HttpClient, but I did not manage to extract the mime type from streaming get requests. More...
 
class  HttpRequestHeader
 Reading and writing of Http Requests. More...
 
struct  I2SCodecConfig
 Configuration for I2SCodecStream. More...
 
class  I2SCodecStream
 I2S Stream which also sets up a codec chip and i2s. More...
 
class  I2SConfigESP32
 Configuration for ESP32 legacy i2s. More...
 
class  I2SConfigESP32V1
 Configuration for ESP32 i2s for IDF > 5.0. More...
 
class  I2SConfigStd
 Configuration for i2s. More...
 
class  I2SDriverESP32
 Basic I2S API - for the ESP32. If we receive 1 channel, we expand the result to 2 channels. More...
 
class  I2SDriverESP32V1
 Basic I2S API for the ESP32 (using the new API). https://docs.espressif.com/projects/esp-idf/en/v5.0.1/esp32/api-reference/peripherals/i2s.html#i2s-communication-mode. More...
 
class  I2SDriverESP8266
 Basic I2S API - for the ESP8266 Only 16 bits are supported ! More...
 
class  I2SDriverNanoBLE
 Basic I2S API - for the Arduino Nano BLE Sense See https://content.arduino.cc/assets/Nano_BLE_MCU-nRF52840_PS_v1.1.pdf Douplex mode (RXTX_MODE) is currently not supported, but it should be quite easy to implement. More...
 
class  I2SDriverSAMD
 Basic I2S API - for the SAMD. More...
 
class  I2SDriverSTM32
 Basic I2S API - for the STM32 Depends on https://github.com/pschatzmann/stm32f411-i2s We provide a direct and a DMA implementation. When using DMA, we just add a write and read buffer and pass some parameters to the STM32 API! Alternatively we can define the input stream or the output. More...
 
class  I2SStream
 We support the Stream interface for the I2S access. In addition we allow a separate mute pin which might also be used to drive a LED... More...
 
class  ICYStream
 Icecast/Shoutcast Audio Stream which splits the data into metadata and audio data. The Audio data is provided via the regular stream functions. The metadata is handled with the help of the MetaDataICY state machine and provided via a callback method. More...
 
class  ICYStreamBuffered
 ICYStream implementation for the ESP32 based on a FreeRTOS task This is a Icecast/Shoutcast Audio Stream which splits the data into metadata and audio data. The Audio data is provided via the regular stream functions. The metadata is handled with the help of the MetaDataICY state machine and provided via a callback method. More...
 
class  ICYUrlSetup
 Resolve icy-metaint from HttpRequest and execute metadata callbacks. More...
 
struct  ID3v1
 
struct  ID3v1Enhanced
 
struct  ID3v2
 
struct  ID3v2Frame
 
struct  ID3v2FrameString
 
class  IIR
 IIRFilter Converted from https://github.com/tttapa/Filters/blob/master/src/IIRFilter.h. More...
 
class  ILBCDecoder
 Decoder for iLBC. Depends on https://github.com/pschatzmann/libilbc. More...
 
class  ILBCEncoder
 Encoder for iLBC - Depends on https://github.com/pschatzmann/libopenilbc. More...
 
struct  IMAState
 
class  InputMerge
 Merges multiple input channels. The input must be mono! So if you provide 2 mono channels you get a stereo signal as result with the left channel from channel 0 and the right from channel 1. More...
 
class  InputMixer
 MixerStream is mixing the input from Multiple Input Streams. All streams must have the same audo format (sample rate, channels, bits per sample). More...
 
class  int24_3bytes_t
 24bit integer which is used for I2S sound processing. The values are really using 3 bytes. It works only on little endian machines! More...
 
class  int24_4bytes_t
 24bit integer which is used for I2S sound processing. The values are represented as int32_t, but only 3 bytes are used. If you assign values which are too big, they are clipped. More...
 
class  JpegOpenCV
 Display image with opencv to be used on the desktop. More...
 
class  JpegTFT
 Display jpeg image using https://github.com/Bodmer/TFT_eSPI and https://github.com/Bodmer/JPEGDecoder. More...
 
class  JupyterAudioT
 Output to Jupyter. We write the data just to a file from where we can load the data again for different representations. More...
 
class  LastSampleFader
 If we end audio and the last sample is not close to 0 we can hear a popping noise. This functionality brings the last value slowly to 0. Typless implementation. More...
 
class  LastSampleFaderT
 If we end audio and the last sample is not close to 0 we can hear a popping noise. This functionality brings the last value slowly to 0. More...
 
class  LC3Decoder
 Decoder for LC3. Depends on https://github.com/pschatzmann/arduino-liblc3. More...
 
class  LC3Encoder
 Encoder for LC3 - Depends on https://github.com/pschatzmann/arduino-liblc3. More...
 
class  LEDOutput
 LED output using the FastLED library. More...
 
struct  LEDOutputConfig
 
class  LEDOutputUnoR4
 LED output using the R4 LED matrix library. More...
 
struct  LEDOutputUnoR4Config
 
class  LinearVolumeControl
 The simplest possible implementation of a VolumeControl: The input = output which describes a linear curve. You would use this implementation if you physically connect an audio pot! More...
 
class  List
 Double linked list. More...
 
class  Lock
 A simple RIA locking class for the ESP32 using _lock_t. More...
 
class  LockGuard
 RAII implementaion using a Mutex: Only a few microcontrollers provide lock guards, so I decided to roll my own solution where we can just use a dummy Mutex implementation that does nothing for the cases where this is not needed. More...
 
class  LogarithmicVolumeControl
 Parametric Logarithmic volume control. Using the formula pow(b,input) * a - a, where b is b = pow(((1/ym)-1), 2) and a is a = 1.0 / (b - 1.0). The parameter ym is determining the steepness. See https://electronics.stackexchange.com/questions/304692/formula-for-logarithmic-audio-taper-pot. More...
 
class  LowPassFilter
 Biquad DF2 Low Pass Filter. When dealing with high-order IIR filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
class  LowShelfFilter
 Biquad DF2 Low Shelf Filter. When dealing with high-order IIR filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
class  Maximilian
 AudioTools integration with Maximilian. More...
 
class  MeasuringStream
 Class which measures the thruput. More...
 
class  MedianFilter
 An embedded friendly, fast one-dimensional median filter algorithm implementation in C and C++ Useful for spike and noise removal from analog signals or other DSP Also known as "salt-and-pepper noise" or "impulse noise" filter. More...
 
class  MemoryManager
 MemoryManager which activates the use of external SPIRAM memory. When external memory is in use, the allocation strategy is to initially try to satisfy smaller allocation requests with internal memory and larger requests with external memory. This sets the limit between the two, as well as generally enabling allocation in external memory. More...
 
class  MemoryOutput
 Writes to a preallocated memory. More...
 
class  MemoryStream
 A simple Stream implementation which is backed by allocated memory. More...
 
class  MetaDataFilter
 Class which filters out ID3v1 and ID3v2 Metadata and provides only the audio data to the decoder. More...
 
class  MetaDataICY
 Icecast/Shoutcast Metadata Handling. Metadata class which splits the data into audio and metadata. The result is provided via callback methods. see https://www.codeproject.com/Articles/11308/SHOUTcast-Stream-Ripper. More...
 
class  MetaDataID3
 Simple ID3 Meta Data Parser which supports ID3 V1 and V2 and implements the Stream interface. You just need to set the callback(s) to receive the result and copy the audio data to this stream. More...
 
class  MetaDataID3Base
 ID3 Meta Data Common Functionality. More...
 
class  MetaDataID3V1
 Simple ID3 Meta Data API which supports ID3 V1. More...
 
class  MetaDataID3V2
 Simple ID3 Meta Data API which supports ID3 V2: We only support the "TALB", "TOPE", "TIT2", "TCON" tags. More...
 
class  MetaDataOutput
 ID3 and Icecast/Shoutcast metadata output support. Just write the audio data to an object of this class and receive the metadata via the callback. More...
 
class  MiniAudioConfig
 Configuration for MiniAudio. More...
 
class  MiniAudioStream
 MiniAudio: https://miniaud.io/. More...
 
class  ModifyingOutput
 Abstract class: Objects can be put into a pipleline. More...
 
class  ModifyingStream
 Abstract class: Objects can be put into a pipleline. More...
 
class  ModulationBaseClass
 Class provides a wave table that can be populated with a number of preallocated waveforms. These can be used to generate audio in themselves or to modulate The parameters of another effect. Class initialised with sample rate. More...
 
struct  MozziConfig
 
class  MozziStream
 Stream that provides audio information that was generated using the Mozzi API using the updateControl() and updateAudio() methods. More...
 
class  MP3DecoderHelix
 MP3 Decoder using libhelix: https://github.com/pschatzmann/arduino-libhelix This is basically just a simple wrapper to provide AudioInfo and AudioInfoSupport. More...
 
class  MP3DecoderMAD
 MP3 Decoder using https://github.com/pschatzmann/arduino-libmad. More...
 
class  MP3DecoderMini
 MP3 Decoder using https://github.com/pschatzmann/minimp3. This decoder does not provide any good results and it is not suited to decode any audio above 32000 on an ESP32. So the sample rate is limited by the MINIMP3_MAX_SAMPLE_RATE variable. More...
 
class  MP3EncoderLAME
 Encodes PCM data to the MP3 format and writes the result to a stream This is basically just a wrapper using https://github.com/pschatzmann/arduino-liblame. More...
 
struct  MP4Atom
 Represents a single MPEG4 atom. More...
 
class  MP4ParseBuffer
 
class  MTSDecoder
 MPEG-TS (MTS) decoder. Extracts the AAC audio data from a MPEG-TS (MTS) data stream. You can define the relevant stream types via the API. Required dependency: https://github.com/pschatzmann/arduino-tsdemux. More...
 
class  MultiConverter
 Combines multiple converters. More...
 
class  MultiOutput
 Replicates the output to multiple destinations. More...
 
class  MusicalNotes
 Determination of the frequency of a music note. More...
 
class  Mutex
 Mutex implemntation using FreeRTOS. More...
 
class  MutexBase
 Empty Mutex implementation which does nothing. More...
 
struct  Nano_BLE_freq_info
 Mapping Frequency constants to available frequencies. More...
 
struct  Nano_BLE_ratio_info
 Mapping from Ratio Constants to frequency ratios. More...
 
class  NBuffer
 A lock free N buffer. If count=2 we create a DoubleBuffer, if count=3 a TripleBuffer etc. More...
 
class  NoFilter
 No change to the input. More...
 
class  NOPConverter
 Dummy converter which does nothing. More...
 
class  NotchFilter
 Biquad DF2 Notch Filter. When dealing with high-order IIR filters, they can get unstable. To prevent this, BiQuadratic filters (second order) are used. Converted from https://github.com/tttapa/Filters/blob/master/src/BiQuad.h Use float or double (and not a integer type) as type parameter. More...
 
class  NullStream
 The Arduino Stream which provides silence and simulates a null device when used as audio target or audio source. More...
 
class  NumberConverter
 Converts from a source to a target number with a different type. More...
 
class  NumberFormatConverterStream
 Converter which converts between bits_per_sample and 16 bits. The templated NumberFormatConverterStreamT class is used based on the information provided by the bits_per_sample in the configuration. More...
 
class  NumberFormatConverterStreamT
 Converter which converts from source bits_per_sample to target bits_per_sample. More...
 
class  NumberReader
 Reads n numbers from an Arduino Stream. More...
 
class  Nuttall
 Nuttall FFT Window function. More...
 
class  OggContainerDecoder
 Decoder for Ogg Container. Decodes a packet from an Ogg container. The Ogg begin segment contains the AudioInfo structure. You can subclass and overwrite the beginOfSegment() method to implement your own headers Dependency: https://github.com/pschatzmann/arduino-libopus. More...
 
class  OggContainerEncoder
 Encoder for Ogg Container. Encodes a packet for an Ogg container. The Ogg begin segment contains the AudioInfo structure. You can subclass ond overwrite the writeHeader() method to implement your own header logic. When an optional encoder is specified in the constructor we package the encoded data. Dependency: https://github.com/pschatzmann/arduino-libopus. More...
 
class  OggContainerOutput
 Output class for the OggContainerEncoder. Each write is ending up as container entry. More...
 
class  OpusAudioDecoder
 OpusAudioDecoder: Depends on https://github.com/pschatzmann/arduino-libopus.git. More...
 
class  OpusAudioEncoder
 OpusAudioEncoder: Dependens on https://github.com/pschatzmann/arduino-libopus.git. More...
 
struct  OpusEncoderSettings
 Setting for Opus Encoder where the following values are valid: -1 indicates that the default value should be used and that this codec is not setting the value. More...
 
class  OpusOggDecoder
 Opus Decoder which uses the Ogg Container. See https://datatracker.ietf.org/doc/html/rfc7845. The audio data is transmitted in frames and the header information contains the sampler rate, channels and other critical info. Dependency: https://github.com/pschatzmann/arduino-libopus. More...
 
class  OpusOggEncoder
 Opus Encoder which uses the Ogg Container: see https://datatracker.ietf.org/doc/html/rfc7845 Dependency: https://github.com/pschatzmann/arduino-libopus. More...
 
class  OpusOggWriter
 
struct  OpusSettings
 Setting for Opus Decoder. More...
 
class  OutputMixer
 Mixing of multiple outputs to one final output. More...
 
class  Parameter
 A constant value. More...
 
class  ParseBuffer
 We try to keep the necessary buffer for parsing as small as possible, The data() method provides the start of the actual data and with consume we remove the processed data from the buffer to make space again. More...
 
class  ParseObject
 
class  PIDController
 A simple header only PID Controller. More...
 
struct  PinInfoESP32
 Information for a PIN. More...
 
class  PinkNoiseGenerator
 Generates pink noise. More...
 
class  Pipeline
 We can build a input or an output chain: an input chain starts with setInput(); followed by add() an output chain consinsts of add() and ends with setOutput();. More...
 
class  PitchShift
 Shifts the pitch by the indicated step size: e.g. 2 doubles the pitch. More...
 
struct  PitchShiftInfo
 Configuration for PitchShiftOutput: set the pitch_shift to define the shift. More...
 
class  PitchShiftOutput
 Pitch Shift: Shifts the frequency up or down w/o impacting the length! We reduce the channels to 1 to calculate the pitch shift and provides the pitch shifted result in the correct number of channels. The pitch shifting is done with the help of a buffer that can have potentially multiple implementations. More...
 
class  PoppingSoundRemover
 Big value gaps (at the beginning and the end of a recording) can lead to some popping sounds. We will try to set the values to 0 until the first transition thru 0 of the audio curve. More...
 
class  PortAudioConfig
 PortAudio information. More...
 
class  PortAudioStream
 Arduino Audio Stream using PortAudio. More...
 
class  Print
 
class  ProgressStream
 Generic calss to measure the the total bytes which were processed in order to calculate the progress as a percentage of the total size. More...
 
class  ProgressStreamInfo
 Configuration for ProgressStream. More...
 
class  PureDataStream
 Input and output of Pure Data PD using code generated by the hvcc compiler. The audio format is defined by the sample rate in the Heavy constructor, the number of channels in the ADC and DAC and the bits_per_sample of 16. Therefore the audio format can not be changed dynamically. I recommend to make sure that the input format and output format is consistent, otherwise you need to change the format in PD. More...
 
class  PWMAudioOutput
 Common functionality for PWM output. Please use the PWMAudioOutput typedef instead which references the implementation. More...
 
struct  PWMConfig
 Configuration data for PWM audio output. More...
 
class  PWMDriverAVR
 Experimental: Audio output to PWM pins for the AVR. The AVR supports only up to 2 channels. More...
 
class  PWMDriverESP32
 Audio output to PWM pins for the ESP32. The ESP32 supports up to 16 channels. More...
 
class  PWMDriverMBED
 Audio output to PWM pins for MBED based Arduino implementations. More...
 
class  PWMDriverRenesas
 Audio output to PWM pins for Renesas based Arduino implementations. More...
 
class  PWMDriverSTM32
 Audio output to PWM pins for STM32. We use one timer to generate the sample rate and one timer for the PWM signal. More...
 
class  Queue
 FIFO Queue which is based on a List. More...
 
class  QueueLockFree
 A simple single producer, single consumer lock free queue. More...
 
class  QueueRTOS
 FIFO Queue whch is based on the FreeRTOS queue API. The default allocator will allocate the memory from psram if available. More...
 
class  QueueStream
 AudioStream class which stores the data in a temporary queue buffer. The queue can be consumed e.g. by a callback function by calling readBytes();. More...
 
struct  RECT
 
class  Rectange
 Rectange FFT Window function. More...
 
class  ReedSolomonFEC
 Forward error correction using Reed-Solomon: write is encoding and readBytes does the decoding. More...
 
class  ReformatBaseStream
 Base class for chained converting streams. More...
 
struct  ResampleConfig
 Optional Configuration object. The critical information is the channels and the step_size. All other information is not used. More...
 
class  ResampleStream
 Dynamic Resampling. We can use a variable factor to speed up or slow down the playback. More...
 
class  RingBuffer
 Implements a typed Ringbuffer. More...
 
class  RingBufferFile
 An File backed Ring Buffer that we can use to receive streaming audio. We expect an open p_file as parameter. More...
 
class  RingBufferStream
 A Stream backed by a Ringbuffer. We can write to the end and read from the beginning of the stream. More...
 
class  RTSPFormatAbtX
 abtX format for RTSP https://en.wikipedia.org/wiki/RTP_payload_formats More...
 
class  RTSPFormatAudioTools
 RTSPFormat which supports the AudioInfo class. More...
 
class  RTSPFormatG711
 G711 μ-Law format for RTSP https://en.wikipedia.org/wiki/RTP_payload_formats Packet intervall: 20, frame size: any. More...
 
class  RTSPFormatGSM
 GSM format for RTSP https://en.wikipedia.org/wiki/RTP_payload_formats. More...
 
class  RTSPFormatOpus
 Opus format for RTSP https://en.wikipedia.org/wiki/RTP_payload_formats. More...
 
class  RTSPFormatPCM
 PCM format for RTSP https://en.wikipedia.org/wiki/RTP_payload_formats. More...
 
class  RTSPFormatPCM8
 L8 format for RTSP https://en.wikipedia.org/wiki/RTP_payload_formats. More...
 
class  RTSPOutput
 We can write PCM data to the RTSPOutput. This is encoded by the indicated encoder (e.g. SBCEncoder) and can be consumed by a RTSPServer. You have to make sure that the codec supports the provided audio format: e.g. GSM support only 8000 samples per second with one channel. Depends on the https://github.com/pschatzmann/Micro-RTSP-Audio/ library. More...
 
class  RTSPOutputPCMInfo
 PCMInfo subclass which provides the audio information from the related AudioStream Depends on the https://github.com/pschatzmann/Micro-RTSP-Audio/ library. More...
 
class  RTSPPCMAudioInfo
 PCMInfo subclass which provides the audio information from the AudioInfo parameter. More...
 
class  RTSPSourceFromAudioStream
 Simple Facade which can turn AudioStream into a IAudioSource. This way we can e.g. use an I2SStream as source to stream data Depends on the https://github.com/pschatzmann/Micro-RTSP-Audio/ library. More...
 
class  RTSPSourceStream
 Simple Facade which can turn any Stream into a IAudioSource. This way we can e.g. use an I2SStream as source to stream data Depends on the https://github.com/pschatzmann/Micro-RTSP-Audio/ library. More...
 
class  SBCDecoder
 Decoder for SBC. Depends on https://github.com/pschatzmann/arduino-libsbc. Inspired by sbcdec.c. More...
 
class  SBCEncoder
 Encoder for SBC - Depends on https://github.com/pschatzmann/arduino-libsbc. Inspired by sbcenc.c. More...
 
class  ScaledParameter
 Scales a dynamic parameter to the indicated range. More...
 
class  SDDirect
 We access the files directy with an index. The index is determined by a recurseve tree walk thru the directory. Unfortunatly the SDTFAT library has it's own API which is incompatible with the SDT API. More...
 
class  SDIndex
 We store all the relevant file names in an sequential index file. Form there we can access them via an index. More...
 
class  SilenceGenerator
 Provides a fixed value (e.g. 0) as sound data. This can be used e.g. to test the output functionality which should optimally just output silence and no artifacts. More...
 
class  SilenceRemovalConverter
 Removes any silence from the buffer that is longer then n samples with a amplitude below the indicated threshhold. If you process multiple channels you need to multiply the channels with the number of samples to indicate n. More...
 
class  SimpleChorus
 Simple Chorus effect with a single delay voice and mono output Chorus is effective between 15 and 20 miliseconds delay of original audio. Requires the sample rate when initialising. More...
 
struct  SimpleContainerConfig
 
struct  SimpleContainerDataHeader
 
struct  SimpleContainerMetaDataHeader
 
class  SimpleDelay
 Simple Delay effect consiting of a single tap delay with Effect Gain and feed back controls Constructor requires internal delay in samples. More...
 
class  SimpleFlanger
 Simple Flanger Effect Consistig of a single voice flanger The flanger has an effective range between 0 and 15 miliseconds in this case dleay buffer should be set to sampleRate*3/200 Constructor requires internal delay in samples. More...
 
class  SimpleLPF
 SimpleLPF. More...
 
class  SimulatedAudioPot
 Simple simulated audio pot volume control inspired by https://eepower.com/resistor-guide/resistor-types/potentiometer-taper/# We split up the input/output curve into 2 linear pieces with a slow and a fast raising part. The slow raising part goes from (0,0) to (x,y). The fast raising part goes from (x,y) to (1,1). More...
 
class  SineFromTable
 A sine generator based on a table. The table is created using degrees where one full wave is 360 degrees. More...
 
class  SineWaveGenerator
 Generates a Sound with the help of sin() function. If you plan to change the amplitude or frequency (incrementally), I suggest to use SineFromTable instead. More...
 
class  SingleBuffer
 A simple Buffer implementation which just uses a (dynamically sized) array. More...
 
class  Slice
 Helps to split up a big memory array into smaller slices. There are no additinal heap allocations! Example: if we have an array with 9 entries (1,2,3,4,5,6,7,8,9): slices(5) gives 2. slice(5,0) returns size 5 with 1,2,3,4,5 and slice(5,1) returns size 4 with 6,7,8,9! More...
 
class  SmoothTransition
 Changes the samples at the beginning or at the end to slowly ramp up the volume. More...
 
class  SOSFilter
 Second Order Filter: Instead of manually cascading BiQuad filters, you can use a Second Order Sections filter (SOS). converted from https://github.com/tttapa/Filters/blob/master/src/SOSFilter.h Use float or float (and not a integer type) as type parameter. More...
 
class  SoundGenerator
 Base class to define the abstract interface for the sound generating classes. More...
 
class  SoundGeneratorModulation
 SoundGenerator using the ModulationBaseClass to generate the samples. More...
 
struct  SPDIFConfig
 SPDIF configuration. More...
 
class  SPDIFOutput
 Output as 16 bit stereo SPDIF on the I2S data output pin. More...
 
class  SquareWaveGenerator
 Generates a square wave sound. More...
 
class  Stack
 LIFO Stack which is based on a List. More...
 
class  StdioStream
 
class  STKChorus
 Chorus Effect. More...
 
class  STKChowningReverb
 John Chowning's reverberator class. More...
 
class  STKEcho
 Echo Effect. More...
 
class  STKEffect
 Use any effect from the STK framework: e.g. Chorus, Echo, FreeVerb, JCRev, PitShift... https://github.com/pschatzmann/Arduino-STK. More...
 
class  STKFreeVerb
 Jezar at Dreampoint's FreeVerb, implemented in STK. More...
 
class  STKGenerator
 The Synthesis ToolKit in C++ (STK) is a set of open source audio signal processing and algorithmic synthesis classes written in the C++ programming language. You need to install https://github.com/pschatzmann/Arduino-STK
More...
 
class  STKLentPitShift
 Pitch shifter effect class based on the Lent algorithm. More...
 
class  STKNReverb
 CCRMA's NRev reverberator class. More...
 
class  STKPerryReverb
 Perry's simple reverberator class. More...
 
class  STKPitShift
 Simple Pitch shifter effect class: This class implements a simple pitch shifter using a delay line. More...
 
class  STKStream
 STK Stream for Instrument or Voicer. More...
 
class  Str
 A simple wrapper to provide string functions on char*. If the underlying char* is a const we do not allow any updates; The ownership of the chr* must be managed externally! More...
 
class  Stream
 
class  StreamCopy
 We provide the typeless StreamCopy as a subclass of StreamCopyT. More...
 
class  StreamCopyT
 Typed Stream Copy which supports the conversion from channel to 2 channels. We make sure that we allways copy full samples. More...
 
class  StreamingDecoder
 A Streaming Decoder where we provide both the input and output as streams. More...
 
class  StreamingDecoderAdapter
 Converts any AudioDecoder to a StreamingDecoder. More...
 
class  StrExt
 Str which keeps the data on the heap. We grow the allocated memory only if the copy source is not fitting. More...
 
class  SynchronizedBuffer
 Wrapper class that can turn any Buffer into a thread save implementation. More...
 
class  SynchronizedNBuffer
 NBuffer which uses some RTOS queues to manage the available and filled buffers. More...
 
class  Synthesizer
 A simple Synthesizer which can generate sound having multiple keys pressed. The main purpose of this class is managing the synthezizer channels. More...
 
struct  SynthesizerKey
 Arduino GPIO pin to note assossiation. More...
 
class  Task
 FreeRTOS task. More...
 
class  TestGenerator
 Generates a test signal which is easy to check because the values are incremented or decremented by 1. More...
 
class  TfLiteAbstractRecognizeCommands
 Base class for implementing different primitive decoding models on top of the instantaneous results from running an audio recognition model on a single window of samples. More...
 
class  TfLiteAudioErrorReporter
 Error Reporter using the Audio Tools Logger. More...
 
class  TfLiteAudioStream
 TfLiteAudioStream which uses Tensorflow Light to analyze the data. If it is used as a generator (where we read audio data) More...
 
class  TfLiteAudioStreamBase
 Astract TfLiteAudioStream to provide access to TfLiteAudioStream for Reader and Writers. More...
 
struct  TfLiteConfig
 Configuration settings for TfLiteAudioStream. More...
 
class  TfLiteMicroSpeachWriter
 TfLiteMicroSpeachWriter for Audio Data. More...
 
class  TfLiteMicroSpeechRecognizeCommands
 This class is designed to apply a very primitive decoding model on top of the instantaneous results from running an audio recognition model on a single window of samples. It applies smoothing over time so that noisy individual label scores are averaged, increasing the confidence that apparent matches are real. To use it, you should create a class object with the configuration you want, and then feed results from running a TensorFlow model into the processing method. The timestamp for each subsequent call should be increasing from the previous, since the class is designed to process a stream of data over time. More...
 
class  TfLiteQuantizer
 Quantizer that helps to quantize and dequantize between float and int8. More...
 
class  TfLiteReader
 Input class which provides the next value if the TfLiteAudioStream is treated as an audio sourcce. More...
 
class  TfLiteSineReader
 Generate a sine output from a model that was trained on the sine method. (=hello_world) More...
 
class  TfLiteWriter
 Output class which interprets audio data if TfLiteAudioStream is treated as audio sink. More...
 
class  Throttle
 Throttle the sending or receiving of the audio data to limit it to the indicated sample rate. More...
 
struct  ThrottleConfig
 Configure Throttle setting. More...
 
class  TimedStream
 AudioStream class that can define a start and (an optional) stop time Usually it is used to wrap an Audio Sink (e.g. I2SStream), but wrapping an Audio Source is supported as well. Only wrap classes which represent PCM data! More...
 
class  TimerAlarmRepeating
 Common Interface definition for TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingDriverAVR
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingDriverBase
 
class  TimerAlarmRepeatingDriverESP8266
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingDriverMBED
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingDriverRenesas
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. By default we use a new GPT timer. You can also request 1 AGT timer by calling setTimer(1);. More...
 
class  TimerAlarmRepeatingDriverSTM32
 STM32 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerCallbackAudioStream
 Callback driven Audio Source (rx_tx_mode==RX_MODE) or Audio Sink (rx_tx_mode==TX_MODE). This class allows to to integrate external libraries in order to consume or generate a data stream which is based on a timer. More...
 
struct  TimerCallbackAudioStreamInfo
 TimerCallbackAudioStream Configuration. More...
 
class  TransformationReader
 ConverterStream Helper class which implements the readBytes with the help of write. More...
 
class  Tremolo
 Tremolo AudioEffect. More...
 
class  Triangle
 Triangle FFT Window function. More...
 
class  UDPStream
 A UDP class which makes sure that we can use UDP as AudioSource and AudioSink. By default the WiFiUDP object is used and we login to wifi if the ssid and password is provided and we are not already connected. More...
 
class  Url
 URL parser which breaks a full url string up into its individual parts. More...
 
class  URLHistory
 
class  URLLoaderHLS
 
class  URLLoaderHLSBase
 Abstract API for URLLoaderHLS. More...
 
class  URLLoaderHLSOutput
 URLLoader which saves the HLS segments to the indicated output. More...
 
class  URLStream
 Represents the content of a URL as Stream. We use the WiFi.h API. More...
 
class  URLStreamBuffered
 URLStream implementation for the ESP32 based on a separate FreeRTOS task. More...
 
class  VariableSpeedRingBuffer
 Optimized Buffer implementation for Pitch Shift. We try to interpolate the samples and restore the phase when the read pointer and write pointer overtake each other. More...
 
class  VariableSpeedRingBuffer180
 Varialbe speed ring buffer where we read with 0 and 180 degree and blend the result to prevent overrun artifacts. See https://github.com/YetAnotherElectronicsChannel/STM32_DSP_PitchShift. More...
 
class  VariableSpeedRingBufferSimple
 Very Simple Buffer implementation for Pitch Shift. We write in constant speed, but reading can be done in a variable speed. We will hear some noise when the buffer read and write pointers overrun each other. More...
 
class  VBANConfig
 
class  VBANStream
 VBAN Audio Source and Sink for the ESP32. For further details please see https://vb-audio.com/Voicemeeter/vban.htm . Inspired by https://github.com/rkinnett/ESP32-VBAN-Audio-Source/tree/master and https://github.com/rkinnett/ESP32-VBAN-Network-Audio-Player. More...
 
class  Vector
 Vector implementation which provides the most important methods as defined by std::vector. This class it is quite handy to have and most of the times quite better then dealing with raw c arrays. More...
 
class  VideoAudioBufferedSync
 Logic to Synchronize video and audio output: we use a buffer to store the audio and instead of delaying the frames with delay() we play audio. The bufferSize defines the audio buffer in bytes. The correctionMs is used to slow down or speed up the playback of the video to prevent any audio buffer underflows. More...
 
class  VideoAudioSync
 Logic to Synchronize video and audio output: This is the minimum implementatin which actually does not synchronize, but directly processes the data. No additinal memory is used! Provide your own optimized platform specific implementation. More...
 
class  VideoOutput
 Abstract class for video playback. This class is used to assemble a complete video frame in memory. More...
 
class  VolumeControl
 Abstract class for handling of the linear input volume to determine the multiplication factor which should be applied to the audio signal. More...
 
class  VolumeOutput
 A simple class to determine the volume. More...
 
class  VolumeStream
 Adjust the volume of the related input or output: To work properly the class needs to know the bits per sample and number of channels! AudioChanges are forwareded to the related Print or Stream class. More...
 
struct  VolumeStreamConfig
 Config for VolumeStream. More...
 
class  VolumeSupport
 Supports the setting and getting of the volume. More...
 
class  VorbisDecoder
 Vorbis Streaming Decoder using https://github.com/pschatzmann/arduino-libvorbis-tremor. More...
 
class  VS1053Config
 Configuration for VS1053Stream. More...
 
class  VS1053Stream
 VS1053 Output Interface which processes PCM data by default. If you want to write encoded data set is_encoded_data = true in the configuration;. More...
 
struct  WAVAudioInfo
 Sound information which is available in the WAV header. More...
 
class  WAVDecoder
 A simple WAVDecoder: We parse the header data on the first record to determine the format. If no AudioDecoderExt is specified we just write the PCM data to the output that is defined by calling setOutput(). You can define a ADPCM decoder to decode WAV files that contain ADPCM data. More...
 
class  WAVEncoder
 A simple WAV file encoder. If no AudioEncoderExt is specified the WAV file contains PCM data, otherwise it is encoded as ADPCM. The WAV header is written with the first writing of audio data. Calling begin() is making sure that the header is written again. More...
 
struct  WAVFormatX
 
class  WAVHeader
 Parser for Wav header data for details see https://de.wikipedia.org/wiki/RIFF_WAVE. More...
 
struct  WavIMAAudioInfo
 Sound information which is available in the WAV header - adjusted for IMA ADPCM. More...
 
class  WavIMADecoder
 Obsolete: WavIMADecoder - based on WAVDecoder - We parse the header data as we receive it and send the sound data to the stream which was indicated in the constructor. Only WAV files with WAVE_FORMAT_IMA_ADPCM are supported by this codec! More...
 
class  WavIMAHeader
 
class  Welch
 Welch FFT Window function. More...
 
class  WhiteNoiseGenerator
 Generates a random noise sound with the help of rand() function. More...
 
class  WindowFunction
 FFT Window Function. More...
 
class  WM8960Config
 Configuration for WM8960. More...
 
class  WM8960Stream
 Stream for reading and writing audio data using the WM8960 Codec Chip You need to install https://github.com/pschatzmann/arduino-wm8960. More...
 

Typedefs

using AnalogConfig = AnalogConfigESP32
 
using AnalogDriver = AnalogDriverArduino
 AnalogAudioStream.
 
using AudioBaseInfo = AudioInfo
 
using AudioBaseInfoDependent = AudioInfoSupport
 
typedef sdfat::SdFs AudioFs
 
using AudioInfoDependent = AudioInfoSupport
 
template<typename T >
using CallbackBufferedStream = QueueStream< T >
 
using Chart = ChartT< int16_t >
 
template<typename T >
using CsvStream = CsvOutput< T >
 
using DecoderFromStreaming = DecoderAdapter
 
typedef int16_t effect_t
 
typedef float effectsuite_t
 
using EncodedAudioPrint = EncodedAudioOutput
 
using FOURCC = char[4]
 
using HexDumpStream = HexDumpOutput
 
using I2SConfig = I2SConfigESP32
 
using I2SDriver = I2SDriverESP32
 
using int24_t = audio_tools::int24_4bytes_t
 
using JupyterAudio = JupyterAudioT< int16_t >
 
using MemoryPrint = MemoryOutput
 
using MetaDataPrint = MetaDataOutput
 
typedef void(* my_repeating_timer_callback_t) (void *obj)
 
using PCMDecoder = CopyDecoder
 
using PCMEncoder = CopyEncoder
 
typedef PinInfoESP32 PinInfo
 
using Pins = Vector< int >
 Pins.
 
using PWMAudioStream = PWMAudioOutput
 
typedef bool(* PWMCallbackType) (uint8_t channels, int16_t *data)
 
using PWMDriver = PWMDriverAVR
 
typedef void(* repeating_timer_callback_t) (void *obj)
 
using RTSPStream = RTSPOutput
 
using sample_rate_t = uint32_t
 
typedef sdfat::SdSpiConfig SdSpiConfig
 
using SPDIFStream = SPDIFOutput
 
template<class T >
using SynchronizedBufferRTOS = BufferRTOS< T >
 
using TimerAlarmRepeatingDriver = TimerAlarmRepeatingDriverAVR
 use TimerAlarmRepeating!
 
using VolumePrint = VolumeOutput
 

Enumerations

enum  A2DPNoData { A2DPSilence , A2DPWhoosh }
 A2DP Action when there is no data.
 
enum  A2DPStartLogic { StartWhenBufferFull , StartOnConnect }
 A2DP Startup Logic.
 
enum class  ADPCMNoiseShaping { AD_NOISE_SHAPING_OFF = 0 , AD_NOISE_SHAPING_STATIC = 1 , AD_NOISE_SHAPING_DYNAMIC = 2 }
 
enum class  AudioFormat : uint16_t {
  UNKNOWN = 0x0000 , PCM = 0x0001 , ADPCM = 0x0002 , IEEE_FLOAT = 0x0003 ,
  ALAW = 0x0006 , MULAW = 0x0007 , OKI_ADPCM = 0x0010 , DVI_ADPCM = 0x0011 ,
  MEDIASPACE_ADPCM = 0x0012 , SIERRA_ADPCM = 0x0013 , G723_ADPCM = 0x0014 , DIALOGIC_OKI_ADPCM = 0x0017 ,
  MEDIAVISION_ADPCM = 0x0018 , YAMAHA_ADPCM = 0x0020 , ANTEX_ADPCME = 0x0033 , DIGIADPCM = 0x0036 ,
  NMS_VBXADPCM = 0x0038 , CS_IMAADPCM = 0x0039 , ROCKWELL_ADPCM = 0x003B , G721_ADPCM = 0x0040 ,
  G726_ADPCM = 0x0064 , G722_ADPCM = 0x0065 , INFOCOM_ITS_G721_ADPCM = 0x008B , ZYXEL_ADPCM = 0x0097 ,
  RHETOREX_ADPCM = 0x0100 , SANYO_LD_ADPCM = 0x0125 , G726ADPCM = 0x0140 , UNISYS_NAP_ADPCM = 0x0170
}
 Audio format codes used by Microsoft e.g. in avi or wav files.
 
enum class  AudioType : uint8_t {
  PCM , MP3 , AAC , WAV ,
  ADPC
}
 
enum  Base46Logic { NoCR , CRforFrame , CRforWrite }
 
enum  BinaryContainerEncoderError { InvalidHeader , InvalidChecksum , DataMissing }
 Error types.
 
enum  chunk_result { IMA_ERR_INVALID_CHUNK = -2 , IMA_ERR_INVALID_CONTAINER , IMA_CHUNK_OK , IMA_CHUNK_UNKNOWN }
 Parser for Wav header data adjusted for IMA ADPCM format - partially based on CodecWAV.h for details see https://de.wikipedia.org/wiki/RIFF_WAVE. More...
 
enum class  ContainerType : uint8_t { Header = 1 , Audio = 2 , Meta = 3 , Undefined = 0 }
 
enum  FileMode { FILE_READ ='r' , FILE_WRITE ='w' , FILE_APPEND ='a' }
 
enum  FillLeftAndRightStatus { Auto , LeftIsEmpty , RightIsEmpty }
 Configure ConverterFillLeftAndRight.
 
enum  G7xxCODEC_e { g723_24 , g721 , g723_40 , others }
 Supported codecs by G7xxDecoder and G7xxEncoder. More...
 
enum  I2SFormat {
  I2S_STD_FORMAT , I2S_LSB_FORMAT , I2S_MSB_FORMAT , I2S_PHILIPS_FORMAT ,
  I2S_RIGHT_JUSTIFIED_FORMAT , I2S_LEFT_JUSTIFIED_FORMAT , I2S_PCM
}
 I2S Formats.
 
enum  I2SSignalType { Digital , Analog , PDM , TDM }
 I2S Signal Types: Digital, Analog, PDM.
 
enum  ID3TypeSelection {
  SELECT_ID3V1 =0b001 , SELECT_ID3V2 =0b010 , SELECT_ID3 =0b011 , SELECT_ICY =0b100 ,
  SELECT_ANY =0b111
}
 Enum to filter by type of metadata.
 
enum  MemoryType { RAM , PS_RAM , FLASH_RAM }
 Memory types.
 
enum  MetaDataType {
  Title , Artist , Album , Genre ,
  Name , Description
}
 Type of meta info.
 
enum  ParseObjectType { AVIList , AVIChunk , AVIStreamData }
 
enum  ParseState {
  ParseHeader , ParseHdrl , ParseAvih , ParseStrl ,
  SubChunkContinue , SubChunk , ParseRec , ParseStrf ,
  AfterStrf , ParseMovi , ParseIgnore
}
 
enum  ParseStatus {
  TagNotFound , PartialTagAtTail , TagFoundPartial , TagFoundComplete ,
  TagProcessed
}
 current status of the parsing
 
enum class  RecordType : uint8_t {
  Undefined , Begin , Send , Receive ,
  End
}
 
enum  RxTxMode { UNDEFINED_MODE =0 , TX_MODE =1 , RX_MODE =2 , RXTX_MODE =3 }
 The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Sink at the same time!
 
enum  SeekMode { SeekSet = 0 , SeekCur = 1 , SeekEnd = 2 }
 
enum  StreamContentType { Audio , Video }
 
enum  TimerFunction { DirectTimerCallback , TimerCallbackInThread , SimpleThreadLoop }
 
enum  TimeUnit { MS , US , HZ }
 Time Units.
 
enum class  TransmitRole : uint8_t { Sender , Receiver }
 
enum  UlpDac { ULP_DAC1 = 1 , ULP_DAC2 = 2 }
 
enum  VS1053Mode { ENCODED_MODE , PCM_MODE , MIDI_MODE }
 

Functions

struct __attribute__ ((packed)) OpusOggHeader
 Opus header. More...
 
void a2dp_stream_sink_sound_data (const uint8_t *data, uint32_t len)
 
int32_t a2dp_stream_source_sound_data (Frame *data, int32_t len)
 
static uint8_t checkSum (const uint8_t *data, size_t len)
 Calculates the checksum.
 
static uint16_t convert8DAC (int64_t value, int value_bits_per_sample)
 
void defaultPWMAudioOutputCallback ()
 
void delay (uint32_t ms)
 Waits for the indicated milliseconds.
 
void delayMicroseconds (uint32_t ms)
 Waits for the indicated milliseconds.
 
void fftLEDOutput (LEDOutputConfig *cfg, LEDOutput *matrix)
 Default update implementation which provides the fft result as "barchart".
 
void fftLEDOutputUnoR4 (LEDOutputUnoR4Config *cfg, LEDOutputUnoR4 *matrix)
 Default update implementation which provides the fft result as "barchart".
 
int getCodec2Mode (int bits_per_second)
 Convert bits per sample to Codec2 mode.
 
CHSV getDefaultColor (int x, int y, int magnitude)
 Default logic to update the color for the indicated x,y position.
 
void I2S_IRQHandler (void)
 
void I2S_IRQRead (void)
 
void I2S_IRQWrite (void)
 
 ISR (TIMER1_COMPA_vect)
 timer callback: write the next frame to the pins
 
long map (long x, long in_min, long in_max, long out_min, long out_max)
 Maps input to output values.
 
float mapFloat (float x, float in_min, float in_max, float out_min, float out_max)
 Similar to Arduino map function but using floats. More...
 
uint32_t micros ()
 Returns the milliseconds since the start.
 
uint32_t millis ()
 Returns the milliseconds since the start.
 
float operator* (float one, float16 two)
 
float operator* (float one, float32 two)
 
float operator* (float16 one, float two)
 
float operator* (float16 one, float16 two)
 
float operator* (float32 one, float two)
 
float operator* (float32 one, float32 two)
 
float operator+ (float one, float16 two)
 
float operator+ (float one, float32 two)
 
float operator+ (float16 one, float two)
 
float operator+ (float16 one, float16 two)
 
float operator+ (float32 one, float two)
 
float operator+ (float32 one, float32 two)
 
float operator- (float one, float16 two)
 
float operator- (float one, float32 two)
 
float operator- (float16 one, float two)
 
float operator- (float16 one, float16 two)
 
float operator- (float32 one, float two)
 
float operator- (float32 one, float32 two)
 
float operator/ (float one, float16 two)
 
float operator/ (float one, float32 two)
 
float operator/ (float16 one, float two)
 
float operator/ (float16 one, float16 two)
 
float operator/ (float32 one, float two)
 
float operator/ (float32 one, float32 two)
 
template<typename T >
readSample (Stream *p_stream)
 guaranteed to return the requested data
 
template<typename T >
size_t readSamples (Stream *p_stream, T *data, int samples, int retryCount=-1)
 guaranteed to return the requested data
 
static size_t strnlength (const char *s, size_t n)
 unfortunatly strnlen or strnlen_s is not available in all implementations
 
static void timerCallback (void *obj)
 
static const char * toStr (MetaDataType t)
 Converts the MetaDataType to a string.
 
void volumeLEDOutput (LEDOutputConfig *cfg, LEDOutput *matrix)
 Default update implementation which provides the fft result as "barchart".
 
void volumeLEDOutputUnoR4 (LEDOutputUnoR4Config *cfg, LEDOutputUnoR4 *matrix)
 Default update implementation which provides the fft result as "barchart".
 
void waitFor (bool &flag)
 wait for flag to be active
 
template<typename T >
size_t writeSamples (Print *p_out, T *data, int samples, int maxSamples=512)
 guaranteed to return the requested data
 

Variables

static BufferRTOS< uint8_t > a2dp_buffer {0, A2DP_BUFFER_SIZE, portMAX_DELAY, portMAX_DELAY}
 
static A2DPStreamA2DPStream_self =nullptr
 
static const char * ACCEPT = "Accept"
 
static const char * ACCEPT_ALL = "*/*"
 
static const char * ACCEPT_ENCODING = "Accept-Encoding"
 
static PWMDriverAVRaccessAudioPWM = nullptr
 
AudioInfoSupportaudioChangeFDK = nullptr
 
static AudioInfoSupportaudioChangeMAD =nullptr
 
static MusicalNotes AudioFFTNotes
 
static const int B64index [256]
 
static const int16_t * bmc_tab = (int16_t *)bmc_tab_uint
 
static const uint16_t bmc_tab_uint [256]
 
static const char * CHUNKED = "chunked"
 
static const char * CON_CLOSE = "close"
 
static const char * CON_KEEP_ALIVE = "keep-alive"
 
static const char * CONNECTION = "Connection"
 
static const char * CONTENT_LENGTH = "Content-Length"
 
static const char * CONTENT_TYPE = "Content-Type"
 
static const char * DEFAULT_AGENT
 
static AllocatorExt DefaultAllocator
 
static char encoding_table []
 
tflite::ErrorReporter * error_reporter = &my_error_reporter
 
ESPNowStreamESPNowStreamSelf = nullptr
 
static Mutex fft_mux
 
static const Nano_BLE_freq_info freq_table []
 
static const char * genres [] = { "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", "Instrumental", "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", "Alternative Rock", "Bass", "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Insdustiral", "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", "Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native US", "Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes", "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock", "Folk", "Folk-Rock", "National Folk", "Swing", "Fast Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", "Avantgarde", "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic","Humour", "Speech", "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", "Porn Groove", "Satire", "Slow Jam", "Club", "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhytmic Soul", "Freestyle", "Duet", "Punk Rock", "Drum Solo", "Acapella", "Euro-House", "Dance Hall", "Goa", "Drum & Bass", "Club-House", "Hardcore", "Terror", "Indie", "BritPop", "Negerpunk", "Polsk Punk", "Beat", "Christian Gangsta", "Heavy Metal", "Black Metal", "Crossover", "Contemporary C", "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", "SynthPop" }
 
static const char * HOST_C = "Host"
 
static int i2s_buffer_size = 0
 
static const char * i2s_formats [] = {"I2S_STD_FORMAT","I2S_LSB_FORMAT","I2S_MSB_FORMAT","I2S_PHILIPS_FORMAT","I2S_RIGHT_JUSTIFIED_FORMAT","I2S_LEFT_JUSTIFIED_FORMAT","I2S_PCM"}
 
static const char * i2s_signal_types [] = {"Digital","Analog","PDM","TDM"}
 
static uint32_t i2s_underflow_count = 0
 
static const char * id3_v2_tags [] = {"TALB", "TOPE", "TPE1", "TIT2", "TCON"}
 
static const int ID3FrameSize = 11
 
static const char * IDENTITY = "identity"
 
const int16_t ima_index_table [16]
 
const int32_t ima_step_table [89]
 
static effectsuite_t ** interpolationTable = nullptr
 Table of interpolation values as a 2D array indexed by interpolationTable[pointIndex][alphaIndex].
 
static bool is_a2dp_active = false
 
static const char * LOCATION = "Location"
 
static const char * MetaDataTypeStr [] = {"Title", "Artist", "Album", "Genre","Name", "Description"}
 
static const char * methods []
 
static const char * mime_pcm = "audio/pcm"
 Mime type for PCM.
 
static int mod_table [] = {0, 2, 1}
 
audio_tools::TfLiteAudioErrorReporter my_error_reporter
 
static uint8_t * p_i2s_array = nullptr
 
static uint8_t * p_i2s_array_1 = nullptr
 
static uint8_t * p_i2s_array_2 = nullptr
 
static BaseBuffer< uint8_t > * p_i2s_buffer = nullptr
 
static Streamp_nano_ble_stream = nullptr
 
static AudioKitStreampt_AudioKitStream = nullptr
 
static const Nano_BLE_ratio_info ratio_table []
 
static const char * RxTxModeNames [] ={"UNDEFINED_MODE","TX_MODE","RX_MODE","RXTX_MODE" }
 Text string (description) for RxTxMode.
 
static FS SD
 
static FS SDFAT
 
static AudioActionsselfAudioActions = nullptr
 
AudioBoardStreamselfAudioBoard = nullptr
 
class AudioMP34DT05selfAudioMP34DT05 = nullptr
 
FFTDisplayselfFFTDisplay = nullptr
 
static HardwareSerial Serial
 
static uint32_t spdif_buf [(((192 *(64/8) *2)/2)/sizeof(uint32_t))]
 
static uint32_t * spdif_ptr = nullptr
 
static const char * SUCCESS = "Success"
 
static Vector< char > temp_buffer {0}
 workng buffer on the heap
 
static TimerAlarmRepeatingDriverMBEDtimerAlarmRepeating = nullptr
 
static TimerAlarmRepeatingDriverSTM32timerAlarmRepeating = nullptr
 
static TimerAlarmRepeatingDriverAVRtimerAlarmRepeatingRef = nullptr
 
static const char * TimeUnitStr [] {"MS","US","HZ"}
 
static const char * TRANSFER_ENCODING = "Transfer-Encoding"
 
static const char * USER_AGENT = "User-Agent"
 
const char * wav_ima_mime = "audio/x-wav"
 
static const char * wav_mime = "audio/wav"
 

Detailed Description

Generic Implementation of sound input and output for desktop environments using portaudio.

Direct binary Audio Output to stdout. On linux you can hear the audio e.g. with ./generator | aplay -f cd.

A Suite of C++ Audio Effects Classes Adapted from https://github.com/mhamilt/AudioEffectsSuite

This implementation collects together a set of Audio DSP Effects with heavy emphasis on modularity and class inheritance coded in a modern C++ style.

Author
Matthew Hamilton

Converted to Header Only The original implementation is based on doubles. To save space, We are using floats. On a ESP32

Enumeration Type Documentation

◆ chunk_result

Parser for Wav header data adjusted for IMA ADPCM format - partially based on CodecWAV.h for details see https://de.wikipedia.org/wiki/RIFF_WAVE.

Author
Phil Schatzmann
Norman Ritz

◆ G7xxCODEC_e

Supported codecs by G7xxDecoder and G7xxEncoder.

Author
Phil Schatzmann

Function Documentation

◆ __attribute__()

struct __attribute__ ( (packed)  )

Opus header.

Simplified header w/o comments.

◆ defaultPWMAudioOutputCallback()

static void defaultPWMAudioOutputCallback ( )

separate method that can be defined as friend so that we can access protected information

◆ I2S_IRQHandler()

void audio_tools::I2S_IRQHandler ( void  )

I2S Event handler

◆ mapFloat()

float audio_tools::mapFloat ( float  x,
float  in_min,
float  in_max,
float  out_min,
float  out_max 
)
inline

Similar to Arduino map function but using floats.

Parameters
x
in_min
in_max
out_min
out_max
Returns

Variable Documentation

◆ B64index

const int B64index[256]
static
Initial value:
= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 62, 63, 62, 62, 63, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51}

◆ DEFAULT_AGENT

const char* DEFAULT_AGENT
static
Initial value:
=
"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

◆ encoding_table

char encoding_table[]
static
Initial value:
= {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}

◆ freq_table

const Nano_BLE_freq_info freq_table[]
static
Initial value:
= {
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV8, 32.0 / 8},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV10, 32 / 10},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV11, 32.0 / 11},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV15, 32.0 / 15},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV16, 32.0 / 16},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV21, 32.0 / 21},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV23, 32.0 / 23},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV30, 32.0 / 30},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV31, 32.0 / 31},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV32, 32.0 / 32},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV42, 32.0 / 42},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV63, 32.0 / 63},
{I2S_CONFIG_MCKFREQ_MCKFREQ_32MDIV125, 32.0 / 125}}

◆ ima_index_table

const int16_t ima_index_table[16]
Initial value:
{
-1, -1, -1, -1, 2, 4, 6, 8,
-1, -1, -1, -1, 2, 4, 6, 8
}

◆ ima_step_table

const int32_t ima_step_table[89]
Initial value:
{
7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
}

◆ methods

const char* methods[]
static
Initial value:
= {"?", "GET", "HEAD", "POST",
"PUT", "DELETE", "TRACE", "OPTIONS",
"CONNECT", "PATCH", nullptr}

◆ ratio_table

const Nano_BLE_ratio_info ratio_table[]
static
Initial value:
= {
{I2S_CONFIG_RATIO_RATIO_32X, 32.0}, {I2S_CONFIG_RATIO_RATIO_48X, 48.0},
{I2S_CONFIG_RATIO_RATIO_64X, 64.0}, {I2S_CONFIG_RATIO_RATIO_96X, 96.0},
{I2S_CONFIG_RATIO_RATIO_128X, 128.0}, {I2S_CONFIG_RATIO_RATIO_192X, 192.0},
{I2S_CONFIG_RATIO_RATIO_256X, 256.0}, {I2S_CONFIG_RATIO_RATIO_384X, 384.0},
{I2S_CONFIG_RATIO_RATIO_512X, 512.0}}