ESP32-S3 SD WAV Streaming
Budget: $30 – $250 USD
I’m building a simple sample-player on a Waveshare ESP32-S3 board and need reliable, real-time WAV playback through a PCM5102A DAC. Your job is to wire up the basics so that later stages of the project can focus on musical logic.
What I need you to do
• Bring up the SD card interface on the ESP32-S3. The card will be formatted from my desktop before flashing, so feel free to choose SD-MMC if it makes life easier, but I’ll accept SPI if it proves more robust.
• Mount the card, read 16-bit 44.1 kHz or 48 kHz PCM WAV files, and stream them over the native I²S peripheral to the PCM5102A with no underruns.
• Expose a very small C/C++ API:
audio_init();
audio_play_file("/instruments/wav_piano/C4.wav");
audio_stop();
audio_set_volume(x);
audio_is_playing();
• Produce a concise wiring/config note for the PCM5102A and the chosen SD interface so I can reproduce your setup.
• Document the buffering strategy you use (double buffer, ring buffer, DMA, etc.) so I can scale it later.
Out of scope (don’t spend time here): MIDI parsing, note mapping, polyphony, UI work.
Feel free to lean on ESP8266Audio or ESP32-audioI2S as reference material as long as the final code compiles cleanly in ESP-IDF or Arduino-ESP32 and keeps the public interface above.
Deliverable checklist
1. Source code that, when flashed, plays a WAV from the SD card continuously and gap-free.
2. A one-pager (markdown is fine) covering PCM5102A wiring, SD lines, and any required menuconfig settings.
3. Explanation of the buffering scheme.
4. The header file defining the audio_* API ready for the next project phase.
If this runs for hours without glitches while connected to my desktop over USB for logging, I’ll mark it complete.
What I need you to do
• Bring up the SD card interface on the ESP32-S3. The card will be formatted from my desktop before flashing, so feel free to choose SD-MMC if it makes life easier, but I’ll accept SPI if it proves more robust.
• Mount the card, read 16-bit 44.1 kHz or 48 kHz PCM WAV files, and stream them over the native I²S peripheral to the PCM5102A with no underruns.
• Expose a very small C/C++ API:
audio_init();
audio_play_file("/instruments/wav_piano/C4.wav");
audio_stop();
audio_set_volume(x);
audio_is_playing();
• Produce a concise wiring/config note for the PCM5102A and the chosen SD interface so I can reproduce your setup.
• Document the buffering strategy you use (double buffer, ring buffer, DMA, etc.) so I can scale it later.
Out of scope (don’t spend time here): MIDI parsing, note mapping, polyphony, UI work.
Feel free to lean on ESP8266Audio or ESP32-audioI2S as reference material as long as the final code compiles cleanly in ESP-IDF or Arduino-ESP32 and keeps the public interface above.
Deliverable checklist
1. Source code that, when flashed, plays a WAV from the SD card continuously and gap-free.
2. A one-pager (markdown is fine) covering PCM5102A wiring, SD lines, and any required menuconfig settings.
3. Explanation of the buffering scheme.
4. The header file defining the audio_* API ready for the next project phase.
If this runs for hours without glitches while connected to my desktop over USB for logging, I’ll mark it complete.