i've mentioned several times that i've been working on an mp3 library management program called drachen that was specifically designed to handle enormous volumes of mp3s. i am now happy to announce that the project is dead and i'm abandoning it. ha! weren't expecting that were you!
really, this is a good thing. the reason i'm killing off drachen is because i've finally found another program that does what i need, can handle a library of over 20,000 songs without bringing my computer to its knees, and (most importantly) is maintained and improved on by someone else. i'm lazy. i'd much rather spend my time contributing bug reports and/or patches to someone else's open source project than heading my own.
it wasn't easy. i had to spend an inordinate amount of time trying out every linux mp3 player under the sun. finally though, i think my quest is over.
i currently have 20,527 mp3 and ogg vorbis files in my collection (almost entirely legal too, fwiw; i ripped my large CD collection and downloaded a lot from my emusic.com subscription). i store them on a fileserver machine and mount the directory over NFS. it comes out to just about 100GB in all.
when you have a collection that large, you face two main problems. one is the interface. just keeping them in directories for each artist and album doesn't really cut it. you really need some kind of database like interface to navigate them without going insane. OS X (and now windows) users can testify that the iTunes interface is pretty much the gold standard for mp3 management. so that's pretty much what i've been searching for.
the second problem is that with that kind of database like interface, you need some kind of database like backend to store the metadata so you can search it efficiently. doing this in a way that scales up to 20,000 tracks is difficult. the vast majority of players that i looked at just couldn't scale that well performance-wise. they would bog down the whole machine for several minutes and be completely unresponsive every time they had to perform a simple search. (iTunes, apparently even has this problem, so even if apple released a linux version it wouldn't do me much good). there seems to be some point probably around 10,000 songs that breaks their backs. on my machine at work, i have about 3,000 songs and every player i tried there handled that size library very well without any noticable performance problems from any of them.
my solution was to use a fullblown, hardcore, RDBMS for the backend. this worked pretty well and scaled quite nicely, but if anyone else was ever going to use it, requiring an end-user to install and admin a whole RDBMS just to listen to their music wouldn't really fly.
here's a quick rundown of all the linux mp3 players/managers i tried out and how they fared. (for reference, this is all on my dual 1GHz P3 w/ 256MB RAM running gentoo and a 2.4.20 kernel).
it has a pretty nice library manager with an iTunes-esque interface. its musicbrainz integration is very convenient for fixing mistagged files. performance was abysmal. once the library was loaded, just starting zinf would take 20 to 30 minutes. editting any id3 tags would again take over the machine for 15 minutes with 100% CPU usage.
the GNOME music player. it has the nicest interface of all the players i've tried. very much an iTunes clone and done with the minimalist style and focus on usability that makes GNOME so nice. performance unfortunately was only a little better than zinf. just selecting a new song would lock it up for several minutes.
Juk 2.0 beta 1
the KDE entry. decent interface. it loads faster and performs a little better than rythmbox (about 30-40 seconds of hang time following any action), but still slow enough to be unusable. it also had musicbrainz integration and a nice interface for editing id3 info.
the madman developers took a similar approach to what i was doing with drachen. madman is just a playlist editor and library manager and expects you to use another program to actually play the mp3s. the interface is a bit weird, but has a very powerful mini query language for searching. it performed so well on my work machine's smaller collection that i had high hopes for it. alas, it also choked on the massive home collection.
another playlist manager that piggybacks on XMMS for the actual playing of songs. the interface isn't very polished looking and it lacks some of the slicker features of the others (like the 'rating' feature, or musicbrainz integration), but it does have 'fuzzy' search which is nice if you can't type or spell and integrates nicely with k3b for CD burning. but none of that matters next to its performance. yammi is fast. whatever they did, they did it right. it's as fast with 20,000 tracks as any of the other players are with 20. it takes about 15 seconds to first load, but after that there isn't any noticable delay anywhere. we have a winner.
(musik also looks like it could be promising, but gentoo doesn't have an ebuild for it and i'm too lazy to install it manually.)