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  A2DPChannelConverter
 Covnerts the data from T src[][2] to a Frame array. More...
 
class  A2DPConfig
 Configuration for A2DPStream. More...
 
class  A2DPStream
 Stream support for A2DP: begin(TX_MODE) uses a2dp_source - 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! 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 AudioBaseInfo and provides the handlig of AudioBaseInfo changes. More...
 
class  AACDecoderHelix
 AAC Decoder using libhelix: https://github.com/pschatzmann/arduino-libhelix This is basically just a simple wrapper to provide AudioBaseInfo and AudioBaseInfoDependent. 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  AdapterAudioStreamToAudioPrint
 Wrapper which converts a AudioStream to a AudioPrint. More...
 
class  AdapterPrintToAudioPrint
 Wrapper which converts a Print to a AudioPrint. 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  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  AnalogConfig
 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  AnalogDriverArduino
 Please use the AnalogAudioStream: Reading Analog Data using a timer and the Arduino analogRead() method. More...
 
class  AnalogDriverBase
 
class  AnalogDriverESP32
 Please use AnalogAudioStream: A very fast ADC and DAC using the ESP32 I2S interface. More...
 
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 Pins e.g. to implement a simple navigation control or volume control with buttons. More...
 
struct  AudioBaseInfo
 Basic Audio information which drives e.g. I2S. More...
 
class  AudioBaseInfoDependent
 Supports changes to the sampling rate, bits and channels. More...
 
class  AudioBaseInfoSource
 Supports the subscription to audio change notifications. 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  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  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  AudioEncoderServer
 A simple Arduino Webserver which streams the audio using the indicated encoder.. This class is based on the WiFiServer class. All you need to do is to provide the data with a callback method or from a Stream. More...
 
class  AudioESP32FFT
 AudioFFT using RealFFT. 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  AudioInfoLAME
 LAME parameters. 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  AudioKitStreamAdapter
 Converts a AudioKit into a AudioStream, so that we can pass it to the converter. More...
 
class  AudioKitStreamConfig
 Configuration for AudioKitStream: we use as subclass of I2SConfig. More...
 
class  AudioLogger
 A simple Logger that writes messages dependent on the log level. 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  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();. More...
 
class  AudioPlayer
 Implements a simple audio player which supports the following commands: More...
 
class  AudioPrint
 Abstract Audio Ouptut class. More...
 
class  AudioRealFFT
 AudioFFT using RealFFT. More...
 
struct  AudioSendData
 Protocol Record for Data. More...
 
class  AudioServer
 A simple Arduino Webserver which streams the result This class is based on the WiFiServer class. All you need to do is to provide the data with a callback method or from an Arduino Stream: in -copy> client. 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  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 Connect the SD card to the following pins: 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 to the following pins: 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  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  AudioStreamX
 Same as AudioStream - but we do not have any abstract methods. 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  AudioWAVServer
 A simple Arduino Webserver which streams the audio as WAV data. This class is based on the AudioEncodedServer class. All you need to do is to provide the data with a callback method or from a Stream. 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  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  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...
 
class  BitVector
 Space optimized vector which stores the boolean values as bits. More...
 
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  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  CallbackVolumeControl
 Provide the volume function as callback method: This is easy to use e.g together with a lamda function! 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  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  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  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  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  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  CsvStream
 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  Decoder8Bit
 Decoder8Bit - Converts an 8 Bit Stream into 16Bits. 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  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  EncodedAudioPrint
 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  Encoder8Bit
 Encoder8Bits - Condenses 16 bit PCM data stream to 8 bits data. More...
 
class  EncoderFloat
 EncoderFloats - Encodes 16 bit PCM data stream to floats data. 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. 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  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  FilePrint
 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 setOutputStream() 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  FormatConverterStream
 Converter which converts bits_per_sample and channels. 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
 Mixer which combines 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  Hann
 Hann FFT Window function. More...
 
class  HardwareSerial
 
class  HexDumpStream
 Creates a Hex Dump. 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...
 
class  I2SConfig
 configuration for all common i2s settings More...
 
