RetroFM Pocket — A handheld MML-era FM music player and visualizer for M5StickS3
RetroFM Pocket preserves and explains Japanese retro-computer music culture in a device small enough to carry anywhere. M5StickS3 performs the complete playback path locally: LittleFS file access, VGM or MDX interpretation, YM2203 or YM2151 synthesis, optional PDX/ADPCM mixing, real-time spectrum analysis, UI rendering, and speaker output.
VGM and MDX files are more than recordings. They describe notes, timing, and chip-register activity from an era when musicians composed within strict hardware limits, often using Music Macro Language workflows. Desktop emulators can reproduce this music, but the process is usually invisible. RetroFM Pocket turns it into a tangible, portable exhibit: hear the synthesis and watch the chip activity at the same time.
| Quantity | Hardware | Role |
|---|---|---|
| 1 | M5Stack M5StickS3 | ESP32-S3 controller, display, buttons, storage interface, and speaker output |
| 1 | USB-C cable | Firmware and LittleFS upload; optional power |
No sensor, module, network connection, or companion computer is required during playback.
- PlatformIO and Arduino framework
- M5Unified and M5GFX
- YMFM for YM2203/OPN emulation
portable_mdxfor YM2151/OPM MDX playback- LittleFS for tracks
- Custom CP932/Shift-JIS title conversion and on-device visualizer
- Install Python 3 and PlatformIO.
- Clone the repository.
- Generate the CC0 demo with
python scripts/generate_retrofm_demo.py. - Copy
demo/retrofm-pocket-demo.vgmtodata/. - Run
pio run -e m5sticks3 -j 1. - Connect M5StickS3 over USB-C.
- Run
pio run -e m5sticks3 -t upload. - Run
pio run -e m5sticks3 -t uploadfs. - Reboot and use BtnA/BtnB for track and volume control.
On 2026-08-07, the release firmware built successfully with:
- RAM: 131,276 / 327,680 bytes (40.1%)
- Flash: 905,573 / 1,310,720 bytes (69.1%)
Physical-device behavior shown in the contest media must be recorded after flashing the contest build; a successful local build alone is not treated as hardware validation.
The submission should show:
- M5StickS3 booting into RetroFM Pocket.
- Pocket Signal and its Japanese GD3 title on screen.
- Audible FM playback from the built-in speaker.
- Spectrum and chip meters moving in real time.
- Short presses changing tracks.
- Long presses changing volume and displaying
VOL. - A final wide shot proving the experience is self-contained.
Do not show or distribute unlicensed game music. Use only the generated CC0 demo in public contest media unless separate permission is documented.
- Hackster draft
- Submission checklist
- Hackster cover artwork — deterministic 4:3 technical illustration; replace with a strong device photo when available
- Rights-cleared demo:
demo/retrofm-pocket-demo.vgm - Public source repository:
https://github.com/Keitark/RetroFM-Pocket