From CS294-10 Visualization Fa08

Jump to: navigation, search


New group project proposed: see A3-MaxwellPretzlavNicholasKong

Data Domain

Being an avid music fan, I'd like to use the Last.fm API to visualize the structure in users' listening libraries. Last.fm allows users to record play counts of each of the tracks they listen to, and by extension the albums and artists that the tracks are on. It also allows users to tag artists/albums/tracks as a community genre-identification mechanism.

If time permits, I'd also like to tie the Last.fm data to the more comprehensive metadata available through Musicbrainz. One of the major shortcomings of Last.fm is that it records popularity of artists through play count and not actual amount of time spent listening to an artist. While that information is not accessible through Last.fm, an approximation could be created by using track duration information from Musicbrainz, where available. Another interesting possibility would be to visualize a user's music library by artists' countries of origin, although this data is not explicitly available from either database.

Previous work

This project is mostly inspired by Lee Byron's Last.fm streamgraphs. Initially, I wanted to implement an application similar to Job Voyager or NameVoyager, except with streamgraphs and the ability to zoom in on particular artists. However, I felt that it was perhaps out of the scope of this assignment, and that tree-maps lend themselves better to hierarchical data.


As the data is primarily hierarchical (genre -> artist -> album -> track), I'd like to create an interactive treemap visualization. I plan to use flare for this project as this is a web-based application and flare has in-built treemap layout capabilities. I plan to build a core application and then add functionality if time permits. The mockups contain the ideally fully featured final application.

Core application

An advantage of using the Last.fm API is that users can navigate their own libraries simply by entering their Last.fm username. After this happens, they would be presented with the following display:

Main display

The text box in the upper left allows the user to search for specific tags. Hopefully a live update will be possible on the tree-map as the user enters a string. For example, if the user were to enter "metal", then a tree-map would be recomputed with all the tags containing "metal" (e.g. progressive metal, heavy metal, death metal, etc.).

The upper left portion of the figure indicates what the whole tree map will look like; the larger squares will be genres (tags), and they will contain all the artists in that genre. Each of the artist squares will be sized in proportion to their play count. Upon rollover on any artist metadata will be displayed: actual number of plays, number of albums, and number of tracks.

It would be interesting to be able to drill-down and view proportional album popularity within artists. A potential interface is shown below:

Artist view

Here, "post-rock" has been inputted as the desired genre, and the band "Mono" has been clicked. The main tree-map has been slightly grayed out for the user to focus on the new sub tree-map. This map contains all the albums of an artist, and each track from each album the user has listened to. Here, "You are There" is the album name, and "Moonlight" is the track name. Rollover will reveal metadata such as total number of plays, similar to the previous display. I chose to have the sub-treemap partially transparent in order to see the underlying global data.

Possible extensions

In the mockups there are "Genre" and "Artist" radio buttons tied to the search field. Giving the user the ability to go straight to a particular artist would be ideal, but this would mean either

  • Overloading the search box, or
  • Creating two separate search boxes.

I chose to overload the search box here, mainly to avoid the case where an artist is in the library (say, Bill Evans) but the user is viewing a different genre (say, Classical). In the core application I will only implement genre/tags.

Also, "Play count" and "Song length" radio buttons are displayed in the mockups. It would be interesting to measure artist popularity by play count and song length separately, so ideally the user could select which metric s/he wanted.

Finally, Musicbrainz has a wealth of information that Last.fm does not store, so adding additional metadata (such as date founded, label, country of origin etc.) would be interesting.

[add comment]
Personal tools