Peppy player


Almost one year ago I posted information about my audio player:
Since that time I redesigned the hardware and software components. Now it's based
on Raspberry Pi 2 and Amp+. The software part was changed completely. And now
the project has its name - 'Peppy Player'.

All the details about this project can be found here:

And here is the summary:

This is DIY project which includes three components: hardware, software
and woodware. All three components were created for this project from scratch.

Here are the key features of the hardware component:
* It is based on the popular single-board computer Raspberry Pi 2.
* High quality audio achieved by using integrated Amplifier module HiFiBerry Amp+ and Sony speakers.
* The Hardware has six "senses" to control its functionality:
- Mouse
- Keyboard
- Touchscreen
- Infrared Remote Control
- Rotary Encoders
- Any computer in a local network or mobile device with Web Browser

Here are the key features of the Software component:
* This is application written in Python.
* Peppy provides Graphical User Interface for audio players running in a headless mode. Currently Peppy supports 'Mpd' audio player.
* Embedded Web Server allows to control audio playback from any Web Browser.
* The default touchscreen resolution is 480*320. This is the resolution of the TFT used for this project. Though UI is dynamic and can scale to any screen resolution.
* Currently Peppy has only Internet Radio functionality. In the future releases support for playing audio files and streams will be implemented as well.
* By default Peppy has playlists containing free radio stations for English, French, German and Russian languages. Users can add their own stations to the playlists.

The key features of the Woodware component include:
* Original custom design.
* Made of solid wood (Cherry and Walnut).
* Natural finish - the variation of French polish.

I hope that the information about this project will be useful for all
DIY developers as it brings together many different aspects of developing
hardware, software and woodware fro Raspberry Pi platform.

All source files for the project can be found here:

From the source files you can learn how to:
- create Python GUI using Pygame library
- implement animation in Python and JavaScript
- handle audio players (e.g. mpd) from your Python code
- program rotary encoders
- handle infrared remote control in Python
- implement web UI using HTML5, Json, SVG and WebSocket technologies
I've fixed the issue with remote control recently. The remote control didn't work when WiFi was used instead of wired connection. The issue was fixed by connecting Infrared Sensor's power pin to +5V instead of +3.3V (check that your sensor supports 5V). It looks like when WiFi USB dongle is connected to RPi that +3.3V line becomes very noisy. That probably depends on particular dongle and IR sensor. But that's what happened in my case. To protect GPIO pin where you connect IR sensor you can connect 1kOhm resistor between that pin and IR sensor.
Here is the new member in the family of Peppy Players. It's called µPeppy (micro-Peppy).
This is completely portable player - it can be powered by battery.
The main hardware features of µPeppy are:
- It's based on Raspberry Pi Zero.
- Pimoroni DAC was leveraged to achieve high quality audio.
- The player can be controlled either using Infra-Red Remote control or
Web Browser running on any device in the local network.

The software used for µPeppy is the same as for the previous player model.
Both players use the second release of the Peppy software - Michelangelo Edition.
It has the following changes from the previous Leonardo Edition:
- Added support for 'mplayer'. Now Peppy supports two players 'mpd'
and 'mplayer'. User can switch from one to another by changing configuration file.
- Added VU Meter screensaver.
- Updated radio playlists for all languages - removed obsolete links and
added new ones.
- Bug fixing and code cleanup.

All details can be found on the project's wiki:



Thanks for the update. I missed the earlier posts.

This looks cool! I'm bookmarking for a time I'm ready for such a project. At the very least, your code will be helpful for me, as I have some other "appliance" projects that I planned to build using a similar mix of software building blocks. This might help me get a screen and webui going faster.
Thanks for the update. I missed the earlier posts.

This looks cool! I'm bookmarking for a time I'm ready for such a project. At the very least, your code will be helpful for me, as I have some other "appliance" projects that I planned to build using a similar mix of software building blocks. This might help me get a screen and webui going faster.

Thanks easp! Just let me know if you will have any questions regarding hardware, software or woodware :)
New version (Raphael Edition) of the Peppy Player software was released today. Here are the key features:

  • Added File Playback functionality. Both supported players 'mpd' and 'mplayer' provide file playback on Linux and Windows platforms.
  • Updated Logo screensaver. In the File Playback mode it will display current album art.
  • Updated Slideshow screensaver. In the File Playback mode it will display images from art folder.
Here are several screenshots.

Radio player:


Radio Genre Menu:


Screensaver Settings Menu


Home Menu:


File Browser:


File Player:

New version (Caravaggio Edition) of the Peppy Player software was
released today:
Here are new features:

  • Implemented playback of playlists (m3u and cue).

  • Added support for 'vlc' player. Now Peppy supports three popular players 'mpd', 'mplayer' and 'vlc'.

  • Redesigned communication with audio players.

  • Added support for Streaming server and client.

  • Updated web radio playlists.
Peppy Player software provides UI functionality to the audio players
(mpd, mplayer or vlc) running in a headless mode. It was originally
developed for using with small LCDs/Touchscreens with resolution
480*320, 320*240. Although it can be used in systems with smaller or
larger resolutions as well. Peppy Player can be installed on any
Linux or Windows platform which supports Python and Pygame library.

Here are several screenshots showing web radio UI for different languages
(German, French and Russian) and different genres (Kids, Pop and Rock):

Here are the screenshots showing VU Meter Screensaver (currently available
only on Linux platform and mpd player):



New version (Bosch Edition) of the Peppy Player hardware and software was released today:
GitHub - project-owner/Peppy: Peppy Player Repository
New features:

  • Modified hardware. Now microPeppy leverages HiFiBerry MiniAmp for Raspberry Pi Zero:

  • Added ability to listen to audiobooks. Books can be selected by genre and author. The following screenshots demo the functionality:



  • Redesigned screens to simplify navigation.

  • Added more information to the wiki pages.

  • Bug fixing.
Today I released new version (Rembrandt Edition) of the Peppy Player software
and updated wiki pages.

New features:

- Switched from custom WebSocket implementation to the Tornado Web Server.
This change significantly simplified the web server implementation. Also it provides
the base for the further Web UI improvements.

- Implemented Voice Assistant which allows to navigate through menus using
voice commands. Current implementation relies on Google Assistant service and
supports three languages - English, German and French. The search functionality
will be implemented in the next releases. So that instead of navigating through the
file browser it will be possible to start playback by making voice command, for
example: 'Play Wish You Were Here by Pink Floyd' or 'Play The Mousetrap by Agatha
Christie' to start audiobook playback.

- Made a major update of the radio playlists. The number of radio stations increased
almost in two times for all genres and languages.

- Added headless mode. In this mode Peppy Player can work without display/TV
connected to Raspberry Pi. In the headless mode the player can be controlled by
using Web UI, remote control and voice commands.

- Created user Gallery where other people can demo their projects based on Peppy Player:
Here are couple examples from the Gallery:


New version (Vermeer Edition) of the Peppy Player was just released.

New features:

- Replaced HiFiBerry Amp+ by HiFiBerry Amp2. That solved audiobooks playback issues.
Amplifier * project-owner/Peppy.doc Wiki * GitHub
HiFiBerry Amp * project-owner/Peppy.doc Wiki * GitHub

- Added CD Player mode.
CD Player * project-owner/Peppy.doc Wiki * GitHub
CD Browser * project-owner/Peppy.doc Wiki * GitHub

- Made Home menu customizable.
- Added configuration files for screensavers.
- Refactored VU Meter screensaver.
- Improved logging functionality.

- Provided disk images to simplify player installation and configuration.
Disk Images * project-owner/PeppyPlayers.doc Wiki * GitHub

- Added Wish List to the Wiki pages:

- Updated Gallery with new images depicting projects created by Klaus (Germany, Munich):



A very nice player :) lots of work there with the UI!

Ignoring hardware - can you support USB DACs = DSD and HiRES audio?

Thank you JohnW! Peppy player doesn't provide its own playback engine. It gets that functionality from one of the existing popular media players - vlc, mpd or mplayer. So if regular Raspbian Stretch and one of those media players can handle USB DAC then I would say that Peppy player can do that as well.

That mostly depends on USB DAC driver for Raspbian OS. If the driver for that DAC exists and can be used by ALSA then there should not be the problem to use it for vlc, mpd, mplayer.
New version (Rubens Edition) of the Peppy Player was released today.

New features:

- Streamlined the process of adding new languages.
Languages * project-owner/Peppy.doc Wiki * GitHub
Here are the screenshots showing Language and Home menus in Japanese:



- Added CD album art functionality. The CD cover images are retrieved from the largest free web collection on Here are the examples of the CD Player with album art:



- Made Screensaver and Language menus customizable.

- Implemented Weather forecast screensaver.
Weather * project-owner/Peppy.doc Wiki * GitHub
Here are the examples of the Weather screensaver:



- Added information about connecting Bluetooth devices.
Bluetooth Devices * project-owner/Peppy.doc Wiki * GitHub

- Provided disk images.
Disk Images * project-owner/PeppyPlayers.doc Wiki * GitHub
Rubens problem

Peppy Player looked attractive enough so I decided to build one for myself. My cabinet will be based on the design of a 1940's Philco radio that I like, but first I needed to get the hardware and software together. After a couple of false starts I decided to use your configuration, except that I have an Adafruit PiTft Plus (#2441) instead of the #2097 you used. There seem to be no documented differences.
I "express" installed Rubens. The touch screen didn't work. It displayed the original splash screen no matter what I did. evtest showed that screenpresses were being sent to the OS. The web browser interface does work -- I can control all functions with it.
I cleared the sdcard and "express" installed Vermeer on it. Everything works: touch screen and web browser. Just to confirm the problem, I installed Rubens again on a fresh sdcard and found the same thing: web browser works, but touchscreen doesn't.
Do you have any thoughts about this? I'd like to run Rubens (mostly for the album cover fetching), and I'd hate to be stuck in Vermeer as you continue to develop this extraordinary program.
Hi WetOne, sorry for the issues with that disk image. Let me check the installation procedure in my environment. If I'll find any issue I'll try to fix it and provide working disk image.

In the next version I'll also add album art functionality to all web radio stations which provide info about current song/artist. That will add eye candies to UI.
Meanwhile you can install Rubens edition using disk image for Vermeer edition:
Login to pi

Create backup copy:
mv /home/pi/Peppy /home/pi/Peppy.bak

Install libraries required for Rubens edition:
sudo apt-get install git
pip3 install discogs_client
sudo apt-get install bluealsa

Install Rubens edition as described here:
Updating Guide * project-owner/Peppy.doc Wiki * GitHub

git clone...

Reboot: sudo reboot

After that you should have Rubens edition working.
The only difference with disk image will be Raspbian Stretch Lite version.
It's 06/27/2018 in Rubens edition and 04/18/2018 in Vermeer.
Last edited: