Migrating Apps — Amarok
Next in my app migration list was Amarok. The old and trusty Amarok 1.4. The same Amarok that, when browsing the web, reveals many fond memories yet few seem able or willing to reproduce or mimic.
Throughout my research and testing I found myself referring to a decent review of many audio players. Many thanks.
I do not fiddle with cover art or lyrics. I perform minimal tagging and only to make the music player usable. I do not use notifications, popups, or OSDs. I seldom transcode files and when I do, normally from the command line with ffmpeg. I do not need to keep music or audio files synced with a mobile device. I have no interest in sharing services, favorites, or smart lists.
I am not an audiophile. I just like some tunes occasionally. Still, I have my own usage habits and Amarok is no exception.
Warning. Nothing written here is intended to be a meaningful review. I am focused only on my peculiar needs. I have not researched every single player or even most features.
My desired features with any replacement:
- Minimize to tray.
- Use folder-based files and playlists, no required library.
- Support playlists located outside $HOME.
- Basic statistics: play count and last date played.
- Sort by play count or last date played.
- Support a hand-held TV remote control (LIRC/MPRIS/DBus).
- File browser supports nested folders and playlists.
- Replay gain. Nice to have but not critical.
- Web radio streaming support.
- Zero Internet contact unless explicitly configured.
- Allow loading a playlist without autoplaying.
The only statistics I am interested are play count and last date played. I listen to albums by track order, but for my miscellaneous playlists I listen in shuffle mode, by last date played, or by play count.
The remote control support is important for my living room media player. Amarok 1.4 had some nominal dcop support, just enough for me to make the player usable with a remote control. I want similar access with any new player.
An annoying feature when loading a playlist is the first song immediately starts playing. This design skewers the statistics I am interested. This also screws with my mind because often when I load a playlist I have not yet decided in what manner I want to play songs. Usually I do not decide until I view the play count and last date played statistics. Amarok 1.4 supports Load Only as well as Load and Play. I like the former option to allow me to decide how I want to play a list.
I have songs organized by folder. I have folders of miscellaneous music files based on genre or category. The overall structure looks like this:
Artist Album Album etc. Artist Album Album etc. Miscellaneous Folder-Genre Miscellaneous Folder-Category
I have a single folder containing all playlists in m3u format. That is where I manage my music playing. The playlists are saved in the exact same folder structure as the parent music folder. From within Amarok I use this folder to load a playlist and arrange the playing order. Only seldom do I directly access music files or folders.
In Amarok 1.4 I organized the browser the same way. That is, the browser supports folders and subfolders that I access my playlists.
I do not want to duplicate files or playlists across several user accounts and computers. One design element I noticed about many Linux music players is they are, like so many apps, focused solely on storing information in $HOME. This challenges efforts to centralize data. While all of the players open a playlist stored outside of $HOME, many are designed to store their own playlists only in $HOME. Amarok 1.4 is $HOME centric, but uses an xml file to store the location of playlists, thereby bypassing this $HOME focus.
Several players looked promising with respect to creating a layout similar to Amarok 1.4. For example, Exaile, gmusicbrowser, Quod Libet, and Banshee. They supported some kind of left-side browser pane. Yet no support for subfolders. Thus the browser pane becomes a long list of playlists. Not the end of the world, but cluttered.
Most of the players are designed with an obsession toward filters and smart playlists. Often these options cannot be removed or disabled. Clutter.
I momentarily looked at SMPlayer and VLC. While they play m3u playlists just fine, the primary design focus of both apps is videos and playing files. Song organization is not part of the overall design focus.
XMMS 1.2.11. Beauty is on the eye of the beholder. One of the ugliest interfaces I might imagine.
Audacious 3.7.1. Simple layout and design. No database. No browser pane. No way to organize by Artist/Album. Nominal organization might be possible through tabs, but only one tab per playlist. Thus a potential huge collection of tabs. The lack of organization could be tolerable since Audacious remembers the last folder accessed. As I store all of my playlists in one folder I need not use more than one tab.
Audacious supports no statistics, which means no sorting by play count or last date played. While a nice app, Audacious would be a great app if there was some nominal method to store basic statistics, even just a text file. No massive library or database would be needed. Just a simple way to save some basic information about usage such as play count and last date played.
Exaile 3.4.5. Simple interface and design. Similar layout to Amarok 1.4. Oddly, Exaile stores data in two folders, $HOME/.config and $HOME/.local/share. Exaile accesses playlists anywhere but is designed only to store playlists in $HOME and only with a native *.playlist extension. The File browser option does not list *.m3u playlists. Copying an Exaile *.playlist to my centralized music folder did not trick Exaile into displaying the playlist. $HOME is the only place recognized for playlists.
Exaile does not autoplay the first song when loading a native playlist, but automatically plays when opening a foreign m3u playlist.
Resizing the column widths proved to be an exercise in four letter words.
Importing my m3u playlists always failed to preserve the original play order, instead creating the new playlist sorted by artist name. Or so I thought. This turned out to be me misunderstanding how Exaile works. The Append to and Replace Current playlist options oddly sort songs by artist. A double-click on a playlist opens the playlist in a new tab in the correct order. The trick then is just import and then open the new playlist in a new tab or double-click. There is no obvious “Load Playlist” option in the context menu.
There is no sane way to organize the native playlists by Artist/Album because there is no subfolder support. At least, not without including the Artist information as a prefix in the playlist name. The Import feature does not support renaming on the fly. There is no sort feature to reorganize the native playlists once renamed with the Artist information. Sorting is a laborious effort of drag-and-drop or manually editing the respective
order_file. Renaming is mouse-centric. To rename the playlists I continually pressed the F2 key, the common shortcut in file managers, only to be reminded I needed to use the mouse.
Exaile did not recognize my m3u files for online radio stations. There is no import option. I was able to manually recreate the files. Fortunately my list of online radio stations is short.
music.db file does not affect other settings. This provided me a way to create new native playlists and then later reset all listening stats to zero.
Exaile opened more slowly each time I imported more playlists. Possibly Exaile does not scale well.
Exaile would not save my layout, insisting on resizing the browser pane to a narrow width. This did not bode well after I renamed all playlists with Artist prefixes as I then could not read the name of the playlist without using the pane slider widget.
I would like Exaile more if there was a way to avoid the local $HOME requirement and native playlist format. Perhaps sym links could fool Exaile into storing playlist outside of $HOME, although this would require duplicating all m3u files with *.playlist files. That in itself would not overcome the deficiency with subfolders or refusing to save the width of the browser pane.
gmusicbrowser 1.1.14. gmusicbrowser is much the same as Exaile with the inability to organize playlist by subfolders. I also had trouble importing my playlists in the saved order of the m3u file. Worse than Exaile, using file view mode refused to show my playlists folder because no music files exist in the folder.
No databases are used. Everything is stored in one huge
Play count and last date played stats are not registered until a song is fully played. gmusicbrowser tracked statistics without creating a native playlist or library.
I found no way to open a playlist. The only option I found is to import a list. I could open a file or playlist through the command line, file launcher, or file manager.
Quod Libet 3.5.3. When I was importing playlists, each time I selected the Import button the file picker opened to $HOME rather than the previously selected folder. After being frustrated by this several times, I typed and copied the full file path of my playlists folder so I could paste the file path into the file picker location bar (Ctrl+L). This is frustrating design and soured my opinion right away.
After creating native playlists, opening Quod Libet anew automatically started playing the last used playlist. I hate this feature. Another quirk is there is no Stop or Pause buttons on the player control. There is an optional progress slider widget to show time remaining, but click anywhere, even outside the app, and the progress slider widget disappears. The progress slider widget overlaps the song information.
There is some kind of bookmark feature that I never figured out how to use.
The developers seemed to have attended the same design school as the gmusicbrowser developers. I found no way to just open a playlist. I could only import a playlist.
Play count and last date played stats are not registered until a song is fully played. Quod Libet tracked statistics once a native playlist was created without creating a library.
Banshee 2.6.2. Banshee will directly open a playlist, but oddly, if the playlist is not a native playlist, starts playing yet the playlist is not displayed. Importing the playlist leads to some unwanted results. When I imported the one playlist with seven songs, song seven always remained first in the list. Nothing I tried restored the actual track order. The import sort order is always fixed based on Artist name. Eventually I learned that clicking on the Track column header several times would restore the track order.
A library is created automatically when importing the first playlist.
Banshee stores native playlists in a database. While I see the need for some kind of database for statistics — even a flat text file, I see no need to store playlists in a database. I prefer playlists in text files. A text file allows editing outside of any player.
Like the previous candidates, there is no way to create subfolders in the playlist pane. Just one big long list of playlists.
There is a bookmark feature that is limited to individual songs. Nothing to support folders. The bookmarks are intended to act like a dead tree bookmark — a reminder of where an audio file was stopped or paused. This would be useful for long audio tracks or podcasts to avoid starting from scratch.
Play count and last date played stats are not registered until a song is fully played. Because of the database storage of playlists, Banshee created statistics only after a native playlist was created.
There are few configuration controls, none related to the layout. What You See Is What You Get So Shut Up.
There is a convenient GUI check box to disable all Internet related features.
Rhythmbox 3.2.1. Rhythmbox opens non native playlists and does not automatically start playing. There does not seem to be any sorting problems when opening a remote playlist. Rhythmbox seems rather impotent until creating a library of songs. Compared to other players, scanning the music files takes a much longer time.
Like the previous candidates, there is no way to create subfolders in the playlist pane. Just one big long list of playlists.
Like Quod Libet, the file picker dialog opens to $HOME every time. Several times I had problems importing a playlist and had to close Rhythmbox to fix the glitch. The playlist pane has an irritating feature in that selecting a playlist that is currently being displayed results in a rename widget rather than playing the playlist. A double-click makes more sense.
There is no Stop button in the player control.
Play count and last date played stats are not registered until a song is fully played. Rhythmbox created statistics once a song was played without the need for a native playlist or library.
Clementine 1.2.3. Clementine supports subfolders in the File Browser tab. This type of browser works similar to Amarok 1.4. This File Browser provided me the exact same access and subfolder structure I had in Amarok 1.4. None of the other players did this.
Such a simple concept: access a folder and present the list of playlists. No libraries, no databases, no native playlists required.
My nominal complaints about this layout is all of the playlists displayed in the File browser pane with the *.m3u extension. Amarok 1.4 never did this. The folders are not inline expandable, which Amarok 1.4 supported.
Initially Clementine failed to store statistics. After playing a song neither Play count nor Last played would change. All I ever saw was “Never.” I stumbled into learning that, unlike Amarok 1.4, to use song statistics I have to first create a library by scanning files. Apparently Clementine does not create statistics one song at a time.
Play count and last date played stats are registered before a song is fully played. From what I observed of the progress slider widget, to update the stats the song needs to play 50% of the duration. This method of updating the usage stats makes the most sense to me rather than only registering stats after fully playing a song.
After whacking most of the configuration options I thought I might be finished. Then I remembered the review I kept referencing.
With all respective online services disabled, Clementine still connects online. There is no configuration opt-out. While the reviewer wrote the contact is with Google servers, the actual exchange is done with
data.clementine-player.org. Browsing the code seems to indicate the connection pulls geolocation information and something related to rainy mood background noise. Sounds nice — for those who want those features. Yet like other plugins and services, please provide users a way to disable the option.
Why is the connection needed every time Clementine is started? At most this should be a one-time data pull. Too many people online have their tentacles deep in everybody’s lives mining data. Seeing free/libre developers act the same way is disheartening. Whether this feature is helpful does not matter. The cynic in me sees this as typical data mining abuse with the user being the product. If nothing else the developers should come clean with a full disclosure why they believe they need to connect online every time Clementine is started.
So much for ranting. A hosts file entry stops the data mining.
Another way to stop the data mining is to configure the Clementine proxy client to a host and port that does not exist. I have done that for years with XBMC on my media server. This method is more efficient than the hosts file because there is no DNS request at all.
Linux is long overdue for an application based firewall. Interestingly, the Firejail sandboxing app has a config file for Clementine. I wonder why.
Clementine creates a
jamendo.db database although the service is disabled. Using the old trick of creating a folder with the same name results in Clementine failing to start. Why are databases being created for unused and unwanted services? Unlike the data mining, I’ll chalk this off to lazy coding.
Despite the shenanigans, Clementine is the easiest way to transition from Amarok 1.4. The lack of a user-enabled opt-out with data mining is unsettling but can be neutralized.
My wish list for Clementine is short: 1) Provide GUI controls to disable all internet services, 2) provide expandable folder widgets in the file browser, 3) clip the m3u extensions when viewing playlists in the file browser, 4) stop creating a
jamendo.db database when the service is disabled.
Clementine supports MPRIS, which means I should be able to control the app in my living room media streamer with a remote control. I will leave that effort for another day.
Not critical but would be nice if I knew more about database structures to migrate my Amarok 1.4 usage stats.
Summary. There are some usability lessons here.
I do not pretend to be an expert with audio players. Mistakes made by me indicate a lack of knowledge on my part, but also poor design and discoverability with the players.
Most perform the basics. They play audio files and stream online radio stations. Yet most of these players are not designed from a simple premise of a user who has already organized music files and playlists. Clementine and Amarok 1.4 are exceptions. Most are not designed for non technical users or non audiophiles. They are, like so much in the free/libre world, excessively focused on geek creds. Features are nice for those who want them, but all features should be disabled easily. Most features should be enabled as the defaults so as not to confuse new users. Allow people to play songs without the overhead. Without an ability to organize playlists based on subfolders or Artist/Album structure, I really do not see how most of these players are useful. Thus I am inclined to believe that most of the reviews are the usual fanboy click-bait nonsense.
I understand all of the effort that went into these players. Significant work and likely lots of love. Yet in the end I have few encouraging words with the way most of these music players are designed. After a few days of testing and researching I was frustrated and exhausted.
Overall, I am reasonably content with Clementine. Another app migration is behind me.
My next target is migrating from Digikam.