8 open source music players for Linux

Learn about the features and capabilities of these music players for audiophiles.
359 readers like this.
video editing dashboard

Opensource.com

In the first part of this series, I write about the key requirements for an audiophile digital music player and shared the criteria I use to evaluate open source music players. Here in the second part, I'll use those criteria to help you pick the right software for your needs.

First off, there are a lot of open source music players out there! Which is a wonderful thing, because each one is designed to make someone (or several someones) happy, depending on the features they require. A number of very thoughtfully designed and popular players don't serve my criterion of passing music directly through to my DAC, including Amarok (see this discussion), Clementine (see this discussion), and JuK (the only information I could find about setting output devices dates back to 2005).

Several players—Jajuk, Lollypop, Lplayer, Museeks, Musique, Qmmp, and Rhythmbox—contain no controls (that I could find) to select an output device.

I also passed on Aqualung (required compilation from source), Alsa Player (core dumped on trying to add a 96/24 FLAC file to the playlist), Elisa (site indicates it is still in heavy development and currently at version 0.2 or 0.3), Exaile (seems that the current version 4.0.0-rc3 requires compilation from source), GNOME Music (waited a looooong time with no sign of my music library being successfully loaded), and LXMusic (could only add MP3 files to the playlist).

Eliminating those applications left me with eight to review. First, I'll tell you a bit about each and then I'll share my ratings.

8 open source music players

Audacious

Audacious is available in my system's repositories. After installing it, I configured the ALSA output plugin option, which supports automatic bit depth, to use the hardware option for the DAC. My DAC's location, /proc/asound/card1, showed that a 96/24 track was playing correctly. I could see a static bitrate, but no sign of the bitrate as a track plays nor the sample rate/word length. There is kind of a spectrum analyzer that gives a rough idea of the music level. Cover art seemed to work fine. As far as I could tell, the user must build the playlist and run the player on the playlist. My library of some 7,500 songs imported in less than 10 seconds—wow! I had some trouble figuring out the left-hand side of the display; after loading my library, it showed 15 genres (I have many more), then four artists, then one album by one of those artists. I could add URLs, but there was no directory of streams. All in all, not bad. Especially for those who have fond memories of Winamp but want something open source.

DeaDBeeF

DeaDBeeF—such a name! But anyway, I installed the .deb file available from the site, which required two steps:

sudo dpkg -i deadbeef-static_0.7.2-2_amd64.deb

and

sudo apt install -f

I used Edit > Preferences to select the ALSA output plugin and select my DAC's "Direct hardware device without any conversions." I could see in /proc/asound/card1 that 96/24 tracks played correctly. The player shows a static bitrate, sample rate, word length, and a few other items. Oddly, the player presented a volume control that worked, which means there is some kind of conversion going on, at least when that control is used. There's also an option to configure digital signal processing (DSP) in Preferences, including an equalizer and a resampler. I removed the resampler but couldn't make the equalizer stay away. I found I could change the layout by enabling Design Mode—there are lots of customization options there. Neither the spectrum nor the scope options gave me a solid indication of their level. Cover art looked fine. This player also seems to be playlist-oriented. URLs can be added, but there does not seem to be a predefined directory. Like Audacious, my library imported very quickly—I estimate less than 10 seconds. It looks pretty good, with a serious focus on performance and flexibility, less on eye candy.

Gmusicbrowser

Gmusicbrowser is available in my system's repositories. After installing it, I used the Settings menu (the GNOME3 gear in the upper right) to configure the output to use ALSA (after passing it through GStreamer) and selected my hardware device. I could see in /proc/asound/card1 that 96/24 tracks played correctly. Song Properties shows the static bitrate and sample rate, but not the word depth. The player presents a volume control, which works and I suppose is managed by GStreamer. Gmusicbrowser includes a ton of layout options—it's possible to make it look like many other players. Also, you can add many different columns to the track-level display (e.g., bitrate, channels, size, sampling rate). Cover art looks good. Music can be played from the library or a playlist, but there's no sign of the ability to use a stream URL. My library import was fast, well under 10 seconds. It's a very decent player that fits in well with my GNOME desktop.

Goggles Music Manager

GogglesMM has been one of my favorite players for quite some time now. I really like the fact that it works directly with ALSA (i.e., no GStreamer pipeline intervening). I generally install it following instructions on the Launchpad page, then configure Settings > Preferences > Audio to use the ALSA driver and the hardware device for my DAC, with the No Resampling box checked and Replay Gain off. I can see in /proc/asound/card1 that 96/24 tracks play correctly. The only indication of sample rate and word length appears on high-resolution albums (for example, "24/96" in white text on a green box on the lower-right corner of the album cover in the album display panel). As expected, when directly interfacing to the ALSA hardware interface, there's no opportunity to set the volume or otherwise fiddle with the data stream. The overall UI organization seems pretty decent. You can fiddle with colors and turn the cover or lyrics views on or off. Cover art seems to be handled well. It can play music from an album or a playlist and URL streams can be defined and played. Library import is decently quick, under 20 seconds for my library. It's a really solid and purposeful no-frills player.

