mpbox and mpservice

drensber edited this page Jun 5, 2012 · 16 revisions
Clone this wiki locally

mpbox and mpservice

mpbox and the accompanying mpservice are co-dependent projects that, together, create a very small (~7MB) bootable image based on Linux with a client-server style media player.

Network devices like tablet computers or smart phones can control the music player via a very simple XML-based web service interface or an AJAX-style web UI that uses that interface.

The basic block diagram looks like this: mpbox block diagram

mps-librarydbd scans a disk on an external NAS server containing digital music files and reads their metadata into a sqlite3 database. It runs continuously and updates the database whenever the disk's contents change. mps-library is a low-level C-language API used to search and browse the database and add items from it to the playlist, which mps-service will decode and play songs from. mps-library is also able to invoke other control functions on mps-service (pause, fast-forward, rewind, etc.) mps-library is used by a set of command line utilities collectively called mps-commands, which together implement the web-services API.

What's posted here should work if you want to build an image. The biggest limitations right now are:

  • mp3-only (but soon to be expanded).
  • x86 only (will port to ARM when my Raspberry Pi board arrives)!
  • Setup and configuration are still not very slick (you must modify an XML file).
  • Works with every web browser I've tried, except Internet Explorer

I will soon be addressing all of these issues (with the exception of the last one, which I could kind of care less about).

Presently, the only user interface provided is the web interface. The web interface is very simple (I consider this a good thing): You can browse through your music library using the interface on the left side of the screen. When you choose songs, they will be added to a running queue, which can be viewed and managed on the right side of the screen.

Here is a picture of the web UI running in Safari on the iPad: ipad safari screen

In the not so distant future, I also intend to create iPad/iPhone applications to use with mpbox.

I will soon add a description of the project, along with a description of the architecture and API soon. Since this is an "embedded device" style project (rather than just an application that runs on a standard desktop system), I will also post vmware (and maybe also qemu) images so that you can try it without actually flashing a boot disk.

Feel free to email me (drensber [at] gmail [dot] com) if you're interested in contributing to this or knowing more about what I'm doing.