MPD

PuppyPlayer using mpd / mpc / ncmpdpp / ympd / davemp / MPDroid

mpd

mpd is the server side of a client/server architecture that runs on the system that will be producing the audio. It can be controlled using local and remote clients, one of which is mpc. There are many, many additional mpd clients, of which two are suitable for our purposes. ncmpcpp is an ncurses-based client for use on the local console or a remote terminal. davemp is a perl-based, self-contained web client that can be used via any browser.

PuppyLinux "LuPu" 5.2.8 is based on Ubuntu Lucid. Thus, PuppyLinux can install standard Ubuntu Lucid packages. In order to install and use mpd (Media Player Daemon) the following packages must be downloaded and installed, when using the Puppy Package Manager, including all required dependencies. I have a local copy of each of this files at //tater/music/mpd/PKGs/:

* adduser_3.112ubuntu1_all.deb
* base-files_5.0.0ubuntu20_i386.deb
* debconf_1.5.28ubuntu4_all.deb
* debconf-i18n_1.5.28ubuntu4_all.deb
* libasound2_1.0.22-0ubuntu7_i386.deb
* libavcodec52_0.5.1-1ubuntu1_i386.deb
* libavformat52_0.5.1-1ubuntu1_i386.deb
* libavutil49_0.5.1-1ubuntu1_i386.deb
* libcue1_1.3.0-1_i386.deb
* liblocale-gettext-perl_1.05-6_i386.deb
* libmms0_0.4-2_i386.deb
* libmpdclient2_2.1-1_i386.deb
* libpam-modules_1.1.1-2ubuntu2_i386.deb
* libpython2.6_2.6.5-1ubuntu6_i386.deb
* libresid-builder0c2a_2.1.1-8_i386.deb
* libshout3_2.2.2-5ubuntu1_i386.deb
* libsidplay2_2.1.1-8_i386.deb
* libtext-charwidth-perl_0.04-6_i386.deb
* libtext-iconv-perl_1.7-2_i386.deb
* libtext-wrapi18n-perl_0.06-7_all.deb
* libwavpack1_4.60.1-1_i386.deb
* mpc_0.19-2_i386.deb
* mpd_0.15.4-1ubuntu3_i386.deb
* passwd_4.1.4.2-1ubuntu2_i386.deb

A little manual installation work shows that for mpd these are the required packages:

* libavutil49_0.5.1-1ubuntu1_i386.deb
* libcue1_1.3.0-1_i386.deb
* libmms0_0.4-2_i386.deb
* libresid-builder0c2a_2.1.1-8_i386.deb
* libshout3_2.2.2-5ubuntu1_i386.deb
* libsidplay2_2.1.1-8_i386.deb
* mpd_0.15.4-1ubuntu3_i386.deb

Each package must be installed using:

$ cp /mnt/music/mpd/PKGS/*deb /root
$ for pkg in /root/*deb ; do
    echo $pkg ;
    /usr/local/petget/installpkg.sh $pkg
done

mpd requires a particular 'version' of libmpcdec.so, so create this soft-link:

$ ln -s libmpcdec.so.6.1.0 /usr/lib/libmpcdec.so.3

''Note: The 'trimmed' lupu_528.sfs that I have created for 128MB USB flash drives and the Wyse thin client is missing libcurl-gnutls.so.4.2.0 (and softlink libcurl-gnutls.so.4). This file and softlink need to be copied to /usr/lib.

Now, modify /etc/mpd.conf with these changes:

$ cp -p /etc/mpd.conf /etc/mpd.conf.ORIG
$ cat /etc/mpd.conf.ORIG | \
    sed '/music_directory/ s|/var/lib/mpd/music|/mnt/music|' | \
    sed '/playlist_directory/ s|/var/lib|/mnt/music|' | \
    sed '/db_file/ s|/var/lib|/mnt/music|' | \
    sed '/user/ s/mpd/root/' | \
    sed "/host/ s/localhost/`hostname`/" |
    > /etc/mpd.conf

One key item to note, is that mpd can use a music repository on a remote CIFS/SMB system, but I have found that the mounted share must use the noserverinfo option, viz:

$ mount -o noserverinfo,password=none //tater/music /mnt/music

mpc

mpc is a command-line client for MPD. It is the reference client provided by the MPD developers and has basic, but complete, facilities for controlling the music daemon from the console or remote terminal. It depends only on the libmpdclient2 library.

To recap:

  • libmpdclient2_2.1-1_i386.deb

ncmpdpp

ncmpdpp is an ncurses-based console client that is extremely useful, using full-screen layouts and color-coding. A local copy of this package is also found in the //tater/music/mpd/PKGs directories. It depends on two packages. The first is required to run at all, the second is required when doing tag editing:

  • libtag1-vanilla_1.6.2-0ubuntu1_i386.deb
  • libtag1c2a_1.6.2-0ubuntu1_i386.deb

ympd

ympd is a self-contained web-client written in C. It provides MPD controls to any system running a browser with late-version JavaScript support (Opera 11 won't work, but Opera 12 does). It can run on the same machine as MPD or on another system, but it makes sense to have it run on the same system.

ympd is not an official debian or ubuntu package, and I had to build it from the source package. I fired up a spare Puppy Linux 5.2.8 box, and mounted the DEVX SFS package on-the-fly and untar'd the source. Following the build instructions, I created build in the top source package directory. My only difficulty with the build was a missing library. I had to load the libmpdclient2-dev package. Once done, the build was successful. Running the binary only requires the ordinary, non-dev libmpdclient2 package, so that simplifies the install for everyday use.

To recap, ympd, once built, requires:

  • libmpdclient2_2.1-1_i386.deb

davemp

The following perl modules are needed by davemp:

  • HTTP-Server-Simple-0.26.tar.gz
  • JSON-XS-1.0.tar.gz

MPDroid

MPDroid is an Android device client. It is a project hosted on GitHub and I was able to download the APK package directly from GitHub directly, avoiding the whole Google Play/Marketplace hassle. It turns out that the latest stable release, v1.7.2, works fine on my Nook HD+ tablet, but it will not install on my older Nook Color or Nook Tablet. I found that v1.05 will work on these devices, again downloading the APK directly from GitHub. These APK files are situated with other MPD files at //tater/music/mpd.

  • MPDroid_1_07_2_final.apk : v1.7.2 : Nook Tablet HD+
  • com.namelessdev.mpdroid-v30.apk : v1.5.0 : Nook Color & Nook Tablet