class  I2SDriverESP32
 Basic I2S API - for the ESP32. If we receive 1 channel, we expand the result to 2 channels. 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. More...
 
class  I2SDriverRP2040
 Basic I2S API - for the ... 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 just add a write and read buffer and pass some parameters to the STM32 API! 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...
 
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_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  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  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  Maximilian
 AudioTools integration with Maximilian. More...
 
class  MeasuringStream
 Class which measures the truput. 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  MemoryPrint
 Prints 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  MetaDataPrint
 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  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
 Mozzi Configuration for input or output stream. More...
 
class  MozziGenerator
 Support for https://sensorium.github.io/Mozzi/ Define your updateControl() method. Define your updateAudio() method. Start by calling begin(control_rate) do not call audioHook(); in the loop ! More...
 
class  MozziStream
 We use the output functionality of Mozzi to output audio data. We expect the data as array of int16_t with one or two channels. Though we support the setting of a sample rate, we recommend to use the default sample rate from Mozzi which is available with the AUDIO_RATE define. More...
 
class  MP3DecoderHelix
 MP3 Decoder using libhelix: https://github.com/pschatzmann/arduino-libhelix This is basically just a simple wrapper to provide AudioBaseInfo and AudioBaseInfoDependent. 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...
 
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  NoiseGenerator
 Generates a random noise sound with the help of rand() function. More...
 
class  NOPConverter
 Dummy converter which does nothing. More...
 
class  NullStream
 The Arduino Stream which provides silence and simulates a null device when used as audio target. 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. 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
 OggContainerDecoder - Ogg Container. Decodes a packet from an Ogg container. The Ogg begin segment contains the AudioBaseInfo structure. You can subclass and overwrite the beginOfSegment() method to implement your own headers. More...
 
class  OggContainerEncoder
 OggContainerEncoder - Ogg Container. Encodes a packet for an Ogg container. The Ogg begin segment contains the AudioBaseInfo structure. You can subclass ond overwrite the writeHeader() method to implement your own header logic. More...
 
class  OpusAudioDecoder
 OpusDecoder. Depends on https://github.com/pschatzmann/arduino-libopus.git. More...
 
class  OpusAudioEncoder
 OpusDecoder - Actually this class does no encoding or decoding at all. It just passes on the data. Dependent 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. More...
 
class  OpusOggEncoder
 Opus Encoder which uses the Ogg Container: see https://datatracker.ietf.org/doc/html/rfc7845. More...
 
struct  OpusSettings
 Setting for Opus Decoder. More...
 
class  OutputMixer
 Mixing of multiple outputs to one final output. More...
 
class  Parameter
 A constant value. More...
 
struct  PicoChannelOut
 Rasperry Pico Channel to pin assignments. More...
 
struct  PinInfoESP32
 Information for a PIN. More...
 
class  PitchShift
 Shifts the pitch by the indicated step size: e.g. 2 doubles the pitch. More...
 
struct  PitchShiftInfo
 Configuration for PitchShiftStream: set the pitch_shift to define the shift. More...
 
class  PitchShiftStream
 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  PWMAudioStream
 Common functionality for PWM output. Please use the PWMAudioStream 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  PWMDriverRP2040
 Audio output for the Rasperry Pico to PWM pins. The Raspberry Pi Pico has 8 PWM blocks/slices(1-8) and each PWM block provides up to two PWM outputs(A-B). 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  QueueFreeRTOS
 FIFO Queue which is based on a List. More...
 
class  QueueLockFree
 Lock Free Queue. More...
 
class  QueueStream
 AudioOutput 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...
 
class  Rectange
 Rectange FFT Window function. 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  RingBufferStream
 A Stream backed by a Ringbuffer. We can write to the end and read from the beginning of the stream. More...
 
class  RTPPCMAudioInfo
 PCMInfo subclass which provides the audio information from the AudioBaseInfo parameter. More...
 
class  RTPStreamPCMInfo
 PCMInfo subclass which provides the audio information from the related AudioStream. More...
 
