DefaultMusicPlayer

Specifications for this cycle :

Default Music Player - WORK IN PROGRESS

  • Application Role: Music player

  • Release target: Karmic

  • Contributors: SiDi

  • Field of the spec: 'Application Study'

  • Current application: Listen 0.5

  • Studied applications: Listen 0.7 trunk, Exaile 0.3.0 trunk, Banshee 1.4.3, Rhythmbox 0.12

I also planned Ario 1.2 and Quod Libet 2.0 in a first time, but Ario isn't trivial at all to setup, and Quod Libet seems to be having trouble with playlists. I don't think end users would accept that.

I prefer being honest, I currently use Exaile as a player, and I'm not feeling comfortable at all with Mono on a default install. I've been trying not to let this influence the review, but I ought to mention it.

Summary

Everyone listens to music nowadays. Users expect their computer to be a media centre, and they expect to can play music in the background while doing anything else with their computer. The music player is probably the second most important application after the web browser.

  • Listen is a Python music player with support for last.fm and other podcasts, and intuitive playlists
  • Exaile is another Python player designed to be a GTK version of Amarok and to be easily customizable
  • Banshee is a Mono music and video player meant to be feature-full
  • Rhythmbox is a music player written in C for the GNOME desktop environment

Release Note

Not applicable until a choice of application has been made. At the discretion of the release manager (or the drawer of the spec, once approved by the developers team).

Rationale

Listen 0.5 has been doing the job we expected him to do : play music with little RAM usage. The current development version eats up much more RAM, which was the very advantage of Listen. Thus, it is time to explore what other players can do with the same RAM usage.

Use cases

I'm going to write the most common expectations I can think of. Some are contradictory but not everyone has the same tastes, so we expect players to be flexible.

  • Obviously : listen to music

  • Manage music :

    • Create a collection and static playlists easily
    • Create dynamical playlists (based on song rating, genre, date till last listening, etc.)
    • Import some files / A folder into a playlist
    • Easily edit the tags of one or several song(s)
    • Easily specify the name of the covers in the music folders, easily download covers
    • Easily browse through the computer without having to use collections or playlists
    • User should be able to chose wether double click on a song appends it to the playlist or plays it or does both
  • Quality of the playback :

    • Replay Gain support
    • Gapless support for Ogg/Flac (or almost gapless)
    • Cross Fading support (but optional or with the ability to change the duration of the fading)
    • Support for common multimedia formats (possibly with the installation of additional packages)
    • Equalizer
  • Other features :

    • Party mode (with big album art and minimal track information)
    • Informations about the song
    • Ability to read lyrics
    • Last.fm synchronisation and Last.fm radio
    • Shoutcast radios
    • List of similar artists / Radio of similar artists
    • List of songs from the same album / singer / genre
    • Jamendo plugin
    • Ability to play video clips

The specification

Integration / Coherence

  • Compliance with XFCE : All these applications are GTK+, but Rhythmbox and Banshee have been thought for GNOME and have GNOME dependencies. They however work apparently good with those dependencies installed. Banshee uses some icons that are not stock icons.

  • Dependencies and package size

    • Exaile and Listen :

      • Exaile 0.3 and Listen have common libs for almost everything.
      • Listen has a hard-dependency on notification-daemon...
      • Exaile recommends hal and python-inotify for device detection.
      • On a clean Karmic w/o media player : Listen 0.6.2 needs 15MB, Exaile 0.2.14 needs 75MB, Exaile 0.3.0a3 needs 11.4 MB.
    • Banshee :

      • Banshee seems to recommend a lot of packages, which makes its dependency list big.
      • It mostly depends on : brasero, cli-common, libgconf2.0-cil libgdiplus, libgnome-vfs2.0-cil, libgnome2.24-cil, libmono0 and 15 other mono libs, libmysql, libsqlite, mono-gac, mono-runtime, mysql-common
      • Extra size needed from a default karmic : 52,1MB archives | 108MB after install
    • Rhythmbox :

      • Introduces gnome dependencies : gnome-media, libgnome-media0, libnautilus-burn4
      • Extra size needed from a default karmic : 4984KB archives | 23.8MB after install
  • Coherence of the GUI with Xubuntu's other applications

    • Menu entries : Listen's menu is messy (i'll come back to it), the Preferences plugin is in the "Music" entry, for instance. Exaile lacks a menu entry for "Play/Pause/Previous/Next", but it has anything else and under logical names. Rhythmbox's menu entries are coherent. Banshee has track-specific entries in the "Edition" menu, which is confusing, and a submenu containing only one item (Tools -> Covers).

    • Tray icon hovering : Only Exaile and Rhythmbox use the default bubbles for this. Listen's trunk version doesn't show anything. Banshee shows a sexy bubble that uses the GTK+ theme's colours, but with a slider used as a progress bar for the remaining duration, which gives you the impression it's click-able.
    • Notifications
      • Listen : Shows on new song / tray hover

      • Exaile : Shows on new song if the GUI isn't focused - will add tray hover soon, with album art + song's title as a title

      • Banshee : Shows on new song when the GUI isn't focused, without album art, and the song's title in the body

      • Rhythmbox : Shows on new song if the GUI isn't in the current workspace, without album art

