Blog

Warning: The article below is over five years old. It may be badly written, poorly considered, immature, obsolete, no longer my opinion, or simply flat-out wrong.

Linux Music Players Suck

As some of us already know, all software sucks. But Linux music players seem to suck more than most. I mentioned to a colleague that I was still using the original XMMS to listen to music, and his horror (combined with some niggling little issues) caused me to explore the alternatives to this old, outdated, unmaintained bit of software. It turns out the alternatives suck.

What I want

Some things are absolutely non-negotiable features:

  • Must be able to scrobble (ie. submit music to Last.fm).
  • Must be able to deal with large collections of music (18,000 tracks or thereabouts).
  • Must support UTF-8, for artists with non-ASCII names.

Some things are mere nice-to-haves, varying from "This is standard stuff and I'll be rather annoyed if you don't have it" to "Mere frivolity":

  • Support for embedded artwork. Lots of players are quite keen to fetch artwork from Amazon; I don't necessarily want artwork in my music player, but if you're going to display it at least use the details in the files.
  • Support for watching directories for new files - a kind of auto-playlist-management thing. This ties in with the above requirement of 'not melting when dealing with large collections' - it's no good watching my nominated directories if you're going to rape my CPU every 5 minutes to check for new files.
  • Persistent queues. I generally listen to my entire collection on shuffle, and just queue up albums and tracks I particularly want to hear as and when. Sometimes the queue gets quite long; it should be saved and restored if the music player is quit and re-run.
  • A Winamp 2-style interface. I've never been seduced by the "your media player should look sexy" arguments, but I like the winamp interface because it lets me have the player always on my screen without taking up lots of space (see the top of this screenshot).

What I currently use: XMMS 1

I have been using XMMS for many years now. It has some niggles in it, but mostly it's OK. But, like everything else here, it sucks:

  • Not-quite-there support for UTF-8: some names show OK, others don't. Fortunately it still scrobbles these tracks OK, so I can live with it displaying weirdly in the playlist.
  • No concept of a library, so whenever I buy another CD or download a new track I have to add it to the playlist by hand, or put up with duplicates. Generally I never bother - instead, I periodically clear the entire playlist and re-add the directories where I keep my music.
  • No persistent playqueue. This was the one that made me start to look for a replacement.
  • Not currently maintained. Which is fine, really, as it works fine and doesn't crash. But none of these niggles are ever going to be fixed.

Despite these I've stuck with it at home; it's the only player I've found that takes the 18,000 tracks in my collection in its stride. Changing between tracks is quick, searching and scrolling the list is fast. I can go without the tree-view browsers in other players if they're going to be dog-slow to use.

First attempt at something else: Rhythmbox

Rhythmbox is surprisingly good. But, despite this, it sucks:

  • It does support a library management system, but I can only tell it to watch a single folder! I don't have all my music below a single directory.
  • The library-watcher goes absolutely nuts whenever I add new music to the collection, taking many minutes at 100% CPU to find the 10 new files I've added. It periodically does a similar thing just to find out if I have added something or not.
  • No embedded artwork support.
  • No persistent queues.
  • A disturbing habit of crashing X when I quit it on my work computer. It doesn't do this at home, but I still do not approve. Having everything I'm currently working on disappear is not pleasant.

It gets an honourable mention for working out of the box and having a mostly non-broken artist/album/track browser.

Amarok

Turns out I work with someone who used to be a core developer on Amarok, and I read on his blog how unremittingly awesome it was. I trusted him, and I believed the hype. So I installed it and gave it a spin. Unfortunately it made me viscerally angry on my first attempt at using it. It has a startup wizard that wanted me to set it up a database before I could use it. Once I'd got over the shock of a music player insisting on an SQL backend I told it where my music could be found. It then spent 20 minutes indexing my music, in silence, as it told me to 'please wait'. I've since been told that I could have played stuff direct from the filesystem in that time, but there was nothing on the screen to indicate this. Then when it had finally done this I tried to play some music. It played me the introduction clip from the developers, then gave me an error message telling me it couldn't actually play MP3s after all. This was the final straw; having waited patiently for it to do its thing only to be told that the music player couldn't actually play any music drove me over the edge and I quit in disgust.