Guayadeque

Guayadeque has long been my go-to player. I generally install it following instructions on its installation page, which gives a good summary of working from the source tree as well as using the precompiled binaries on Launchpad (for those who use Ubuntu). Once installed, I use View > Preferences > Playback to configure the output to be ALSA and the hardware interface of my DAC. I can see in /proc/asound/card1 that 96/24 tracks play correctly. When music is playing, I can see the static and instantaneous bitrates, file format, levels (peak, average, peak hold… wow!). I don't see the bit depth or sample rate of the files anywhere. However, having the instantaneous bitrate is pretty cool—I once noticed a song that was supposed to be 96/24 but had a very low bitrate; it turned out it was 96/16, which is pretty unusual. Although Guayadeque uses GStreamer, there's no inadvertent ability to mess with level settings and the like when the hardware level interface is selected, unless the DAC has hardware volume control. I like the overall organization of the UI, and it's quite configurable. Cover art is handled well. Music can be played from the album or playlist, stream URLs can be defined, and a number of stream URL databases are provided (for example, Shoutcast). Also worth noting is Guayadeque's great "smart playlist" feature (which queues songs from my library similar to the one playing). My library imported in under 20 seconds. It's a great player.

Quod Libet

Quod Libet has also been a regular player on my computer. It's in my repositories, so I install it from there. Configuring the output is slightly challenging; this page of the documentation is very helpful (and this would be a good moment to mention that the Quod Libet documentation, in general, is excellent). In my case, File > Preferences > Playback allows me to set the output (GStreamer) pipeline to alsasink device=hw:1,0 at which point I'm good to go. I can confirm in /proc/asound/card1 that 96/24 tracks play correctly. The player offers to display a huge number of columns and apparently knows about bit depth and sample rate, but I haven't been able to get them to show up on any of the displays. I do see the static bitrate. Quod Libet uses GStreamer, and its volume control functions "even when it shouldn't." The UI is well-organized "out of the box" and easily configurable. Cover art is handled well. Music can be played from an album, a playlist, or stream URLs, and stream URL databases are provided. My library imported very rapidly, in under 10 seconds. Quod Libet is a very good player with wonderful documentation.

Strawberry

Strawberry is a fork of Clementine created by Jonas Kvinge. I quite like Strawberry—it offers a lot of Clementine's attractiveness while letting me redirect its output to my DAC. I downloaded the latest build for my distro, installed and configured it for use with my DAC using Tools > Settings > Backend to select "Output to a sound card via ALSA" and selected my DAC from the drop-down and the hardware interface. I can confirm in /proc/asound/card1 that 96/24 tracks play correctly. The Context button (the strawberry) at the top-left shows details of what's playing, including the sample rate, bit depth, static bitrate, the engine (GStreamer), and the device. These can also be shown in the listing of tracks. The volume control works (because of GStreamer, I guess). Cover art is well-executed. Music can be played from the album or playlist, but stream URLs do not appear to be supported. My library imported very rapidly, in under 10 seconds. In sum, it's a very good player and a very useful fork of Clementine.

Cantata

Cantata is a front-end for the MPD music player back-end, and it's an extremely fine player combo. At this point, I don't use Cantata/MPD on my desktop, but I do run Cantata to control my home music server (which runs MPD headless). Both Cantata and MPD are available in my distro's repositories, and MPD is available in the repositories for the distro I run on my music server. Configuring MPD is a bit more work than the average desktop music player; you can read about my efforts. Configuring Cantata is a breeze; its configuration screens include a lot of useful hints, and the code works really well, unlike some MPD clients I could name. MPD provides direct access to ALSA devices, and I can confirm in /proc/asound/card2 on the music server that 96/24 tracks play correctly. Cantata picks up the static bitrate, sample rate, and bit depth of the file from MPD and shows it in the "info" screen for the track playing. Dynamic information, such as instantaneous bitrate or level, isn't provided by the MPD protocol. Cover art is tricky; the best way to handle it is to install a web server on the music server and configure it to share cover art files. I cheat a bit and keep a local copy of the cover art on the desktop I use to run Cantata. Cantata will also find art associated with the artists. Cantata can play music from an album, playlist, or stream URL, and it includes a nice database of stream URLs. It's the best MPD controller and a really fine player when combined with MPD.

Rating the music players

The following table shows my ratings of the various open source music players I tried. I've broken the players into two groups: most are standalone music players and one is a music player front-end used in conjunction with a music server like MPD.

