arduino-audio-tools
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123456]
 CA2DPConfigConfiguration for A2DPStream
 CAbstractMetaDataCommon Metadata methods
 CAbstractParameterBase class for all parameters
 CAbstractSynthesizerChannelDefines 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
 CAudioActions::Action
 CAdafruit_USBD_Interface
 CADTSParser
 CAllocatorMemory allocateator which uses malloc
 CAllocSize
 CAnalogDriverBase
 CAppropriateSumType< T >We reduce the number of samples in a datastream by summing (binning) or averaging. This will result in the same number of channels but binSize times less samples. If Average is true the sum is divided by binSize
 CAppropriateSumType< int16_t >
 CAppropriateSumType< int24_t >
 CAppropriateSumType< int32_t >
 CAppropriateSumType< int8_t >
 CArray< T, LEN >
 CArray< ffft::OscSinCos, TRIGO_OSC_ARR_SIZE >
 Caudio_feedback_params_t
 CAudioActionsA simple class to assign functions to gpio pins e.g. to implement a simple navigation control or volume control with buttons
 CAudioClientRTSPA simple RTSPClient using https://github.com/pschatzmann/arduino-live555
 CUSBDeviceAudioAPI::audiod_function_t
 CAudioEffectAbstract Base class for Sound Effects
 CAudioEffectCommon
 CAudioFFTResultResult of the FFT
 CAudioHeaderCommon Header for all records
 CAudioInfoBasic Audio information which drives e.g. I2S
 CAudioInfo
 CAudioInfoSourceSupports the subscription to audio change notifications
 CAudioInfoSupportSupports changes to the sampling rate, bits and channels
 CAudioServerT< Client, Server >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
 CAudioSourceAbstract Audio Data Source for the AudioPlayer which is used by the Audio Players
 CAudioTimeTools for calculating timer values
 CAVIMainHeader
 CAVIStreamHeader
 CBaseBuffer< T >Shared functionality of all buffers
 CBaseBuffer< uint8_t >
 CBaseConverterAbstract Base class for Converters A converter is processing the data in the indicated array
 CBitmapInfoHeader
 CBLEAdvertisedDeviceCallbacks
 CBLECharacteristicCallbacks
 CBLEClientCallbacks
 CBLEServerCallbacks
 CBufferedArray< T >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
 CByteBufferA resizable buffer of bytes which manages the available bytes
 CChannelConverter< T >Increasing or decreasing the number of channels
 CChannelEnhancer< T >Increases the channel count
 CChannelSplitOutput::ChannelSelectionOutputDef
 CChannelsSelectOutput::ChannelSelectionOutputDef
 CChartT< T >Displays audio in a Jupyter as chart Just wrapps a stream to provide the chart data
 CChorus
 CCommonHeader
 CContainerTargetContainerTarget: forwards requests to both the output and the encoder/decoder and sets up the output chain for Containers. We also manage the proper sequence of the output classes
 CDACOutOutput method for DeltaSigma DAC
 CDataNode
 CDebouncerHelper class to debounce user input from a push button
 CDelayEffectBaseA Base class for delay based digital effects. Provides the basic methods that are shared amongst Flanger, Delay, Chorus and Phaser
 CI2SDriverESP32V1::DriverCommon
 CDriverPWMBaseBase Class for all PWM drivers
 CdspMinimal dsp base class needed by Faust
 Cdsp_memory_managerMemory manager which uses psram when it is available
 CDynArray< T >
 CDynArray< DataType >
 CDynArray< ffft::OscSinCos >
 CDynArray< long >
 CEcho
 CEquilizer3Bands::EQSTATE
 CESPNowStreamConfigConfiguration for ESP-NOW protocolö.W
 CFadeFade 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
 CUSBDeviceAudioAPI::audiod_function_t::feedback
 CFFTBinAnd individual FFT Bin
 CFFTDisplay
 CFFTDriverAbstract Class which defines the basic FFT functionality
 CFFTReal< DT >
 CFFTReal< float >
 CFFTRealFixLen< LL2 >
 CFFTRealFixLenParam
 CFFTRealPassDirect< PASS >
 CFFTRealPassInverse< PASS >
 CFFTRealSelect< P >
 CFFTRealUseTrigo< ALGO >
 CAnalogDriverESP32V1::FIFO< T >Custom FIFO class
 CAnalogDriverESP32V1::FIFO< ADC_DATA_TYPE >
 CFilter< T >Abstract filter interface definition;
 CFilter< FT >
 Cfloat16Stores float values with 2 bytes
 Cfloat32Stores float values as uint32_t so that we can use memory allocated with MALLOC_CAP_32BIT
 CFloatAudio
 CFreeVerb
 CFSEumlate FS using C++ or Posix functions
 CHLSParserSimple Parser for HLS data. We select the entry with min bandwidth
 CHttpHeaderIn 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
 CHttpHeaderLineA individual key - value header line
 CHttpLineReaderWe read a single line. A terminating 0 is added to the string to make it compliant for c string functions
 CI2SDriverESP32Basic I2S API - for the ESP32. If we receive 1 channel, we expand the result to 2 channels
 CI2SDriverESP32V1Basic I2S API for the ESP32 (using the new API). https://docs.espressif.com/projects/esp-idf/en/v5.0.1/esp32/api-reference/peripherals/i2s.html#i2s-communication-mode
 CI2SDriverESP8266Basic I2S API - for the ESP8266 Only 16 bits are supported !
 CI2SDriverNanoBLEBasic I2S API - for the Arduino Nano BLE Sense See https://content.arduino.cc/assets/Nano_BLE_MCU-nRF52840_PS_v1.1.pdf Douplex mode (RXTX_MODE) is currently not supported, but it should be quite easy to implement
 CI2SDriverSAMDBasic I2S API - for the SAMD
 CIAudioSource
 CICYUrlSetupResolve icy-metaint from HttpRequest and execute metadata callbacks
 CID3v1
 CID3v1Enhanced
 CID3v2
 CMetaDataFilter::ID3v2ID3 verion 2 TAG Header (10 bytes)
 CID3v2Frame
 CID3v2FrameString
 CIMAState
 Cint24_3bytes_t24bit integer which is used for I2S sound processing. The values are really using 3 bytes. It works only on little endian machines!
 Cint24_4bytes_t24bit 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
 CList< T >::Iterator
 CVector< T >::iteratorIterator for the Vector class
 CJCRev
 CSynthesizer::KeyParameter
 CLastSampleFaderIf 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
 CLastSampleFaderT< T >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
 CLastSampleFaderT< audio_tools::int24_4bytes_t >
 CLastSampleFaderT< int16_t >
 CLastSampleFaderT< int32_t >
 CLEDOutputLED output using the FastLED library
 CLEDOutputConfig
 CLEDOutputUnoR4LED output using the R4 LED matrix library
 CLEDOutputUnoR4Config
 CLentPitShift
 CList< T >Double linked list
 CList< audio_tools::DataNode * >
 CList< audio_tools::HttpHeaderLine * >
 CList< String >
 CLockA simple RIA locking class for the ESP32 using _lock_t
 CLockGuardRAII 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
 CMedianFilter< T >::MedianFilter_t
 CMedianFilter< T >::MedianNode_t
 CMediaSink
 CMemoryManagerMemoryManager 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
 CMetaMinimial implementtion of Meta which just ignores the data
 CMetaDataID3BaseID3 Meta Data Common Functionality
 CModulationBaseClassClass 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
 CMP4AtomRepresents a single MPEG4 atom
 CMP4ParseBuffer
 CMusicalNotesDetermination of the frequency of a music note
 CMutexBaseEmpty Mutex implementation which does nothing
 CNano_BLE_freq_infoMapping Frequency constants to available frequencies
 CNano_BLE_ratio_infoMapping from Ratio Constants to frequency ratios
 CList< T >::Node
 CQueueLockFree< T >::Node
 CNRev
 CNumberConverterConverts from a source to a target number with a different type
 CNumberReaderReads n numbers from an Arduino Stream
 COscSinCos< T >
 CParseBufferWe try to keep the necessary buffer for parsing as small as possible, The data() method provides the start of the actual data and with consume we remove the processed data from the buffer to make space again
 CParseObject
 CPCMInfo
 CMTSDecoder1::pid_array
 CPIDControllerA simple header only PID Controller
 CPinInfoESP32Information for a PIN
 CPitShift
 CPoly
 CPRCRev
 CPrint
 CPrintable
 CQueue< T >FIFO Queue which is based on a List
 CQueueFromVector< T >FIFO Queue which is based on a Vector
 CQueueFromVector< audio_tools::BaseBuffer< T > * >
 CQueueLockFree< T >A simple single producer, single consumer lock free queue
 CQueueRTOS< T >FIFO Queue whch is based on the FreeRTOS queue API. The default allocator will allocate the memory from psram if available
 CQueueRTOS< audio_tools::BaseBuffer< T > * >
 CR2RDriverBaseR2R driver base class
 CMetaDataFilter::RangeMetadata range
 CReasampleLinearInterpolationRange 0:1
 CRECT
 CReedSolomon< msg_length, ecc_length >
 CReedSolomon< bytecount, additional_bytes >
 CResample2Point3Order
 CResample4Point2Order
 CResampleBSplineRange -1:2
 CResampleLagrangeRange -1 : 2
 CResampleParabolic
 CResmpleHermite
 CTfLiteMicroSpeechRecognizeCommands::Result
 CRTSPClient
 CRTSPFormat
 CSDDirect< SDT, FileT >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 SD API
 CSDDirect< AudioFs, AudioFile >
 CSDDirect< fs::LittleFSFS, fs::File >
 CSDDirect< fs::SDFS, fs::File >
 CSDDirect< fs::SDMMCFS, fs::File >
 CSDDirect< fs::SPIFFSFS, fs::File >
 CSDIndex< SDT, FileT >We store all the relevant file names in an sequential index file. Form there we can access them via an index
 CSDIndex< AudioFs, AudioFile >
 CSDIndex< fs::SDMMCFS, fs::File >
 CSimpleContainerConfig
 CSimpleContainerDataHeader
 CSimpleContainerMetaDataHeader
 CSlice< T >Helps to split up a big memory array into smaller slices. There are no additinal heap allocations! Example: if we have an array with 9 entries (1,2,3,4,5,6,7,8,9): slices(5) gives 2. slice(5,0) returns size 5 with 1,2,3,4,5 and slice(5,1) returns size 4 with 6,7,8,9!
 CSoundGenerator< T >Base class to define the abstract interface for the sound generating classes
 CSoundGenerator< effect_t >
 CSoundGenerator< int16_t >
 CStack< T >LIFO Stack which is based on a List
 CStack< audio_tools::ParseObject >
 CStreamClientState
 CStreamCopyT< T >Typed Stream Copy which supports the conversion from channel to 2 channels. We make sure that we allways copy full samples
 CStreamCopyT< uint8_t >
 CStrViewA simple wrapper to provide string functions on existing allocated char*. If the underlying char* is a const we do not allow any updates; The ownership of the char* must be managed externally!
 CSynchronizedQueue< T, TMutex >FIFO Queue which is based on a List that is thread save
 CSynthesizerKeyArduino GPIO pin to note assossiation
 CTaskFreeRTOS task
 CTfLiteAbstractRecognizeCommandsBase 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
 CTfLiteConfigConfiguration settings for TfLiteAudioStream
 CTfLiteQuantizerQuantizer that helps to quantize and dequantize between float and int8
 CTfLiteReaderInput class which provides the next value if the TfLiteAudioStream is treated as an audio sourcce
 CTfLiteWriterOutput class which interprets audio data if TfLiteAudioStream is treated as audio sink
 CTimerAlarmRepeatingCommon Interface definition for TimerAlarmRepeating
 CTimerAlarmRepeatingDriverBase
 CTransformationReader< T >ConverterStream Helper class which implements the readBytes with the help of write
 CTransformationReader< audio_tools::ReformatBaseStream >
 CUIMinimum implementation of UI parameters. We only support the setting and getting of values
 CUrlURL parser which breaks a full url string up into its individual parts
 CURLHistory
 CURLLoaderHLSBaseAbstract API for URLLoaderHLS
 CURLLoaderHLSOutputURLLoader which saves the HLS segments to the indicated output
 CUSBAudioCB
 CUSBAudioConfigConfiguration for TinyUSB Audio
 CUSBConfigESP32
 CUSBDeviceAudioAPI
 CVBan
 CVBanHeader
 CVector< T >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
 CVector< audio_tools::AbstractSynthesizerChannel * >
 CVector< audio_tools::AllocSize >
 CVector< audio_tools::AudioActions::Action * >
 CVector< audio_tools::AudioEffect * >
 CVector< audio_tools::AudioInfoSupport * >
 CVector< audio_tools::AudioOutput * >
 CVector< audio_tools::AVIStreamHeader >
 CVector< audio_tools::BaseConverter * >
 CVector< audio_tools::ChannelSplitOutput::ChannelSelectionOutputDef >
 CVector< audio_tools::ChannelsSelectOutput::ChannelSelectionOutputDef >
 CVector< audio_tools::int24_4bytes_t >
 CVector< audio_tools::MedianFilter::MedianNode_t >
 CVector< audio_tools::ModifyingStream * >
 CVector< audio_tools::PinInfoESP32 >
 CVector< audio_tools::QueueLockFree::Node >
 CVector< audio_tools::RingBuffer< T > * >
 CVector< audio_tools::SoundGenerator< T > * >
 CVector< audio_tools::Str >
 CVector< audio_tools::Stream * >
 CVector< audio_tools::TfLiteMicroSpeechRecognizeCommands::Result >
 CVector< bool >
 CVector< char >
 CVector< const char * >
 CVector< CRGB >
 CVector< effect_t >
 CVector< Entry >
 CVector< FLAC__int32 >
 CVector< float >
 CVector< ggwave_ProtocolId >
 CVector< int >
 CVector< int16_t >
 CVector< int8_t >
 CVector< mbed::PwmOut * >
 CVector< mp3d_sample_t >
 CVector< MTSStreamType >
 CVector< PwmOut * >
 CVector< PWMPin >
 CVector< StreamContentType >
 CVector< TSDPMTStreamType >
 CVector< uint16_t >
 CVector< uint8_t >
 CVideoAudioSyncLogic to Synchronize video and audio output: This is the minimum implementatin which actually does not synchronize, but directly processes the data. No additinal memory is used! Provide your own optimized platform specific implementation
 CVideoOutputAbstract class for video playback. This class is used to assemble a complete video frame in memory
 CVolumeControlAbstract class for handling of the linear input volume to determine the multiplication factor which should be applied to the audio signal
 CVolumeSupportSupports the setting and getting of the volume
 CWAVFormatX
 CWAVHeaderParser for Wav header data for details see https://de.wikipedia.org/wiki/RIFF_WAVE
 CWavIMAHeader
 CWindowFunctionFFT Window Function