
Melody Machine is an open-source firmware that converts the ESP32-S3-based LILYGO T-LoRa Pager into a portable MP3 player and internet radio rather than a LoRa-based messenger running Meshtastic or Meshcore.
Highlights of the Melody Machine firmware:
- LVGL-based graphical user interface with four themes
- WiFi Manager — Non-blocking WiFi with network list, password entry via on-screen keyboard, and auto-reconnect
- MP3 playback from SD card with folder browser, shuffle, repeat modes, and seek
- Internet Radio via M3U over WiFi (ICY metadata support)
- Seek — rewind / fast-forward MP3 tracks with the rotary encoder (±5 s per step)
- Dual-core audio/task design
- MP3 decoding runs on Core 0 via FreeRTOS
- UI and WiFi manager on Core 1
- Settings — Saved as JSON on SD card in /melody_machine/settings.json; survives reboots and reflashes
- Auto power-off – Configurable idle power-off timer: 15 minutes to 2 hours


The rotary encoder and built-in keyboard allow plenty of controls:
- Rotary encoder
- Browse the list
- Enter folder / play track / confirm (built-in button)
- Q / A – Volume +5 / -5
- W / D – Previous/next track
- Space – Play/pause
- B/Backspace – Stop · go up folder · exit seek mode
- R – Cycle repeat: off → one → all
- H – Toggle shuffle
- N – Toggle seek mode (MP3 only, while playing/paused)
- S – Open settings
- S + H – Screenshot to SD
- i – Open controls help
You’ll also need to copy music inside the mp3 folder and the Internet radio M3U playlist files inside the m3u folder:
|
1 2 3 4 5 6 7 8 9 10 |
SD:/ └── melody_machine/ ├── settings.json ← auto-created on first boot ├── mp3/ │ ├── song1.mp3 │ └── subfolder/ │ └── song2.mp3 └── m3u/ ├── rock.m3u └── jazz.m3u |
The settings.json contains the settings from the app, and you can also add your WiFi credentials there instead of typing them while the firmware is running.
|
1 2 3 4 5 6 7 |
{ "wifi": { "networks": [ { "ssid": "MyNetwork", "pass": "mypassword" } ] } } |
You’ll find the source code (Arduino) and pre-built firmware on GitHub. You can flash the firmware using esptool, or you can run melody_flasher.py to launch a flasher GUI.
As most software projects these days, the Melody Machine has been developed with the help of AI, namely Anthropic Claude here. Nevertheless, the firmware works, as can be seen with the video demo using Melody Machine v0.1 below (note: the audio level is really low is that video). The latest v0.2 firmware adds a smoother and sharper UI and better controls. The LoRa radio is not used at all here.
just released melody machine
open-source firmware for the @lilygo9 T-LoRa Pager
features:
mp3 playback from SD card
internet radio via m3u over WiFi
LVGL UI
dual-core audio/task split
settings persisted on SDGitHub release in the comments 👇 pic.twitter.com/chePDYmg4D
— w3dada (@wadadawadada) April 21, 2026

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.