class  RTSPSourceAudioStream
 Simple Facade which can turn AudioStream into a IAudioSource. This way we can e.g. use an I2SStream as source to stream data. 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. 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
 
class  SimpleContainerDecoder
 Decodes the provided data from the DAT and CFG segments. More...
 
class  SimpleContainerEncoder
 Wraps the encoded data into CFG and DAT segments so that we can recover the audio configuration and orignial segments if this is relevant. More...
 
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 based using degress 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  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 double (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  SPDIFStream
 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  StdMutex
 Mutex implemntation based on std::mutex. More...
 
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.
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
 Pitch shifter effect class based on the Lent algorithm. 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  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  SynchronizedBufferRTOS
 Buffer implementation which is using a FreeRTOS StreamBuffer. 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  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 of the audio data to limit it to the indicated sample rate. More...
 
struct  ThrottleConfig
 Configure Throttle setting. 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  TimerAlarmRepeatingDriverESP32
 Repeating Timer functions for simple scheduling of repeated execution. The basic logic is taken from https://www.toptal.com/embedded/esp32-audio-sampling. Plaease use the typedef TimerAlarmRepeating. More...
 
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  TimerAlarmRepeatingDriverRP2040
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingDriverSTM32
 STM32 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerCallback
 Internal class to manage the different timer callbacks for the 4 hardware timers. 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  Tremolo
 Tremolo AudioEffect. More...
 
class  Triangle
 Triangle FFT Window function. More...
 
class  UDPStream
 
class  Url
 URL parser which breaks a full url string up into its individual parts. 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  UserCallback
 Internal class to manage User callbacks. An optinal parameter can be passed to the callback method. 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  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  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  VolumePrint
 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  VorbisDecoder
 Vorbis Streaming Decoder using https://github.com/pschatzmann/arduino-libvorbis-idec https://github.com/pschatzmann/arduino-libopus.git. 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
 WAVDecoder - We parse the header data on the first record and send the sound data to the stream which was indicated in the constructor. Only WAV files with WAV_FORMAT_PCM are supported! More...
 
class  WAVEncoder
 A simple WAV file encoder. More...
 
class  WAVHeader
 Parser for Wav header data for details see https://de.wikipedia.org/wiki/RIFF_WAVE. More...
 
class  Welch
 Welch FFT Window 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 AnalogDriver = AnalogDriverArduino
 AnalogAudioStream.
 
using AudioEffectStream = AudioEffectStreamT< effect_t >
 EffectsStream using effect_t (=int16_t) samples. More...
 
typedef File AudioFile
 
typedef sdfat::SdFs AudioFs
 
typedef void(* AudioServerDataCallback) (Print *out)
 Calback which writes the sound data to the stream.
 
template<typename T >
using CallbackBufferedStream = QueueStream< T >
 
using Chart = ChartT< int16_t >
 
typedef int16_t effect_t
 
typedef float effectsuite_t
 
using I2SDriver = I2SDriverESP32
 
using JupyterAudio = JupyterAudioT< int16_t >
 
using Mutex = MutexBase
 
typedef void(* my_repeating_timer_callback_t) (void *obj)
 
typedef PinInfoESP32 PinInfo
 
using Pins = Vector< int >
 Pins.
 
typedef bool(* PWMCallbackType) (uint8_t channels, int16_t *data)
 
using PWMDriver = PWMDriverAVR
 
typedef void(* repeating_timer_callback_t) (void *obj)
 
typedef sdfat::SdSpiConfig SdSpiConfig
 
typedef void(* simple_callback) (void)
 
using TimerAlarmRepeatingDriver = TimerAlarmRepeatingDriverAVR
 use TimerAlarmRepeating!
 

Enumerations

enum  A2DPNoData { A2DPSilence , A2DPWhoosh }
 
enum  A2DPStartLogic { StartWhenBufferFull , StartOnConnect }
 
enum  AudioType : uint8_t { PCM , MP3 , AAC , WAV }
 
enum  FileMode { FILE_READ ='r' , FILE_WRITE ='w' , FILE_APPEND ='a' }
 
enum  FillLeftAndRightStatus { Auto , LeftIsEmpty , RightIsEmpty }
 
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_LONG , I2S_PCM_SHORT
}
 I2S Formats.
 
