finds.dev← search

// the find

pschatzmann/arduino-audio-tools

★ 2,317 · C · GPL-3.0 · updated Jul 2026

Audio Tools (a powerful Audio library for Arduino, PlatformIO, IDF)

A header-only C++ audio library for Arduino and ESP32 that models audio pipelines as streams — you chain sources, transforms, and sinks using the same Arduino Stream API you already know. It covers everything from I2S and Bluetooth A2DP to HTTP radio streams, codec decoding, DSP effects, and FFT, all in one library. The target audience is embedded developers building audio projects on ESP32, ESP8266, Teensy, or similar boards.

The stream-chaining design is genuinely elegant — swapping I2SStream for AnalogAudioStream or A2DPStream requires changing one line, not restructuring your sketch. The breadth of supported protocols (A2DP, HLS, ESP-NOW, DLNA, ICY metadata) is unusual for an embedded library and saves significant integration work. Desktop build support via CMake means you can prototype and debug on Linux/macOS without flashing hardware every iteration. The example library is extensive and well-organized by scenario rather than by API surface, which is actually useful.

Being header-only means every translation unit that includes AudioTools.h recompiles the world — on large sketches with multiple .cpp files this bloats compile times noticeably and can cause subtle ODR issues. The dependency graph is sprawling: the library is a hub that pulls in a dozen optional external libraries (helix, libmad, FLAC, etc.) and the documentation frequently tells you to install 'additional libraries' without specifying which ones a given example needs. Memory management is largely manual and trust-based — on an ESP32 with 320KB of RAM, a misconfigured buffer size silently starves other subsystems. The GPL v3 license is a real constraint for commercial product builds, which the README buries.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →