Qball's Weblog
Squishybox – A better squeezebox touch experience.
Why?
This project started mainly because of 3 reasons:
Need for a small, energy efficient MPD Box.
For a long time I have been searchin for a nice small box that could run Music Player Daemon (link). The box needed to have the following minimum set of features:
- A display to show the current playing song.
- A touch screen or
- The possibility to add support for a remote control.
- Has (or allows for adding) good quality audio output. (15-16 true bits minimum.)
- Low power.
- Fast enough to run MPD with my full collection loaded.
- Network interface. (Preferable wired).
The Squeezebox Touch seemed to fit this perfectly.
No alternative for MPD.
I bought a Squeezebox Classic, because it seemed to be a nice device. Good readable display, good output, remote control, etc. However it turned out to be a failure. The problem was not with the hardware but the crappy software squeezecenter (it is currently called). My home server, a 1.5 Ghz via esther with 1 gig of memory, is to slow to run it properly. An intel core 2 duo 1.8Ghz was doable, but far from snappy and fast. In my honest opinion a simple music ‘server’ should not require a full fledged desktop cpu with several gig’s of ram. The sonos system is way to expensive. So something to run MPD on seemed to be the best solution.
Great donation!
It seemed I was not the only one looking for a good MPD box. Nick kindly donated me a Logitech Squeezebox Touch. (Thanks again). This allowed me to start developing this project.
Goal of the project.
In short the goals are:
- Get MPD running on the Squeezebox touch.
- Provide a GUI for controlling MPD, setting up and configuring the box.
Why MPD
Music Player Daemon (MPD) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files while being controlled by its network protocol.
- It is proven to work on machine with limited resources. 128mb with a 533 mhz arm 11 (the specs of a Squeezebox Touch) are more then sufficient for MPD. And will easily work with a library containing more then 100.000 songs.
- It is reliable and stable.
- It is well maintained and actively developed.
- It has many ready to use clients. So you can control your MPD from your PC, mobile, tablet, ipod, etc.
- It can stream to the outside world and play streams from the internet. MPD can do almost everything squeezecenter can.
- I am very familiar with MPD.
The GUI
Because CPU power is limited, there is no hardware acceleration a simple client is needed. Jive (or squeezeplay) is written using SDL and this seems like a good tool-set to base our gui on:
- The gui should allow the user to see what is playing and to provide basic controls for MPD. In the beginning more advanced control over MPD is left to external clients.
- The GUI should allow you to setup and configure the network. Add shares to the music collection, etc.
Trying out the GUI
!! This code is Proof-of-concept code. It is written to test out what is and isn’t possible.
The GUI can be ran on a normal pc. The touch input is replaced by mouse input, and the infrared input is replaced by keyboard strokes.
Screenshots
The Main window:
The Now Playing screen:
The Playlist:
The Server Menu:
Dependencies
- libmpdclient-2.0
- vala
- libsdl-ttf
- libsdl-images
- glib-2.0
Keyboard command
- H – Home button.
- Q – Quit.
- Up – Up
- Down – Down
- Right – Right
- Left – Left