Releases: pschatzmann/arduino-audio-tools
March 2025: Breaking Changes for AudioSource
- The AudioSource and file related classes have been moved from "AudioTools/AudioLibs" to "AudioTools/Disk"
- New functionality to support IDF Virtual File System files so that we can use this framework for files as well outside of Arduino
- AudioSourceVFS
- VFS_SDMMC
- VFS_SDSPI
- VFS_SPFFS
- VFS_LittleFS
- VFS_Multi
- VFSFile
March 2025
Extended Functionality
- Support for #include "AudioConfig.h" with separete #includes instead of global include "AudioTools.h"
- AudioConfig HTTP_CHUNKED_SIZE_MAX_LEN
- StreamCopy: make MimeDetector optional to save RAM and Progmem
- AVR minimize RAM usage
- Move FFTEffects to AudioLibs to make it optional
- New CoreAudio.h
- New classes: URLStreamESP32, URLStreamBufferedESP32 and ICYStreamBufferedESP32 to support IDF
- New class MultiDecoder
Error Correctioins
- Compile Errors for AudioESP32ULP
- Corret misspelled Equalizer3Bands class name
February 2025
New Functionality
- new class MetaDataFilterDecoder (to filter out id3 metadata)
- Support for chunked posts
- esp32 h2 support
- support IDF as component
- Concurrency for RP2040
- Foxen FLAC Decoder
- RP2040 support for psram
- new class for FFTEffects
- new class MultiDecoder to support mulitple codecs
- new class MimeDetector
- new class MP3HeaderParser
- new class AllocatorESP32 with flexible caps
Improvements
- AudioLogger remove TAG
- HttpRequest subclass of BaseStream
- AnalogDriverESP32V1 support for multiple restart
- properly clear WAVHeader
- FFTDisplay.h support multiple compilation units
- TransformationReader allow config for buffers
- PWMOutput: implement decimation
- AudioSourceSDFAT provide getAudioFs() method
- Restructure Concurrency directory
- AudioLogger: support for multiple compilation units
- I2SDriverRP2040 getOverUnderflow()
- Add some more methods to MeasuringStream (e.g. to estimate run time)
- support for new ADPCM library version
- VolumeMeter: avgVolume()
- Non blocking A2DPStream begin()
- SPDIFOutput RP2040 support
- ESPNow cleanup: use BufferRTOS and Semaphore for confirmations
- FFT: psram support
- FFT: support inverse fft (with stride, windows and overlap add)
- Vector index access: check for overflow
- ID3 use Vector to support PSRAM
- Simplify DecoderHelix implementation using MimeDetector
- AudioPlayer: new method setMetaDataMaxSize()
Error Corrections:
- HttpRequest chunked corrections
- StreamCopy avoid memory leak
- correct IDF Build Errors
- correct size() function of File based AudioSource
- Compile error: rp2040 littlefs
November 2024 - V1.0.1
Error Corrections:
- NumberFormatConverter: fixed wrong clipping
- Compile error AudioSourceSD for UNO R4
Improvements
- Logging is using a global variable (AudioToolsLogger) instead of a singleton
- Converters use standard notification
- AudioBoardStream: remove global variable
- Moved AudioEffectsSuite to optional AudioLibs to optimize memory useage
- Cleanup StreamCopyT
New Functionality
- PDM support for Input
- Support for LyraT Mini Board
- SawToothGenerator
October 2024 - V1.0.0
I finally managed to release the 1.0 version of my Arduino AudioTools library.
It contains all the functionality that I have initially planned for and compared to the 0.9.9 release consists of a major restructuring of the source code directory.
I was conducting a poll, to confirm if I should go ahead with this change and a majority of users agreed to have this implemented.
Here is the new directory structure:
All the core functionality that is available with an include "AudioTools.h" can be found in the /src/AudioTools/CoreAudio directory. The other directories contain the optional functionality that can be included if needed.
Breaking Change
Though the name of these directories did not change, the location did: so in order to include e.g. a codec you need to prefix it with AudioTools and do the following now
#include "AudioTools.h" // core audio
#include "AudioTools/AudioCodecs/CodecMP3Helix.h" // from "AudioCodecs/CodecMP3Helix.h"
Please note that this is a breaking change and you need to adapt your sketches!
All examples have been updated.
Work Around
If you don't want to adapt the code in your sketch you can create symbolic links to the old directory locations.
Go to the Arduino libraries folder and in linux or osx you can execute the following commands
cd arduino-audio-tools/src
ln -s AudioTools/AudioCodecs AudioCodecs
ln -s AudioTools/AudioLibs AudioLibs
Something similar should be possible in Windows as well.
September 2024
Error Corrections
- I2SCodecStream reported wrong audio info
- AudioDecoder isResultPCM() should return true
- AudioPlayer call begin on volume_out
- WAVDecoder: Correct ADPCM
- Simplify WAV Header Parsing
- Maximilian correct broken loading from file
- Correct FFT compile errors
- ESP32: ADC_ATTEN_DB_11 is deprciated
- STM32: Ethernet support
- RP2040 MBED: correct compile errors
New Functionality
- AudioSourceSD pass SPI as argument in constructor
- FormatConverterStream provide begin() method
- AudioBoardStream provide new setActionVolumeIncrement() method
- Buffered URL: define optional buffer size
- A2DPStream provide access to buffer information
July 2024
What's Changed
Full Changelog: v0.9.7...v0.9.8
Feb 2024 - Many Corrections & New Functionality
I noticed that I haven't published any release for a long time.
This release contains many error corrections and the following new functionality
New Functionality
- Codec L8 and L16
- RIFF file format
- Adpcm codec
- Opus Ogg
- AACDecoderADTS
Pltforms
- Arduino UNO R4
- Nano BLE Sense: I2S Support
- ESP32 Arduino Support for 3.0.0
Integrations
- Faust Support with Examples
- Integration with Pure Data
- New Audio Driver Concept for supporting LyraT, AudioKit and many other codecs
Communication
- Throttle
- VBAN Support
- FTP example
New Classes
- PIDController
- Median Filter
- ChannelSplitOutput
0.9.6 - BinaryContainer, MiniAudioStream, TimedStream, RingBufferFile...
Design Changes
-
renamed classes ending with Stream that do not support input to Output
- CsvStream to CsvOutput,
- PWMAudioStream to PWMAudioOutput
- PitchShiftStream to PitchShiftOutput
- SPDIFStream to SPDIFOutput
-
renamed classes ending with Print to Output (e.g.
- VolumePrint to VolumeOutput
- MetaDataPrint to MetaDataOutput
New Functionality
- TimedStream using timed start and stop position in seconds
- RingBufferFile for a file backed ringbuffer
- BinaryContainer as supported container for codecs: decder , encoder
- MiniAudioStream for output on Desktop
Extended Functionality
- ProgressStream
- provide processedSecs()
- take audio info from AudioStream if possible
- added totalBytes() and totalSecs()
- AudioFFT: reset() method to restart processing
Corrections:
- AnalogConfig use I2S_AUTO_CLEAR
- Correct CodecLC3 quality problem
- Add missing virtual overrides to reverbs
- cleanup A2DPStream
- Correct broken CodecAPTX
New Examples
- esp-now example using a codec
0.9.5 - FileLoop, SIDPlayer, ProgressStream, FormatConverterStream...
New functionality/classes
- FileLoop
- SIDPlayer
- ProgressStream
- WAV IMA Decoder
- FormatConverterStream
- NumberFormatConverterStream
- WM8960Stream
- AudioESP32ULP
- DecoderBase64/EncoderBase64
- CallbackStream
- LEDOutput & examples
- PinkNoiseGenerator
- Example streams-azure_tts-i2s
Changes / Improvements
- Renamed AudioBaseInfo to AudioInfo
- RingBuffer using Vector instead of array
- URL & ICY Streams w/o new and delete
- RTSPStream: added some more formats
- Use more reliable way to identify esp32 S2,S3,C3
Corrections
- Compile error SAMD boards
- InputMixer stop reading muted channels
- A2DPStream (use of new concurrency implementation)
- correct Helix pcm misspelling
- Compile error when USE_AUDIO_LOGGING false
- Fix return value AnalogDriverArduino::read
- Div FFT implementations: support begin() after end()
New Environments
- IDF support
- Support for RP2040W
- Tests for different Arduino architectures