Cheng Liang's LVGL-Driven Winamp Clone Really Whips the Llama's Ass on an Espressif ESP32

Inspired by everyone's favorite MP3 player of the late '90s, this ESP32-powered project uses real Winamp skins as a design base.

Gareth Halfacree
1 year agoMusic / Displays / HW101 / Retro Tech

Maker Chen Liang has a project for those who miss the classic Winamp MP3 player but who don't fancy installing its current-generation successor on their desktop: a clone designed to run on a microcontroller, mimicking the original software's iconic user interface.

"This Instructable shows how to use LVGL and SquareLine Studio design a music player UI," Liang writes in what is a dramatically understated introduction for what he has actually created. Inspired by memories of Nullsoft's Winamp and the Chinese-character-supporting TTPlayer, the user interface is a near-direct copy of Winamp — made easier by the theming support the software offered.

This ESP32-driven project brings back Winamp's classic user interface in desktop MP3 player form. (📹: Chen Liang)

"These two applications are my (and also many people's) childhood memory," Liang explains in a post brought to our attention by Adafruit, "so I will use those UI as a design template. Winamp is designed [so you] can change 'skin' easily, and the skin image resources are in BMP format packed in a ZIP file. You can find a huge Winamp skin collection at, so it is easy to access your favor[ite] Winamp skin as a design template."

Using these graphics as a base, Liang was able to put together a Winamp clone running on an Espressif ESP32 microcontroller — using the LVGL library to handle the graphics of the user interface and SquareLine Studio to speed up the design process. Under the hood, there software includes a broad range of features: listing and loading MP3 files from an SD Card, playback and volume controls, automatic ID3 display including cover image, lyric display, and even an audio spectrum analyzer — though nothing quite as complicated as the classic Milkdrop.

A 3D-printable case is optional, but makes the device easier to use on a desk. (📹: Chen Liang)

"Here are further function[s] we can implement," Liang adds of his ideas to take the project further. "Shuffle playlist order, MP3 timeline seek, support more cover image formats, [and] connect to the internet."

The project is detailed in full on Liang's Instructables page.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire:
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles