Music Player Evolution Page


Home                               Craigs Pages                               Heathers Pages

Nov 7, 2020

I listen to music a lot. To be honest I listen to music of my own creation more that anything else.  If you are interested, my music is available here.  I realize that I could put the music I like to listen to on my phone and be done with it, but what fun would that be. I build my own music players because I want them to work exactly like I want them to work and not like some programmer somewhere thought they should.

Building a music player requires both hardware and software design, something I am good at and enjoy doing. In addition I use my wood working skills to package these devices; usually in wood and acrylic. Doing these designs keeps the little grey cells in my brain busy and hopefully helps keep me sharp.

It is very pleasing to go from a design inspiration to a bunch of wires and components on a breadboard to a finished music player.

If you are interested in the software for any of these music players, email me at calhjh@gmail.com and I'll get it to you along with other build details.


From left to right, second, third and fourth generations of music players. Generation one was scavenged for parts.

As the generations evolved the devices got progressively smaller and more refined.

The second generation music player under development. This music player consisted of the following components:

TTGO ESP32 WROVER. An Adafruit VS1053/SD module. An Adafruit PowerBoost 1000 power module and a
320x240 TFT Touchscreen with a ILI9341 controller from PJRC.com. Finally, a 4 GB SD memory card.

The code for this music player was developed in the Arduino IDE.



The generation two music player only had a physical power switch. All user interaction is done via the touch screen and the onscreen buttons.

The dimensions of the finished player are 5 1/2" length by 2 3/4" width by 1 1/2" deep.

This generation of music player had much more functionality than the following generations in that it had audio equalization, Internet radio, NTP clock and FTP access all built in. In using this music player for an extended length of time I decided I only used the basic audio file playback functions so I dropped all of the extraneous features from subsequent generations.




Although this music player worked and continues to work fine it was rather large for carrying around on my hikes so I knew it wasn't the final answer.


The musical content of this music player can be updated remotely via FTP. I typically use FileZilla as an FTP client to update content.

The third generation music player was based on the Raspberry Pi Zero W and the Pimoroni Audio Pirate DAC/Headphone module so no custom circuity was required. The Pirate module had a TFT LCD display and four buttons which I would use for navigation within the user interface.

An Adafruit PowerBoost 1000 power module
(not shown) was used for charging the LiPo battery powering the device.

All of the software was written in Python and developed right on the Raspberry Pi module itself. In addition all development was done remotely via SSH as the Pi Zero W has WiFi built in.



My job was to package the music player to protect the delicate electronics within. To this end I build a walnut wood box with a smoked glass top and bottom. This has turned out to be a rigorous build as I have taken this player on 100's of walks and never once had a problem.

The upper left button is minus or up, the upper right is + or down, the lower left is the back button and the lower right is the select button. All UI navigation is done using these four buttons.
Seq Play plays tunes in sequence; Rnd Play selects tunes randomly; Shuffle selects random tunes across all artists; Shutdown shuts down the Pi; Reboot reboots it. Shutdown and Reboot are never used because I just turn the power off when I am done listening.

The dimensions of the finished player are 3 1/2" length by 2" width by 1 1/4" deep. The hole in the side is where the USB connection to charge the battery is.

The only downside to this music player is that it takes the Raspberry Pi about two minutes to boot up and be ready to play music.

Again, the musical content of this music player is updated remotely via FTP.



The fourth generation music player is functionally identical to the third generation except that it (only) supports Bluetooth wireless devices. It is immediately ready to play music when the power switch is turned on.

The hardware consists of a TTGO T-Display ESP32 module which has the
240x135 TFT LCD  screen, an Adafruit microSD breakout board, a power switch and the four nav buttons. Power is supplied by a 650 ma/hr LiPo battery.

All software development for this music player was done in the Arduino IDE environment.

The dimensions of the finished player are 4" length by 2 1/2" width by 3/4" deep. The hole in the side is where the USB connection to charge the battery is and where the device's software is updated.

Again, the musical content of this music player is updated remotely via FTP.

I believe this will be the final generation of music players I will build though I may enhance the software from time to time.

Questions and comments to me Craig at: calhjh@gmail.com

Home                               Craigs Pages                               Heathers Pages