But I am a sucker. People kept telling me that I was just unlucky and it was actually very good. So I gave it another spin. Here's why it sucks:

  • It doesn't use quite as much of the CPU when scanning for new files in the library, but it's still noticeable when it does it, and it's not exactly nimble.
  • Laggy when changing tracks and displaying information about what's currently playing.
  • I don't think its queue persists, but I'm not sure.
  • The user interface feels 'big'. It uses a lot of space to display little information. It's also somewhat 'modal' - there's information displayed when the player is stopped that isn't there when it's playing. For instance, it's actually got quite a neat little "recently added" display that shows you stuff new to your library - but you can't get at this when the player's playing. You must stop it first if you want to listen to something new (or find it manually).
  • Library browsing is slow, even though it's got a Postgres database as its backend.
  • Prediction/exploration functions are probably only any good when you've listened to several thousand tracks (I think it's trying to recommend tracks I listen to for playing next); as it is, it just feels cluttered and useless.
  • I think it considers a track played as soon as any of it has been played; skipping it doesn't count as a non-play. If this isn't a case then the user interface needs to be brushed up.

If you're looking for something that's going to insist you explore your music and have the time to devote to letting it build up a decent body of stats to use, Amarok may be worth a look. Personally, I'd give it a miss. Sorry Max.

Audacious

Audacious is either the first or second rewrite of the original XMMS codebase; it's one of those projects that's been forked and forked again. It is, on face value, a maintained version of XMMS. It's got scrobbling support, the Winamp interface I like, and also supports UTF-8. In fact, it's almost good enough to replace XMMS. But, like the others mentioned here, it sucks:

  • No persistent playqueue.
  • No automatic library management.
  • Really slow when dealing with big playlists; scrolling through the list is not possible due to the lag. Displaying the next page takes around 10 seconds on a playlist of 18,000 tracks. It might be quicker when all the metadata has been loaded in already, but it'd have to re-do it whenever I re-loaded the playlist. XMMS displays the filenames of files and redraws them once it's loaded the metadata; it seems Audacious waits to load the data for all the files and then redraws the screen.
  • At least one of the main developers is a jerk. This isn't a big thing for most people, but I was willing to fix the first item, and could probably have a stab at the second two. But having chatted on the IRC channel for a bit I can't face it. The devs apparently want to take Audacious in a different direction, and dealing with such a... forceful personality would not be fun. My motivation to contribute has gone.

As it happens I have switched to Audacious at work - I have a small enough MP3 collection at work that any lag is not enough to annoy me, and the improved UTF-8 support is worth any slowdown.

XMMS2

I haven't actually tried this, but this is why I think it sucks anyway:

  • A client-server model for a music player? You've got to be kidding me. I can see why it would be useful in some cases, but I'm not building a jukebox or placing client units throughout my flat. I just want to listen to music on my computer. Client-server is overkill. I could forgive this, but...
  • All the clients look like 'my first GUI app'. They are pretty much all huge and/or horrible. The few clients that I looked at and thought "I could use this every single day" are either abandoned or missing key functionality. When they say it's not ready for public usage yet, they're not kidding.

Exaile

Apparently some people look at software projects like Amarok and think "Hey, that's neat. Let's rewrite it in Python.". Rhythmbox decided they wanted Amarok in GTK rather than QT, and it's ended up a little different, so maybe the same thing will happen with Exaile. It's a bit more minimal (which is a good thing), but it still sucks:

  • No embedded artwork support.
  • Smart playlists aren't automatically updated - if you have a playlist open on a tab and that playlist gets new tracks added to it, the open tab does not gain them. You must close it and re-open.
  • There's a lag on changing tracks. There's a lag whenever you try and do just about anything, in fact - 3-5 seconds after adding something to your playlist and around 10 seconds when you change the tree browser from 'artist' to 'album' or similar. Naturally there's a lag and a whole load of CPU usage when the library updates itself.
  • I don't think I can close the main window and have it run just in the tray.

It does, however, have persistent playqueues. It would be better if it had more info to begin with (see below).

General Reflections

It would be really useful if there was some source that could give a music player details about everything you've ever listened to; Last.fm would be the obvious source but there's (currently) no feed for your own scrobbles, and you can't get your entire scrobbling history from Last.fm. This is a shame; I have a hunch that Amarok's features would be much better if you could 'prime the pump' with this data; likewise for Exaile's smart playlists.

Before emailing me madly to tell me how wrong I am, please understand I'm not impugning you personally for your choices; if these players work for you, great. Unfortunately, they don't entirely work for me.

.