The perfect GTK music player: can Exaile replace Amarok?

I've always liked Amarok: it does everything I always wanted, and more. It looks perfect in every way ...
But .. it uses the QT library, and although there are tricks to make QT applications more fit in with your gtk desktop/theme it will never fit in perfectly, not only graphically but also because you still need to load the qt libraries when you want to listen to some music and it is built to interact with the KDE desktop environment.

So, I've been looking for an alternative, a GTK application strong enough to actually be able to replace Amarok, the king of all software music players.

Requirements

First a list of features I would like to see in my new music player. Let's keep it real: I don't think there is any music player out there that does everything listed here, not even Amarok. I can live with some missing features, as long as it has the most important ones. The other features might be added later on anyway, and who knows, maybe I'll start contributing to a project if I really like it...

In order of importance:

  • Last.fm submitting
  • Jack output
  • Advanced management of songs/albums/artists and playlists with ratings (not just bookmarks)
  • Last.fm stream listening
  • Ipod support
  • Radio streams
  • Podcasts
  • Artist/album/song information fetching from Wikipedia
  • File system monitoring (Inotify) so that it detects the new songs when I add them to my file system
  • Lyrics
  • Volume normalization (either through ReplayGain or just automatically) (if this is not built-in I can always route through a compressor/limiter myself)

Stuff that other people like, but I don't need/want/care about:

  • On screen display (when a new song starts)
  • Visualizations
  • Musicbrainz(*)
  • CD-ripping (not the task of a music player imho)

(*): I absolutely love Musicbrainz and use it all the time but I don't think it is functionality to be put in a music player. I use the Musicbrainz Picard tagger to organize my collection. Putting all the needed functionality inside the media player would make it very bloated. So in theory I actually wouldn't need any tag editing at all in my music player
(this could be a discussion in it's own merit: why don't we get rid of all tag editing functionality in all music players and use decent, separate utilities such as the Musicbrainz Picard tagger to tag your collection?)

Contenders

It struck me how many GTK music players there are out there, and especially how similar some of them are.

  • Quod Libet: written in python, pretty advanced (podcasts, shoutcasts, Last.fm submissions, reg-exp song searching)
  • mpd: although I like a daemon based approach (I sometimes don't have X open - pretty seldomly though - ) it (even combined with any of the graphical front ends) doesn't offer anything close to my requirements
  • Banshee: built on Mono. Has podcasts, ipod support, smart playlists, and even inotify support but didn't even compile on Gentoo, so never mind...
  • Listen: written in python, it looks pretty advanced: podcasts, shoutcasts, Last.fm, Wikipedia fetching, ... it can even create playlists for you based on your Last.fm account
  • Rhythmbox: Gnomes music player inspired by Apple's iTunes. featuring internet radio, ratings, lyrics, artwork, Last.fm, podcasts, cd-ripping, ipod writing (only partial !), plugins, file system monitoring (I think through polling, not through inotify). According to some people it's pretty buggy and I can only agree: version 0.10 (latest) crashed many times on me :(
  • Exaile I kept the best one for the end ;-). It's another one written in python, inspired by Amarok and hence has many similar features. In addition to that you can also get guitar tabs with it. (why no drum tabs? ;-) ) According to somebody on trac it's better then Listen.

is Exaile a worthy alternative?

Description on the Exaile website:

Exaile is a music player aiming to be similar to KDE's Amarok, but for GTK+ and written in Python. It incorporates many of the cool things from Amarok (and other media players) like automatic fetching of album art, handling of large libraries, lyrics fetching, artist/album information via Wikipedia, Last.fm submission support, and optional iPod support via a plugin.
In addition, Exaile also includes a built-in SHOUTcast directory browser, tabbed playlists (so you can have more than one playlist open at a time), blacklisting of tracks (so they don't get scanned into your library), downloading of guitar tablature from fretplay.com, and submitting played tracks on your iPod to Last.fm

The description pretty much sums up all there is about Exaile.
However I want to add it also supports podcasts and streaming radio.
You can also rate all your tracks and it has some smart playlists (depending on ratings, newest, random, top tracks, ...)
It uses sqlite (no MySql support like Amarok, which is not a big miss)
The fact that it allows to have multiple playlists / radio's / ... open in tabs is a killer feature! (Amarok guys: implement this too!)
Another cool thing are the plugins which add even more functionality, and it's very easy to install them from inside the program, enabling goes instantly (without the need of a restart)
Also, it can output via jack, because it uses the GStreamer framework. It does however create a new jack instance for each song, so each time a song changes, it drops the current jack output and creates a new one. I don't like this, because each time have to re-attach my routings, maybe there is some automated way to do this (with qjackctl or something?) but I haven't figured it out yet. If anyone knows more about this, let me know!

When last.fm submission fails (eg when your connection is down) it doesn't keep a queue to resend later like Amarok does, also it currently doesn't offer Last.fm radio streaming.
When searching through your collection the results aren't updated instantly: it takes a second or so (just like when using Amarok, so that's fine)
I don't think Exaile can automatically mount your Ipod for you. But I don't think this is the task of the media player: You can always use a deamon (or your DE) to do that (I use thunar-volman in Xfce for that). The media player should however work well with the device, after it's mounted. In Exaile the Ipod plugin works pretty well, when you mount your Ipod you can make it connect to it, show you the playlists and songs, and you can add songs and playlists just like in Amarok. I couldn't, however, edit the playlist that was on the Ipod and creating and deleting a new playlist was a bit buggy (gui still showing old entry with some random ascii characters instead of not showing the playlist anymore)

As a last negative point, it seems to not support inotify as of yet. You can configure it to systematically re-scan your collection every specific interval which is okay, but doesn't come close to inotify (especially for huge collections)

So, to conclude I would say Exaile is a worthy alternative for Amarok, which is a huge thing to say. It doesn't offer everything Amarok does, but it does have most important features and even offers some - useful ones - that Amarok doesn't have. And I never had it to crash or anything like that, it behaved well and stable.

The project is however pretty young and it is being actively developed. Which is a must because some features still need to be implemented (such as inotify support and Last.fm streaming)
But I see much activity on trac, especially in the domain of Last.fm where I can see that support for Last.fm streams is scheduled for the next minor release (0.2.11) so I'm not worrying and I'm using Exaile full time right now.

I haven't deleted Amarok just yet, but I don't think that will take very long ;-)

Don't take my word for it, but if I ever find the time for it, I would even like to get intimate with the code base and do some contributions.