My story really starts with Trackbox, an experiment of a perl script daemon I wrote long ago that worked like a headless jukebox daemon and allowed a client program to connect to it to provide a user interface to allow the user to browse the collection of music, manage playlists, play, pause, change volume, and all the other things you expect from a media player. It was pretty hacky, but it did the job. When Shank got MPD, the Music Player Daemon, working properly in raw C, though, I retired Trackbox. MPD is very similar to Trackbox: a super lightweight daemon that sits in the background, performing the duties of of music player. If I don’t need to interact with it, I don’t even need to have a client running — like when my linux tower boots and the init script starts it up. MPD resumes playing where it left off before I even launch X. I’ve obviously been a long time fan of even the idea of MPD.
I’ve been using a Mac increasingly over recent years. It started with a 15″ MacBook Pro for work, and eventually I got a 13″ one for personal use. My current and second Mac is a 13″ 2011 MacBook Air, and I’ve been frankly thrilled with it. Macs are great, but but I think a lot of folks endure the frustration of hunting for a great music player that simply doesn’t seem to exist.
Currawong started this excellent thread on head-fi which gives a really great overview and discussion on the most visible Mac music player options. I’ve tried most of them, but never really found one to my liking. Each was either buggy, lacking features, stupid expensive, or didn’t maintain a library, making practical use limited. I have gone back to iTunes every once in a while, and I’ve always been disappointed with crashing or general bloaty slowness. I finally went as far as to uninstall it from my system entirely, reclaiming hundreds of megabytes. (After removing the iTunes.app, I simply used the Preferences screen of “Software Update” to disable future update notifications.) I must say, I don’t miss it, not one little bit.
I finally decided to give MPD a go on the Mac. After using it for perhaps about a month now, I can happily say it is absolutely my new favorite. At home, I mount my server’s RAID array, and at work, I mount my off-site backup, a 3Tb external drive at my desk, so I always have my full collection of mostly lossless music readily at my disposal. I’ve even found a nice way to start mpd with different config files so I can aim it at the server or the local collection, depending on what I need. Being a global hotkey junkie, I’ve mapped restarting mpd with each config to a different key.
MPD is only as nice to use as the client you’re using. Theremin is nice native Mac one, but seems fairly unmaintained at this point. It scrobbles and has album art, but its main drawback for me is that it doesn’t allow browsing the collection by directory structure like most clients. I would recommend giving this one a try; it may fit the bill. There are countless others to choose from, though. I managed to get the excellent, GTK-based Sonata client to run under OS X with the help of MacPorts, but it is a bit kludgey. Client175 is a very nice, web-based one.
I’ve actually found myself liking the terminal-based ncmpcpp client best. It is jam-packed with features, remains blazingly quick, and even has the ability to add a random album, artist, or track to the playlist! I can understand why many folks might not like using a console client, but it works really well for me. Bind it to pop up with a global hotkey, and you have a slick, quick-launching client that you don’t even need running most of the time!
The other client I use is mpc, the command-line interface client. I barely ever actually use it on the command line, though, but through global hotkeys to toggle (play/pause) and play next track. I’ve also written a wrapper for mpc that allows me to play (or append to the playlist) random tracks on random albums. The most unique feature of my tool is the ability to specify “top-level” directories by a pre-designated “short code” and add random tracks or albums only from within one top-level dir at a time. The main directories of my collection are genres, so I can throw on some random ambient music or random drum ‘n bass. For example, with my Alfred extension, I do my ⌘+space to open him up, and type, “rt db” — immediately 10 random drum ‘n bass tracks are added, and the first one plays.
Honestly, this has revolutionized how I listen to my music. I often don’t even have the patience to drill down my folder structure or otherwise hunt for something to listen to. Now I can tell alfred “rt ch” and have random chill out beats. If I want to hear the entire album for one of the songs, ⌘⌥5 will play it.
I use and adore Alfred for many things including setting up these global hotkeys, and I feel it is worth plenty more than what Andrew is asking for it. But if you want something that is free, I recommend BetterTouchTool. Here is the key configuration I use on my Air:
- ⌘⌥1: play/pause toggle
- ⌘⌥2: next track
- ⌘⌥3: play 10 random tracks from entire collection (hold shift to append)
- ⌘⌥4: play 1 random album from entire collection (hold shift to append)
- ⌘⌥5: play the album the currently playing song belongs to (hold shift to append)
- or all the above, holding Control as well causes the command to be directed at my server, which drives the living room speakers/headphone system
- Control+⌥+n: launch ncmpcpp under iTerm2
(Note: I use Control+⌥+letter to launch / switch focus to my most often used apps. This makes me very efficient and I love it.)
MPD does the trick for me. It is slim, efficient, and invisible. I can do 90% of everything I need with a simple global hotkey, and Growl gives me feedback. When I actually do want to browse around or manage the playlist, ncmpcpp or other client lets me do that. There are some folks who look for an “audiophile” player, but the fact is that if the program can decode the file and feed it to the audio device in a “bit perfect” manner, every app should sound the same. I think there are apps that are broken and don’t do this quite right, and I also think there are people who get fall victim to the placebo effect. I really see no reason to worry about the sound quality of MPD — I trust it.
I’ve uploaded my mpct.php script to GitHub in case anyone is interested in it. If you use it, I would love to hear about your experience. If you have any questions about any of this, I would really love to hear from you in the comments!
Installing MPD on OS X is really easy according to their instructions. Simply install homebrew with
/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
brew install mpd
I really like this brew software manager! I can even install packages they don’t provide with something like
brew create //unkart.ovh.org/ncmpcpp/ncmpcpp-0.5.8.tar.bz2