As I described in my last article, when I'm using a Linux-based computer to listen to music, I pass that music through a dedicated digital-analog converter, or DAC. To make sure the bits in the music file get through to the DAC without any unnecessary fiddling on the part of intermediate software on my computer (like audio mixers), I like to aim the music player directly at the hw interface (or, if necessary, the plughw interface) that ALSA provides to the external equipment.
So, when I hear about a new music player, the first thing I do is figure out how to configure the output device. In the process of reviewing quite a few Linux-based music players, I'm beginning to see a pattern.
First, a sizable group of players depends on GStreamer to play the audio. As its website says, GStreamer is a multimedia framework that allows construction of arbitrary pipelines of media-processing components. In my case, the alsasink plugin can be used in a pipeline, like this:
gst-launch-1.0 -v uridecodebin uri=file:///path/to/my.flac ! audioconvert ! audioresample ! autoaudiosink
to play back the file
/path/to/my.flac on the default ALSA audio output device. Note the use of the
audioresample component in the pipeline—that's one of the things I don't want! Also, I don't want to use the ALSA default output—I want to select the device.
GStreamer-based music players vary in the configurability of their outputs. At the one extreme, players like QuodLibet provide the ability to precisely configure the output. At the other extreme, players like Rhythmbox use the default audio device, meaning—as far as I can tell, anyway—that mixing and resampling are going to happen. For example, the PulseAudio Perfect Setup Guide explains:
Applications using the modern GStreamer media framework such as Rhythmbox or Totem can make use of the PulseAudio through gst-pulse, the PulseAudio plugin for GStreamer…
and then shows how to use
gconftool to enable that:
gconftool -t string --set /system/gstreamer/0.10/default/audiosink pulsesink
So far, I've only found a few GStreamer-based music players that let me build the dedicated output connection I want: QuodLibet, Guayadeque, and Gmusicbrowser. All three of these are great music players, but for my use—once configured—I prefer Guayadeque.
Second, there is a different group of players that don't use GStreamer, instead taking a different route to getting data to the output device. A subgroup of these players are clients for the MPD music server backend. Of the players that use the MPD backend, Cantata is my favorite, by far. Of course, the nice thing about MPD being a server is that it can be controlled by other devices, such as Android-based phones or tablets. Therefore, for a music player hooked up to the home stereo or AV center, MPD is my go-to.
Of the non-MPD, non-GStreamer music players I've tried that support my use case, I really like Goggles Music Manager.
With that background, let's take a look at some new (to me) players.
Museeks music player
The Museeks music player is available on GitHub in source or binary (.deb, .AppImage,.rpm, amd64, or i386). Taking a quick look at the code, I see that Museeks is an Electron application, which I find kind of intriguing. The .deb installed without problems, and upon startup I was greeted with the Museeks user interface, which I find to be simple but attractive.
After clicking on the Audio tab, the only option I saw changes the playback rate, which is not of interest to me. After further online searching, I opened an issue on GitHub to ask about this and was encouraged by a quick and friendly response from Pierre de la Martinière saying he thought it interesting and that he would look into it. So, for now, without the ability to configure output, I'm going to put this otherwise interesting-looking player on pause.
LPlayer music player
The LPlayer music player is also available on GitHub and as an Ubuntu PPA. I used the latter to install the current version, which proceeded without issue. LPlayer offers a very simple user interface: audio files (music or whatever) are loaded from the filesystem into the current playlist, reminiscent of VLC. I don't mind this kind of organization, but I like a more extensive, tag-based music browser. However, a lightweight player has its own charms, so I continued with the evaluation.
Here is LPlayer's main screen with two tracks loaded:
The Settings control offers the playing track's current position, the playback speed, options to "remove silence" and "play continuously," and a graphical equalizer, but no output device configuration.
A bit of source code investigation showed that LPlayer uses GStreamer. I decided to contact the author, Lorenzo Carbonell, to see if he had any thoughts about the idea of configuring the GStreamer playback pipeline within the application. Until I hear back from him, I'll keep this little player on the shelf. (By the way, Linux fans, Sr. Carbonell has a pretty great-looking Spanish-language Linux blog, El Atareao-Linux para Legos).
Elisa music player
According to the KDE community website, the Elisa music player is intended to provide "very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms." One of these days, I need to set up a KDE desktop so I can try some of this stuff in the native environment, but that's not in the cards for this review.
I took a look at the Try It instructions to get an idea of how I might, well, try it. According to that page, my options were: 1) try a Flatpak, 2) install ArchLinux and use the AUR available, or 3) install Fedora for which "the releases are usually packaged." Based on these options, I thought it was time I tried a Flatpak…
me@mymachine:~/Downloads$ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
me@mymachine:~/Downloads$ sudo flatpak remote-add --if-not-exists kdeapps --from https://distribute.kde.org/kdeapps.flatpakrepo
flatpak install kdeapps org.kde.elisa
Required runtime for org.kde.elisa/x86_64/master (org.kde.Platform/x86_64/5.9) is not installed, searching...
Found in remote flathub, do you want to install it? [y/n]:
Hmmm let's see,
org.kde.Platform… maybe I don't want to bring all that in. I think I'm going to press pause on this player, too, until I can take the time to set up a KDE environment.
Conclusions for this round
Well, really there aren't many, except that Museeks and LPlayer reinforce my impression that being able to pass music data to the DAC without tampering is not a primary design goal for a lot of Linux music players. This is too bad, really, because there are plenty of decent-to-excellent, low-cost DACs that are compatible with Linux and do a great job of converting those digits to sweet, sweet analog.
Let's not forget the music
I've been shopping for music downloads again, this time on 7digital's Linux-friendly store. I picked up three great albums by Fela Kuti, in CD-quality FLAC format: Opposite People, Roforofo Fight, and Unnecessary Begging. This man made so much great music! The sound quality on these files is generally quite decent, which is a nice treat. Opposite People dates back to 1977, Roforofo Fight to 1972, and Unnecessary Begging to 1982.
I also bought Trentemøller's 2016 album, Fixion. I've liked his stuff since I first bumped into The Last Resort. This video documentary provides an interesting perspective on Trentemøller and his music, which is quite distinctive; I like his use of guitars, which can sometimes hint at '60s surfer music. The version on 7digital was available in 96KHz/24bit, so that's what I bought.