enum  I2SSignalType { Digital , Analog , PDM }
 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 }
 
enum  MetaDataType {
  Title , Artist , Album , Genre ,
  Name , Description
}
 Type of meta info.
 
enum  ParseStatus {
  TagNotFound , PartialTagAtTail , TagFoundPartial , TagFoundComplete ,
  TagProcessed
}
 current status of the parsing
 
enum  RecordType : uint8_t {
  Undefined , Begin , Send , Receive ,
  End
}
 
enum  RxTxMode { UNDEFINED_MODE =0 , TX_MODE =1 , RX_MODE =2 , RXTX_MODE =3 }
 Audio Source (TX_MODE) or Audio Sink (RX_MODE)
 
enum  SeekMode { SeekSet = 0 , SeekCur = 1 , SeekEnd = 2 }
 
enum  TimerFunction { DirectTimerCallback , TimerCallbackInThread , SimpleThreadLoop }
 
enum  TimeUnit { MS , US }
 Time Units.
 
enum  TransmitRole : uint8_t { Sender , Receiver }
 
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 uint16_t convert8DAC (int64_t value, int value_bits_per_sample)
 
void defaultPWMAudioOutputCallback ()
 separate method that can be defined as friend so that we can access protected information More...
 
void delay (uint64_t ms)
 Waits for the indicated milliseconds.
 
int getCodec2Mode (int bits_per_second)
 Convert bits per sample to Codec2 mode.
 
INLINE_VAR NBuffer< uint8_t > i2s_buffer (i2s_buffer_size, 5)
 
