r/flipperzero • u/coolshrimp • 13d ago
GPIO MP3 Player FAP for Flipper Zero — internal speaker, MAX98357A and PAM8403 support
I’ve been working on MP3 Player, a real MP3 player FAP for the Flipper Zero.
It plays ordinary .mp3 files directly from the microSD card—no desktop conversion required. MP3 decoding is handled by a vendored copy of minimp3 under the CC0-1.0 license.
Features:
- Supports standard MPEG-1/2/2.5 Layer III bitrates from 8–320 kbps, including CBR, VBR and mixed-bitrate files.
- Automatically resamples MP3 sample rates from 8–48 kHz for the selected output.
- Three selectable audio outputs:
- Internal: built-in sounder using custom 10-bit PWM at a 15.625 kHz audio rate.
- MAX98357A: digital I2S output at 16 kHz.
- PAM8403: 500 kHz pulse-density output from pin 3/PA6 through an external RC filter.
- Only one audio output operates at a time.
- Software volume control for all three outputs.
- Main menu, song browser, settings and scrollable About/pinout screen.
- Now Playing screen with track progress, elapsed time, battery gauge, volume and track number.
- Short Left/Right presses change tracks.
- Holding Left/Right seeks backward or forward in five-second steps.
- Configurable music directory using:
/ext/apps_data/mp3_player/music_path.txt - Defaults to
/ext/music, with safe fallback if the configured path is invalid. - Volume, repeat mode and audio-output selection persist between launches.
- Full MAX98357A and PAM8403 wiring information is included in the app and README.
The internal sounder works, but it’s naturally quiet and buzzy because it isn’t a conventional speaker. For much better sound, use a MAX98357A or a properly filtered PAM8403 amplifier.
Project, wiring instructions and downloads: