Skip to content

opentoneAn open-source mp3 player, built from scratch

STM32 · FLAC · capacitive click wheel · Bluetooth. A music player with no smartphone, no cloud, no subscription. Work in progress, documented as it goes.

opentone logo

In numbers ​

Measured on the bench prototype (Nucleo-F446RE plus breakout boards). Each number comes from a blog post or a bench test.

61fps
full-screen UI redraw on a 320×240 ILI9341, 16-bit parallel (183 fps for flat fills)
48kHz / 24-bit
FLAC playback, plus MP3, decoded by a VS1053b
8MB
PSRAM: ~38 s audio buffer, cover cache and the music index
24clicks / turn
capacitive click wheel (MPR121, 4 pads) with LRA haptic feedback
180MHz
STM32F446 Cortex-M4 running the UI, the SD card and the audio feed
1.3MB/s
SD card reads over SPI with 16 KB blocks

Specs ​

What's inside today, and what the final iPod-sized board is planned to have.

MCUSTM32F446 (Cortex-M4F, 180 MHz)Prototype: Nucleo-F446RE (LQFP64). Final board: STM32F446VE (LQFP100).
Display2.4" ILI9341 TFT, 320×240, RGB56516-bit 8080 parallel bus driven straight from a GPIO port
AudioVS1053b decoder: MP3 and FLAC up to 48 kHz / 24-bit, 3.5 mm jackThe PC sync tool converts hi-res files to 48 kHz / 16-bit
BluetoothFeasycom FSC-BT1035, A2DP source (SBC)Audio goes from the decoder to the module over I2S; the MCU controls it with AT commands
StoragemicroSD (SPI, 22.5 MHz) + 8 MB APS6404L PSRAMThe music index and search trie are built on a PC and loaded at boot
InputCapacitive click wheel (MPR121) + 5 mechanical buttonsDesign the wheel footprint with the click wheel designer
HapticsDRV2605L driver + LRA motor
PowerLi-Po battery, USB-C charging, fuel gauge plannedMCP73831 charger, MAX17048 gauge, power switches for SD / audio / Bluetooth

Status ​

Works today bench

  • Smooth MP3 and FLAC playback, buffered in PSRAM
  • Fast UI: scrolling lists, fast scroll, transitions
  • Album covers
  • Library browsing (genres, artists, albums, tracks) and search
  • Click wheel, buttons and haptics
  • Bluetooth headphones: scan, pair, auto-reconnect
  • Boot animation

Next in progress

  • Battery, charging and power management
  • USB file transfer
  • Carrier PCB, then the iPod-sized board and enclosure
  • Playlists, podcasts and audiobooks
  • Accented characters in titles

Explore ​

Current state ​