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. 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 of 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
 Reading Analog Data using a timer and the Arduino analogRead() method. More...
 
class  AnalogConfig
 Configuration for Analog Reader. 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...
 
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  AudioEffects
 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  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  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. 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  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  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  AudioUtils
 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. 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  CallbackBufferedStream
 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  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  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
 Dummpy 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  ConvertedStream
 Construct a new Converted Stream object. Both the data of the read and write operations will be converted with the help of the indicated converter. 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  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  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  DecoderNOP
 Dummy Decoder which does nothing. More...
 
class  DefaultGuitarChannel
 Audio Processing Channel based on a Input Stream and an Audio Effects Chain. This can be used todo implement a Guitar Amplifier. 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 AudioEffect. We mix the actual signal with the delayed signal. 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  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  EncodedAudioStream
 A more natural Stream class to process encoded data (aac, wav, mp3...). More...
 
class  Encoder8Bit
 Encoder8Bits - Condenses 16 bit PCM data stream to 8 bits 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  ExternalBufferStream
 A Stream backed by a SingleBufferStream. We assume that the memory is externally allocated and that we can submit only full buffer records, which are then available for reading. 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  FFTDriverESP32FFT
 Driver for ESP32-FFT https://github.com/pschatzmann/esp32-fft
More...
 
class  FFTDriverKissFFT
 Driver for RealFFT. More...
 
class  FFTDriverRealFFT
 Driver for RealFFT. 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  FormatConverter
 Converts e.g. 24bit data to the indicated smaller or bigger data type. More...
 
class  FormatConverterStream
 Converter which converts bits_per_sample and channels. 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  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  I2S
 A Simple I2S interface class for multiple Architectures that supports the reading and writing with a defined data type. More...
 
class  I2SBase
 Basic I2S API - for the ESP32. If we receive 1 channel, we expand the result to 2 channels. More...
 
class  I2SBasePIO
 Basic I2S API - for the ... More...
 
class  I2SConfig
 configuration for all common i2s settings 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
 ICYStream for all environment except ESP32. More...
 
class  ICYStreamDefault
 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
 ID3 verion 1 TAG (130 bytes) More...
 
struct  ID3v1Enhanced
 ID3 verion 1 Enchanced TAG (227 bytes) More...
 
struct  ID3v2
 ID3 verion 2 TAG Header (10 bytes) More...
 
struct  ID3v2Frame
 ID3 verion 2 Tag. More...
 
struct  ID3v2FrameString
 ID3 verion 2 Tag. More...
 
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  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. It works only on little endian machines! 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. 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. 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...
 
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  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  PWMAudioStreamAVR
 Experimental: Audio output to PWM pins for the AVR. The AVR supports only up to 2 channels. More...
 
class  PWMAudioStreamBase
 Common functionality for PWM output. More...
 
class  PWMAudioStreamESP32
 Audio output to PWM pins for the ESP32. The ESP32 supports up to 16 channels. More...
 
class  PWMAudioStreamMBED
 Audio output to PWM pins for MBED based Arduino implementations. More...
 
class  PWMAudioStreamPico
 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...
 
struct  PWMConfig
 Configuration data for PWM audio output. More...
 
class  Queue
 FIFO Queue which is based on a List. More...
 
class  RAWDecoder
 RAWDecoder - Actually this class does no encoding or decoding at all. It just passes on the data. The reason that this class exists is that we can use the same processing chain for different file types and just replace the decoder. More...
 
class  RAWEncoder
 RAWDecoder - Actually this class does no encoding or decoding at all. It just passes on the data. More...
 
class  Rectange
 Rectange FFT Window function. More...
 
class  Resample
 A simple implementation which changes the sample rate by the indicated integer factor. To downlample we calculate the avarage of n (=factor) samples. To upsample we interpolate the missing samples. If the indicated factor is positive we upsample if it is negative we downsample. More...
 
class  ResampleBuffer
 Resampler which uses an internal buffer. We can write the original data and then access the data as array. More...
 
struct  ResampleConfig
 Configuration for ResampleStream. More...
 
class  ResampleParameterEstimator
 Class to determine a combination of upsample and downsample rates to achieve any ratio. More...
 
class  ResampleStream
 Flexible Stream class which can be used to resample audio data between different sample rates. 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...
 
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  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  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  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  TimerAlarmRepeatingAVR
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingDef
 Common Interface definition for TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingESP32
 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  TimerAlarmRepeatingESP8266
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingMBED
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingRP2040
 Repeating Timer functions for repeated execution: Plaease use the typedef TimerAlarmRepeating. More...
 
class  TimerAlarmRepeatingSTM32
 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
 URLStream implementation for all envionments except ESP32. More...
 
class  URLStreamDefault
 Represents the content of a URL as Stream. We use the WiFi.h API. More...
 
class  UserCallback
 Internal class to manage User callbacks. An optinal parameter can be passed to the callback method. 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
 Output PWM object on which we can apply some volume settings. To work properly the class needs to know the bits per sample and number of channels! 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...
 

Typedefs

typedef File AudioFile
 
typedef sdfat::SdFs AudioFs
 
typedef void(* AudioServerDataCallback) (Print *out)
 Calback which writes the sound data to the stream.
 
typedef int16_t effect_t
 
typedef float effectsuite_t
 
typedef RP2040BitBangI2SCore1 I2SBase
 