void I2S_IRQHandler (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.
 
uint64_t millis ()
 Returns the milliseconds since the start.
 
float operator* (float one, float16 two)
 
float operator* (float16 one, float two)
 
float operator* (float16 one, float16 two)
 
float operator+ (float one, float16 two)
 
float operator+ (float16 one, float two)
 
float operator+ (float16 one, float16 two)
 
float operator- (float one, float16 two)
 
float operator- (float16 one, float two)
 
float operator- (float16 one, float16 two)
 
float operator/ (float one, float16 two)
 
float operator/ (float16 one, float two)
 
float operator/ (float16 one, float16 two)
 
template<typename T >
readSample (Stream *p_stream)
 guaranteed to return the requested data
 
static IRAM_ATTR void timerCallback0 ()
 
static IRAM_ATTR void timerCallback1 ()
 
static IRAM_ATTR void timerCallback2 ()
 
static IRAM_ATTR void timerCallback3 ()
 
INLINE_VAR const char * toStr (MetaDataType t)
 Converts the MetaDataType to a string.
 
static IRAM_ATTR void userCallback0 ()
 
static IRAM_ATTR void userCallback1 ()
 
static IRAM_ATTR void userCallback2 ()
 
static IRAM_ATTR void userCallback3 ()
 
void waitFor (bool &flag)
 wait for flag to be active
 
void waitFor (HardwareSerial &out)
 wait for the Output to be ready

 

Variables

static RingBuffer< uint8_t > * a2dp_buffer = nullptr
 
static A2DPStreamA2DPStream_self =nullptr
 
INLINE_VAR const char * ACCEPT = "Accept"
 
INLINE_VAR const char * ACCEPT_ALL = "*/*"
 
INLINE_VAR const char * ACCEPT_ENCODING = "Accept-Encoding"
 
static PWMDriverAVRaccessAudioPWM = nullptr
 
static PWMDriverESP32accessAudioPWM = nullptr
 
AudioBaseInfoDependentaudioChangeAACHelix =nullptr
 
AudioBaseInfoDependentaudioChangeFDK = nullptr
 
AudioBaseInfoDependentaudioChangeMAD
 
AudioBaseInfoDependentaudioChangeMP3Helix =nullptr
 
MusicalNotes AudioFFTNotes
 
static const int16_t * bmc_tab = (int16_t *)bmc_tab_uint
 
static const uint16_t bmc_tab_uint [256]
 
INLINE_VAR const char * CHUNKED = "chunked"
 
INLINE_VAR const char * CON_CLOSE = "close"
 
INLINE_VAR const char * CON_KEEP_ALIVE = "keep-alive"
 
INLINE_VAR const char * CONNECTION = "Connection"
 
INLINE_VAR const char * CONTENT_LENGTH = "Content-Length"
 
INLINE_VAR const char * CONTENT_TYPE = "Content-Type"
 
INLINE_VAR const char * DEFAULT_AGENT = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
 
audio_tools::PWMConfig default_config
 
tflite::ErrorReporter * error_reporter = &my_error_reporter
 
ESPNowStreamESPNowStreamSelf = nullptr
 
INLINE_VAR const Nano_BLE_freq_info freq_table []
 
INLINE_VAR 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" }
 
INLINE_VAR const char * HOST_C = "Host"
 
::I2S I2S
 
INLINE_VAR const int i2s_buffer_size = 1024
 
INLINE_VAR 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_LONG","I2S_PCM_SHORT"}
 
INLINE_VAR const char * id3_v2_tags [] = {"TALB", "TOPE", "TPE1", "TIT2", "TCON"}
 
INLINE_VAR const int ID3FrameSize = 11
 
INLINE_VAR const char * IDENTITY = "identity"
 
static effectsuite_t ** interpolationTable = nullptr
 Table of interpolation values as a 2D array indexed by interpolationTable[pointIndex][alphaIndex].
 
static bool is_a2dp_active = false
 
INLINE_VAR const char * LOCATION = "Location"
 
INLINE_VAR const char * MetaDataTypeStr [] = {"Title", "Artist", "Album", "Genre","Name", "Description"}
 
INLINE_VAR const char * methods [] = {"?","GET","HEAD","POST","PUT","DELETE","TRACE","OPTIONS","CONNECT","PATCH",nullptr}
 
static const char * mime_pcm = "audio/pcm"
 Mime type for PCM.
 
static portMUX_TYPE mutex_logger = portMUX_INITIALIZER_UNLOCKED
 
audio_tools::TfLiteAudioErrorReporter my_error_reporter
 
AudioKitStreampt_AudioKitStream = nullptr
 
INLINE_VAR const Nano_BLE_ratio_info ratio_table []
 
INLINE_VAR const char * RxTxModeNames [] ={"UNDEFINED_MODE","TX_MODE","RX_MODE","RXTX_MODE" }
 
static FS SD
 
static FS SDFAT
 
TimerAlarmRepeatingDriverESP8266self
 
class AudioMP34DT05selfAudioMP34DT05 = nullptr
 
static HardwareSerial Serial
 
class audio_tools::UserCallbacksimpleUserCallback = nullptr
 
static uint32_t spdif_buf [SPDIF_BUF_ARRAY_SIZE]
 
static uint32_t * spdif_ptr
 
INLINE_VAR const char * SUCCESS = "Success"
 
static TimerAlarmRepeatingDriverMBEDtimerAlarmRepeating = nullptr
 
static TimerAlarmRepeatingDriverSTM32timerAlarmRepeating = nullptr
 
static TimerAlarmRepeatingDriverAVRtimerAlarmRepeatingRef = nullptr
 
class audio_tools::TimerCallbacktimerCallbackArray = nullptr
 
INLINE_VAR const char * TRANSFER_ENCODING = "Transfer-Encoding"
 
INLINE_VAR const char * USER_AGENT = "User-Agent"
 
INLINE_VAR const char * wav_mime = "audio/wav"
 

Detailed Description

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

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

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

void IRAM_ATTR defaultPWMAudioOutputCallback ( )

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

timer callback: write the next frame to the pins

◆ I2S_IRQHandler()

void audio_tools::I2S_IRQHandler ( void  )

I2S Event handler

Variable Documentation

◆ freq_table

INLINE_VAR const Nano_BLE_freq_info freq_table[]
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 }
}

◆ ratio_table

INLINE_VAR const Nano_BLE_ratio_info ratio_table[]
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 }
}