I evaluated each application based on the criteria I outlined in part 1. Here's the rating scheme I'm using:

  • 5 points for ALSA configurability 
  • 2 points for fully meeting a criterion
  • 1 point for partially meeting a criterion
  • 0 points for not meeting a criterion
Player ALSA

config

 

Sample rate/

word length
Bitrate

while playing
Music level

while playing
Cover art Playlist

optional
Smart

playlist
Good UX Stream radio Total 
Maximum rating 5 2 2 2 2 2 2 2 2 21
Audacious 3.9-2 5 0 0 1 2 0 0 2 1 52%
DeaDBeeF 0.7.2 5 2 1 1 2 0 0 2 1 67%
Gmusicbrowser 1.1.15 5 1 1 0 2 2 0 2 0 62%
GogglesMM 1.2.1 5 2 0 0 2 2 0 2 1 67%
Guayadeque 0.4.5 5 0 2 2 2 2 2 2 2 90%
Quod Libet 4.1.0-1 5 0 0 0 2 2 0 2 2 62%
Strawberry 0.4.2-121 5 2 1 0 2 2 0 2 0 67%
MPD-based player:
Cantata 2.3.0 5 2 0 0 2 2 0 2 2 71%

There you have it. Eight audiophile-grade players that avoid resampling (though I think I prefer the players that talk directly to ALSA without GStreamer being involved) to hand the bits over to the DAC to make sublime music. Otherwise, they offer different features and different organization, from the minimalist Audacious to the super-configurable Quod Libet to the chameleon Gmusicbrowser. Worth a special mention are the excellent level meters and smart playlist feature in Guayadeque.

Chris Hermansen portrait Temuco Chile
Seldom without a computer of some sort since graduating from the University of British Columbia in 1978, I have been a full-time Linux user since 2005, a full-time Solaris and SunOS user from 1986 through 2005, and UNIX System V user before that.

17 Comments

Thanks for the comment, falm. I took a quick look at the link you posted and followed a few more. Indeed it appears that it's possible to specify the ALSA device (meaning I could aim at the 'hardware' interface) and the mixer (meaning I could turn it off), both of which make cmus sound interesting.

I haven't really taken any kind of serious look at console-based players, but maybe I should do a roundup of those as well.

In reply to by falm

maybe I should do a roundup of those as well

That's kind of already happened :-)

But that article's about three years old and can use an update and a different perspective ...

In reply to by clhermansen

Dr. Mister Chris,
Thanks for this great review.
Do you think it is possible to include the criteria that DFS files should be read ?
I think actually only DeadBeef and Audacious can do the job
Best regards,

Olivier

Thanks for your comment, Olivier! I don't know anything about "DFS files". Why would it be important to be able to read them? What are they?

In reply to by Olivier (not verified)

Maybe he means DSF?
I've added support for reading DSF and DSD in Strawberry.
But you need gst-libav 1.15.1, currently a development version only, and it also depends on using the taglib provided with strawberry (or that the distro has a taglib from git) since there isn't a release that supports it yet.

In reply to by clhermansen

Thanks for the nice write up. I'm confused though, you want players that don't 'mess' with the native audio stream and then give points to players that implement software volume?

Hi Sander, thanks for writing! I struggled with what to do about players that use gstreamer. As far as I can determine, it doesn't mess with the bit stream as long as the gain is set to 1 and the hardware device can accept the format and bit rate of the bit stream. But still it bothers me that it's there. Should I have docked points for players that (unnecessarily, in my case) incorporate this extra processing step, even if it's apparently transparent? Maybe I should have.

In reply to by Sander Jansen (not verified)

I love DeaDBeeF soooo much! I've been using for well over 5 years and it plays everything I throw at it including psf and midi files.

Good article but... I can't believe that VLCisn't on the list

Thanks for the comment, Andrew_B. I thought about going further afield - for example, VLC, console-based players, and so on. My main reason for staying away from VLC as a music player is that, in my perception anyway, it isn't really built with managing a decent-sized collection of music in mind; as far as I have ever been able to determine, if I want to play a music track in VLC, I use the open file dialogue to go find the music file. There's no browser using the tags, no search by tag ability, and so forth. Maybe I'm wrong! But I've never stumbled upon this kind of stuff while trying out VLC.

In reply to by abaldwin

Not sure why you gave Strawberry 0 on bitrate, since it shows the bitrate both in the playlist and in the context. It shows the average bitrate on streams with VBR.

Hi Jonas, not sure why I did not see your comment earlier but my apologies for not responding!

I'm really sorry I missed this bit rate on playback - I see it's the average bit rate of the song, as opposed to the effective instantaneous bit rate while playing, but still that's an omission on my part. I've corrected the article!

In reply to by Jonas Kvinge

Thanks, I will make a music play from this

Quod Libet is amazing player which I have been using it from last 2 months. Now Its my favorite player. One can also use it along with many movie apps like Cinema apk.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.