typedef void(* my_repeating_timer_callback_t) (void *obj)
 
typedef PinInfoESP32 PinInfo
 
typedef PWMAudioStreamAVR PWMAudioStream
 
typedef bool(* PWMCallbackType) (uint8_t channels, int16_t *data)
 
typedef void(* repeating_timer_callback_t) (void *obj)
 
typedef sdfat::SdSpiConfig SdSpiConfig
 
typedef void(* simple_callback) (void)
 
typedef TimerAlarmRepeatingAVR TimerAlarmRepeating
 

Enumerations

enum  A2DPNoData { A2DPSilence , A2DPWhoosh }
 
enum  A2DPStartLogic { StartWhenBufferFull , StartOnConnect }
 
enum  AudioType : uint8_t { PCM , MP3 , AAC , WAV }
 
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
}
 
enum  I2SSignalType { Digital , Analog , PDM }
 
enum  ID3TypeSelection {
  SELECT_ID3V1 =0b001 , SELECT_ID3V2 =0b010 , SELECT_ID3 =0b011 , SELECT_ICY =0b100 ,
  SELECT_ANY =0b111
}
 
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  ResamplePrecision { Low , Medium , High , VeryHigh }
 
enum  ResampleScenario { UPSAMPLE , UPSAMPLE_EXACT , DOWNSAMPLE , DOWNSAMPLE_EXACT }
 
enum  RxTxMode { UNDEFINED_MODE =0 , TX_MODE =1 , RX_MODE =2 , RXTX_MODE =3 }
 Audio Source (TX_MODE) or Audio Sink (RX_MODE)
 
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...
 
int getCodec2Mode (int bits_per_second)
 Convert bits per sample to Codec2 mode.
 
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
 
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)
 
static IRAM_ATTR void timerCallback0 ()
 
static IRAM_ATTR void timerCallback1 ()
 
static IRAM_ATTR void timerCallback2 ()
 
static IRAM_ATTR void timerCallback3 ()
 
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 ()
 

Variables

RingBuffer< uint8_t > * a2dp_buffer = nullptr
 
A2DPStreamA2DPStream_self =nullptr
 
const char * ACCEPT = "Accept"
 
const char * ACCEPT_ALL = "*/*"
 
const char * ACCEPT_ENCODING = "Accept-Encoding"
 
static PWMAudioStreamAVRaccessAudioPWM = nullptr
 
static PWMAudioStreamESP32accessAudioPWM = 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]
 
const char * CHUNKED = "chunked"
 
const char * CON_CLOSE = "close"
 
const char * CON_KEEP_ALIVE = "keep-alive"
 
const char * CONNECTION = "Connection"
 
const char * CONTENT_LENGTH = "Content-Length"
 
const char * CONTENT_TYPE = "Content-Type"
 
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
 
const Nano_BLE_freq_info freq_table []
 
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" }
 String array with genres.
 
const char * HOST_C = "Host"
 
const int i2s_buffer_size = 1024
 
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"}
 
const char * id3_v2_tags [] = {"TALB", "TOPE", "TIT2", "TCON"}
 Relevant v2 Tags

 
const int ID3FrameSize = 11
 
const char * IDENTITY = "identity"
 
static effectsuite_t ** interpolationTable = nullptr
 Table of interpolation values as a 2D array indexed by interpolationTable[pointIndex][alphaIndex].
 
volatile bool is_a2dp_active = false
 
const char * LOCATION = "Location"
 
const char * MetaDataTypeStr [] = {"Title", "Artist", "Album", "Genre","Name", "Description"}
 Test Description for meta info.
 
const char * methods [] = {"?","GET","HEAD","POST","PUT","DELETE","TRACE","OPTIONS","CONNECT","PATCH",nullptr}
 
const char * mime_pcm = "audio/pcm"
 
static portMUX_TYPE mutex_logger = portMUX_INITIALIZER_UNLOCKED
 
audio_tools::TfLiteAudioErrorReporter my_error_reporter
 
AudioKitStreampt_AudioKitStream = nullptr
 
const Nano_BLE_ratio_info ratio_table []
 
TimerAlarmRepeatingESP8266self
 
class AudioMP34DT05selfAudioMP34DT05 = nullptr
 
class audio_tools::UserCallbacksimpleUserCallback = nullptr
 
static uint32_t spdif_buf [SPDIF_BUF_ARRAY_SIZE]
 
static uint32_t * spdif_ptr
 
const char * SUCCESS = "Success"
 
TimerAlarmRepeatingMBEDtimerAlarmRepeating = nullptr
 
TimerAlarmRepeatingAVRtimerAlarmRepeatingRef = nullptr
 
class audio_tools::TimerCallbacktimerCallbackArray = nullptr
 
const char * TRANSFER_ENCODING = "Transfer-Encoding"
 
static const char * UNDERFLOW_MSG = "data underflow"
 
const char * USER_AGENT = "User-Agent"
 
const char * wav_mime = "audio/wav"
 

Detailed Description

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

Parser for MP3 ID3 Meta Data: The goal is to implement a simple API which provides the title, artist, albmum and the Genre.

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 audio_tools::__attribute__ ( (packed)  )

Opus header.

Simplified header w/o comments.

◆ defaultPWMAudioOutputCallback()

void IRAM_ATTR audio_tools::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

const Nano_BLE_freq_info audio_tools::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

const Nano_BLE_ratio_info audio_tools::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 }
}