Arduino library for playing MOD, WAV, FLAC, MIDI, RTTTL, OGG/Opus, MP3, and AAC audio files on ESP8266, ESP32, and Raspberry Pi Pico via I2S DACs or software delta-sigma DAC.
ESP8266Audio is an Arduino library that enables audio playback on ESP8266, ESP32, and Raspberry Pi Pico microcontrollers. It decodes multiple audio formats (MOD, WAV, FLAC, MIDI, RTTTL, OGG/Opus, MP3, AAC) and outputs to I2S DACs or a software-emulated delta-sigma DAC, solving the problem of adding sound to embedded projects without dedicated audio hardware.
Embedded developers and hobbyists building audio-enabled projects on ESP8266, ESP32, or Raspberry Pi Pico, such as internet radios, alarms, toys, or model train sound systems.
Developers choose ESP8266Audio for its broad format support, flexible output options (including a no-DAC software mode), and efficient resource usage on microcontrollers, all within a familiar Arduino library structure.
Arduino library to play MOD, WAV, FLAC, MIDI, RTTTL, OGG/Opus, MP3, and AAC files on I2S DACs or with a software emulated delta-sigma DAC on the ESP8266 and ESP32 and Pico
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports a wide range of formats including MOD, WAV, MP3, FLAC, MIDI, AAC, and OGG/Opus, as listed in the README, enabling versatile audio sources for embedded projects.
Allows audio playback without a hardware DAC using a simple transistor circuit, detailed in the schematic, making it cost-effective for basic sound output.
Can use SPI RAM like 23lc1024 to buffer web streams, preventing hiccups during playback, as described in the buffer management section.
Includes AudioFileSourceID3 to extract metadata from MP3 files, useful for UI updates, mentioned in the Key Features.
Official Platform.IO support is broken for ESP32; users must switch to a community core, adding setup complexity, as noted in the ESP32 and Platform.IO section.
Requires precise wiring for I2S DACs or the software DAC circuit, with potential issues like high-pitched buzzing, as explained in the debugging notes.
Playback is not interrupt-driven; developers must manually call loop() and manage delays to avoid audio dropouts, which can lead to hiccups if not handled carefully.