Screenshots

Listen

Exaile 0.2

Banshee Music

Banshee Video

Rhythmbox

listen_tb.png

exaile-0.2_tb.png

banshee-music_tb.png

banshee-video_tb.png

rb_tb.png

Full size

Full size

Full size

Full size

Full size

The screenshot for Exaile is 0.2.14 because the 0.3.0 branch's GUI is not finished yet. There also is a screenshot of Banshee's video mode.

Usability

  • First impression / Ease of understanding how to get started and how to use the basic features

    • Listen : The GUI shows 5 empty list stores and a side panel in the middle of the GUI, which is rather surprising. Importing a directory is very easy, the scan is done quickly. Double clicking in files from the collection panel adds them to the playlist, interrupts current song and plays them. It's rather irritating for me to have playback interrupted each time I want to append tracks to my playlist, but other users think exactly the same about Exaile's appending way to do. Apart from that, Listen gets you to your music quickly.

    • Exaile : Empty playlist, empty collection panel. The GUI isn't finished yet in the 0.3 branch, but you will be able to play a radio directly, or to play tracks from a file browser panel. You have to use Edit -> Collection manager to add directories to your collection, which is slightly harder to figure than an obvious "Import directory" à la Listen or Rhythmbox, but goes less in your way afterwards. Exaile imports your collection quickly and you can then begin putting files in your playlist (can't play from the collection, as Exaile is fully playlist oriented).

    • Banshee : Banshee also presents an empty interface, and you have to import a media (from the Files menu) to get music played. Banshee then offers you to choose between importing a folder, files, "videos from your photos folder" (i don't understand this use case), or directly your home directory. I think Banshee would gain to strip this down to a folder selection menu. That's for me the only logical use case. Also, you can play radios only by manually adding them one by one, there is no pre-set list.

    • Rhythmbox : Rhythmbox shows an empty collection too, and you have to import a folder. During the import, RB can't stop moving the collection list stores, which triggerred my CPU fan several times. You can then play files from the collection or queue them. Apparently, RB can't let you define playlists at all, which I think rather disappointing. RB also features an empty radio list, but the Magnatune store lets you play music directly.

So far, no player has an optimal approach and takes the user by the hand to tell him/her how to get started with his/her collection. I think this could be improved. Edit: the day after i wrote these lines, Exaile implemented such a function in it's trunk. I can't grab Git trunks from here, if you follow Banshee or RB's trunk let me know.

  • Coherence of the toolbar / menu entries actions with their description (ie. the text and icon match the action of the entry).

    • Listen : Ouch. A Display menu that isn't optimal, a Control menu that contains what it should contain, and.. all the rest in a Music menu that seems to have been filled randomly. I dislike this much (the global GUI and the preferences menu are in the same state).

    • Exaile : Exaile is in my opinion quite good in this aspect; The menus are still empty due to a reimplementation of the whole player, but what's inside is at the good place, and only the location of the cover and collection managers could be argued.

    • Banshee : Banshee does the same as Listen, in a lesser way, with its Edit menu. I don't understand why the track-specific tools are not separated from the usual content of an Edit menu. Having track properties labelled 'Properties' just above 'Preferences' is weird, and i didn't understand the difference between 'Remove from collection' and 'Erase from player', and didn't dare checking. I also don't see why the shuffle option doesn't have a proper icon in the toolbar rather than being attached to the 'Next' icon.

    • Rhythmbox : Rhythmbox's menus are well organised, the only things that I dislike is the implementation of the volume button (I consider sliders convey the volume information more easily and are just as easy to use), and the fact that the devs used the Home icon for a toggle hide / display of the album and artist lists.

  • Quality of the translation : (we will use the stable versions to evaluate this, french locale as usual since I can't evaluate translations into languages I don't understand :>)

    • Listen : the stable version is not entirely translated (i'd say 10 to 20% untranslated), and a few strings are not accurate, as if the translators didn't check the rendering inside the application.

    • Exaile : the french translation was very good until i erased the 0.2 pot when installed Exaile 0.3 (:p). Exaile 0.3 uses the Launchpad Translators group for it's translations, and so far the french translation is very good (i wouldn't say it's bad even if it was, since i'm the translator, anyway ~ i'm probably subjective)

    • Banshee : The translations are overall of very good quality too, except a detail that is obvious : the developers made the (bad) decision of cutting menus into parts of phrases, so that some words are translated once and then inserted in the menus. When only half of a menu entry is translated, of course it doesn't look good anymore. It also breaks compatibility with some locales' particular grammar rules. It's the case in french for the 'Erase from player' entry i already mentionned.

    • Rhythmbox : As expected from a GNOME application used by default in Ubuntu, the translation in french is just better in RB than in any of the other players above

  • Day-to-day use : as you can guess, I didn't do this part, and I didn't try to extrapolate. Users have different ways to use their players and I can't cover them all and decide which player is most agreable without using them individually for weeks, and living without my player for so long is unbelievable to me.

Performances / Resource usage

  • Memory leaks

    • Listen : Lots of memory leaks. The RAM doubles in approximately an hour, but it's a development version.

    • Exaile : A few memory leaks. In the same period the RAM grows about 1 or 2 MBs, but there are leaks in the collection scanner according to the developers.

    • Banshee : After playing a few videos and songs, some memory is lost too. It's between Listen and Exaile.

    • Rhythmbox : Not many leaks, but still some. It goes a few MB up after some time. If you use the Jamendo feature, it climbs to 700MB (ie. more than Xubuntu, Firefox, and any of the other music players running together for hours).

  • RAM usage :

Listen

Exaile

Banshee

Rhythmbox

Comments

Private dirty in Heap

51.3

46.0

41.7

31.0

The python apps are heavier

g-s-m's write memory

74.1

55.1

69.5

41.6

Banshee doesn't share libs so it weights more in the end

Write mem after some time

118.9

56.7

94.1

50.4

Exaile is the most efficient regarding leaks

  • Responsiveness of the GUI : ok for every player's main features. Exaile takes a few seconds to open if the playlist is very big (apparently fixed in bzr trunk), and Banshee's video mode lags too much to be used(see below). Rhythmbox lags during a long time when you try to open the Jamendo catalogue (and lags seem to affect the whole app afterwards).

Features - TODO

Thank you if you've read until there. I'm too lazy to extensively use all the apps and decide about their features. I think Listen is a bit late compared to other players, and Exaile is probably a little too due to the time it took to write the 0.3 release (but plugins in Exaile are really, really easy to write). Banshee and RB have a good integration with different music services. For the rest the apps are sensibly the same without digging deeply.

Main Features

  • What are the most important features ? Which application lacks them ?

Advanced Features

  • What features for what app ? How useful are the extra features ? How easy to use are they ?

Features worth compared to the rest

  • Are the features of the most feature-full application worth any resource usage / usability / integration drawbacks ? Are you sure they are worth it ? Keep in mind the default applications should aim end users.

Extra maintenance work after the spec / Quality of relationship with upstream

  • Listen : No contacts.

  • Exaile : Very good relationship. They accept to plan their releases and development focus to meet our release needs, they use the whole Launchpad tools, which makes collaboration very easy for me as a developer, and they are open to ideas and critique.

  • Banshee : No contacts.

  • Rhythmbox : No contacts. Apparently Ubuntu has problems to communicate with upstream too, which results in RB maybe being given up in Karmic.

Issues that need solving - TODO

That would be too long to write too. I consider Exaile the most suitable choice, so I'll focus on bugfixing and GUI improvements for Exaile, and I think the TODO list is their whole buglist, which has decreased a lot but which is still not empty (yet).

Upstream

By the Xubuntu team

Comments

I reviewed CPU usage of many popular players and Exaile did the worst, you should be able to easily come to the same results with the Phoronix Test Suite. http://gquigs.blogspot.com/2009/08/music-player-review-cpu-performance.html

  • This review is quite useful however when you say "Banshee shows a sexy bubble that uses the GTK+ theme's colours, but with a slider used as a progress bar for the remaining duration, which gives you the impression it's click-able." this is because it *is* clickable (although this was not the case in older versions). It is also possible to toggle play and pause in Banshee via the commandline easily using its dbus api -- twright-tdw 2009-11-06 18:28:11

Playground - TO BE ADDED ABOVE

  • Multimedia keys support :

    • Green : works out of the box without GNOME dependency

    • Yellow : works under certain conditions or can be setup with a simple command line in the XFCE shortcuts

    • Red : doesn't work without writing a script or installing a GNOME dependency

Key name

Play*

Stop

Prev

Next

Comments

Listen

Play doesn't pause if already playing | Stop doesn't work

Exaile

The xlib plugin is not ported to 0.3.x yet but there is a CLI available

Banshee

There is a CLI available but there isn't toggle play / pause in the CLI (only play and pause)

Rhythmbox

The Previous / Next buttons only work if there is a song resumed or paused, but not stopped

* usually labelled as Play/Pause on keyboards, so i expect them to work as Toggle Play/Pause

  • Most common formats support :

Format

Ogg

Flac

MP3

WMA

WAV

Listen

Exaile

Banshee

Rhythmbox

Xubuntu/Roadmap/Specifications/Karmic/DefaultMusicPlayer (last edited 2012-03-25 16:46:56 by knome)