Today’s post will be just about technology.  Let me start with some background.  As would be expected from someone who was a music major, I have a large music collection and almost all of it is actually on CD’s. (I also have a stack of vinyl I will digitize eventually, just don’t ask when)  Once children arrived at our house, I discovered that CD’s + toddlers aren’t a good mix, so I made a decision to move things to hard drives for redundancy, ease of collection management, and so I could centralize storage and play music all over the house without lugging discs everywhere.

I originally started encoding to FLAC because I cared about audio quality but didn’t have huge  hard drives. I installed mt-daapd/firefly media server on my linux box so I could use iTunes as a front end on other machines. So far, so good.  Then I made what was, from a music standpoint, a big mistake — I got an iPhone.    Apple doesn’t want you to do with your iPhone what you can do easily with desktop iTunes, stream from another iTunes instance.  As a matter of fact, Apple seemed determined that one ought not stream one’s own music collection to one’s iPhone by any means.  Simplify Media (which no longer offers the service) managed to get an app approved, but it wasn’t linux friendly.

First Try –   Crossfire

I found Crossfire, which is actually a PHP based web app which creates a web front end to your firefly server.  Since you access via the browser, I could point my iPhone at it.

Problem 1 – iOS won’t play FLAC files

Solution 1 – Get a bigger hard drive and go back to WAV files, which led to:

Problem 2 – Streaming uncompressed files clobbered my home wireless network

Solution 2 – Swallow hard and encode 192Kbps MP3’s , keeping the WAV files for backup and in the hopes I’d eventually be able to use them.

This met two of my three demands, my music was now backed up and portable.  However, the management tools in crossfire left much to be desired.   Any playlist creation had to be done at the server level. which is a piece of cake in iTunes ,but a royal pain in the firefly web admin interface.  Crossfire had a couple of problems too.  It’s search is persnickety, so sometimes I’d put in a partial title and the track wouldn’t come up.  It also didn’t seem to want to sort by track number when pulling up an album.  Listening to ABBA out of order isn’t a big hassle, but multi-movement works were a mess. Finally there were quite a few tracks firefly just wouldn’t play, even though they were there and it would show them in lists.  Actually clicking to play the track would cause nothing to happen.  After much “fun with chmod” to try to fix this, I decided this weekend to look for other options.

First came Zeya.  A new server that creates a web app and does everything in HTML5.  The good news – it seem to find all my files, it’s simple to install and config (though setting it up as a service is tricky).  The bad news – it doesn’t actually work with mobile Safari, so no iPhone listening, so…..

In looking for alternatives I noticed that Ampache has an official iPhone client, which made it worth a try.  Configuration was a mixed bag.  You have to create a MySQL user before you start, but the installation part of the app will generate the config file from a filled in form, although since my server runs headless I was running the install through a web browser on another machine, and this meant more command line voodoo to get the file moved to the right place.

I discovered a challenge right away.  It seems that, unlike Firefly or Zeya, Ampache will only find your music if the folder structure and filenames match the format you give when setting up the catalog.  Since my labeling in the music directory is inconsistent, I had to do some file and folder renaming. Also, when Ampache updates its database, it reverifies all the files, which is very slow.  There are still a couple of files which Ampache doesn’t seem to want to find, and I wish iAmpache would allow  browsing by album title and search from the iPhone app, both of which are possible from the web interface.

Finally Ampache deserves praise for its permissions implementation.  Unlike  firefly, which allows for an admin password and a listening password, Ampache has five or six different roles and allows the admin to create users and assign them to roles, which allows better tracking of use and more granular management.

I need to see what Ampache does with WAV files, and it looks as if I’ll be renaming a few folders, but I may have finally solved my whole house listening problem.