The first alpha release of Amarok 2 was made available for download last week. The popular open-source music player is undergoing a significant transformation and receiving a highly anticipated update for KDE 4. We have followed its development since the technical preview release in January.

We tested Amarok 2 alpha 1 in Mandriva 2009 alpha 2 with KDE 4.1 RC1 (yes, I spent yet another weekend testing unreleased software). Although we encountered some bugs, this release is stable enough for regular use. Like its predecessor, Amarok 2 delivers practically every conceivable feature that can be stuffed into a music player. It handles playlists, podcasts, library management, Internet radio, multiple music stores, and interfacing with portable audio player devices.

Amarok 2 has impressively tight integration with several Internet music services right out of the box, including Jamendo and Magnatune. The Internet music service layer is extremely modular and is designed so that additional services can be added in the future. It also has support for remote music storage through MP3tunes. Users can search, browse, and interact with songs from remote services just like they can with songs that are part of their own collection. Songs from Magnatune, for instance, can be added to regular playlists.









Mixed playlist with album view mode

The most visible change in Amarok is its new user interface. The playlist pane's new album view displays the album title and cover art above each set of songs from an album. This looks good and saves some screen space in playlists where songs are sequentially grouped by album, but it gets a bit visually distracting in highly mixed playlists. A toggle button below the playlist pane makes it easy to disable the album view when it is not wanted. The alternative is a simple list view that displays each track in a single row.

The other major change in Amarok's user interface is the addition of the context view, which leverages KDE's Plasma system. Plasma is a programmable widget layer that enables developers to create small, visually rich programs that plug into various application data sources. In Amarok 2, the context view is a Plasma container in which the user can embed interactive plasmoids that integrate with Amarok's functionality and display various kinds of information.

A handful of experimental plasmoids are included in alpha 1 that demonstrates some of its capabilities. For instance, the Current Track Info plasmoid displays information about the song that is currently playing. There is also a plasmoid that displays information from Last.fm, and one that will automatically display the Wikipedia page about the group that performed the currently playing song. There are also a few plasmoids that are only partially implemented, including one that will eventually show song lyrics and one that could be used to display video.

The plasmoids included with the program are, however, only the beginning. The developers hope that a diverse ecosystem of third-party Amarok plasmoids will be developed by the user community after the program is released. Plasma support could facilitate rapid development of unique customizations and will also make it easy to integrate web content into the Amarok user interface.









Amarok 2 with several Plasmoids

Although Amarok's plasma support has a lot of potential, there are still some weaknesses in the underlying implementation. The existing plasmoids do not handle resizing or reflow very well yet. The font rendering in the Current Track Info plasmoid is pretty bad, and all of the plasmoids flash when the track changes.

The greatest strength of Amarok 2 is its capacity for third-party expansion. Like many other parts of the Linux desktop stack, Amarok gives users a lot of flexibility and room for customization. In addition to the built-in Plasma engine, Amarok 2 also has extensive scripting capabilities which are currently being revamped by student Peter Zhou as a Google Summer of Code project.

The final version of Amarok 2 will offer full support for interacting with the program's internals through Qtscript, a lightweight scripting language that is syntactically similar to JavaScript. On Linux, users will also be able to script Amarok externally with the scripting language of their choice through a D-Bus interface. Users will be able to install and update scripts from remote sources using KDE's Get Hot New Stuff framework.

The scripting API already enables some really impressive things. For instance, developers can use scripting to add support for whole new remote audio services. A particularly cool example of this is a Ruby script that adds public domain audiobook provider Librivox to Amarok's Internet music source lineup.









Librivox integration with a Ruby script

Another really trippy feature that is being implemented by student Daniel Jones as a Summer of Code project is support for biased shuffling. This project, which builds on existing capabilities in the previous version of Amarok, will allow users to specify a set of basic parameters that can be used to generate a semi-random playlist.

Despite some of the bugs and the weaknesses of the Plasma interface, Amarok 2 is shaping up very well and is quite strong for an alpha release. It remains true to the vision that shaped its predecessor and delivers a feature-packed audio player that is aimed squarely at the power user. It rises above the iTunes mimicry that has become common among open source audio players and gives its users a truly unique experience.

Further reading

