audioMappr!
by Dan Schlegel and Bastian Tenbergen, B.Sc. *

A class project for CSC435/535 (Web Services) under supervision of Prof. Dr. Lin Qiu
SUNY Oswego,
Spring Semester 2007

Get JumpStarted! Click on these links to go directly to the maps!

GenreMappr! • • • ArtistMappr! • • • Demo-Page

Powered by:
Powered by GoolgeMaps Powered by Audioscrobbler Powered by Last.FM

Audio-WHAT?
... in which we explain
what audioMappr! actually is.
So, what is this audioMappr!
-thing? In essence, audioMappr! combines the GoogleMaps API and the Audioscrobbler Database in order to visualize the music taste distribution of people all over the world.

Audioscrobbler is the API behind the playlist-sharing community Last.FM and offers a large variety of XML-data for each user that is registered in the community. Last.FM gives every member the ability to upload information about their favourite music and thereby creates social music networks.

GoogleMaps is a JavaScript-based API that makes world maps accessable through websites. With GoogleMaps, one can look at satellite pictures of pretty much every corner of the world, get directions to waypoints, and find places.

Also, as a little gimmick, audioMappr! uses GoogleMaps' GeoCoder to retrieve latitude and longitude information of the capitals of the countries that are drawn to display some extra information on the data that are presented.

Powered by these three technologies, audioMappr! can help to simplify research in fields like Ethnomusicology, Sociology, and Music Information Retrieval.
But let's not forget about the fun aspect of this Web Service ;-)
Motivation
... in which we explain
how audioMappr! is useful.
Ethnomusicology tries to research the differences in music taste among different ethnicities and nationalities. Although it is a highly fascinating field, research can sometimes be tedious as it is limited to classic research methods, i.e. surveys, market studies, and work with participant of studies in general. In addition, researchers do not seem to regard internet users as a specific community that can help conducting research in Ethnomusicology.

The way people access music nowadays as changed dramatically ever since more or less legal peer-to-peer networks and online music stores allow to download pretty much any musical piece any time with a minimum amount of costs. On pretty much every private computer, digital music can be found, so pretty much any person that has access to a computer has access to digital music.

audioMappr! is not just a class homework. With both authors being very interested in any research on music, Ethnomusicology and Music Information Retrieval, audioMappr! is built to suit the needs of researchers as well as music lovers. Our framework can help Ethnomusicologists to conduct research on users of digital music media and provides a visualization of social music networks as they occur in the online playlist-sharing community Last.FM. To the best of our knowledge, quite some research has been conducted on music genre preferrence in different ethnicities and nationalities, but most of them are of static nature and none of them aim at providing a real-time tool for it's visualization.
audioMappr! is the first tool to accomplish that task.
In addition to that, having a map like that is just too cool to be true!
Responsibilities
... in which we explain
who worked on audioMappr! and what those people did.
audioMappr! is a joined idea by Bastian Tenbergen and Dan Schlegel.

Dan was in charge of the Database engine that retrieves the data that is then displayed on the GoogleMap. Essentially, this is the core of audioMappr!. One of the most important problems that needed to be solved was that AudioScrobbler does only provide a list of XML-files for every user instead of a direct access to the database or a dump thereof. Hence, Dan implemented a search algorithm that traverses the friends-list of every Last.FM user and keeps track of those users that have already been parsed by our database engine and those ones that still need to be visited (which is a heuristic search problem with unkown search depth and unknown branching factor and hence a significant problem in the real of Machine Learning). In order to accomplish this task, Dan wrote several XML-parsers to handle the amount of XML-files retreived from AudioScrobbler and to update the mapping database correctly.

Bastian was in charge of the mapping engine. Seemingly easy, just to display the output of the database engine, there were a few obstacles in his way. The biggest obstacle was probably that Bastian was totally unaware of both the Google Maps API as well as of JavaScript. Also, in the process of learning both, he discovered that it is not possible in GoogleMaps to color specific countries. So, Bastian had to find a way to do that. The solution were specifically colored polygone overlays that hover exactly over the country they represent. The problem with that, however, was that latitude and longitude data of the exact borders of all countries of the world are not freely available. GIS-formatted data were, though. So, Bastian used a couple of free conversion tools to re-format the GIS data into GPS data, and converting those, using a shapefile, into the GoogleMaps-compatible KML-format. He then wrote a number of XML tools to create individual country and territory files from the resulting KML-world-file.
Architecture
... in which we explain
how audioMappr! is working.
audioMappr! consists of two basic components: The core DB engine and the mapping engine.

The core DB engine has been developed by D. Schlegel. It is running a asynchronous service that queries the Audioscrobbler database. It parses XML data for every user on genre preferrence and artist playcount. Since Audioscrobbler does not provide a user list or database-dumps, audioMappr!'s DB engine starts with one known user and parses the friends-tree XML file. The DB service runs permanently as a deamon, terminating when enough users have been parsed for every country, when no new users are encountered anymore or never (i.e. runs always, permanently updating the DB).

The mapping engine instantiates a custom GoogleMap and was written by B. Tenbergen. It displays every country that has been parsed by the core DB engine on the custom map and colors it with the color corresponding to the genre or artist that most users from that country listen to.
The mapping engine has a database itself and consists of longitude/latitude pairs of border line polygons for every country that can be displayed with audioMappr!. The database is necessary because GoogleMaps does not allow coloring the countries on a map. Instead, the mapping engine creates overlays on the basis of the longitude/latitude data for each country, which are colored.
Please note that the country border database contains data about political countries borders as they were valid in 1995.
Please also note the copyright information.
Implementation
... in which we explain
how to get the code of audioMappr!.
There is not so much an API to audioMappr!, but a collection of tools that help setting up the database. Feel free to download and use the code according to your gusto, as it is published under the GNU Public License.
Please note that this does not hold for the country border database. If you wish to use this DB, please contact one of the authors.
Here is a copy of the license.

Use the below links to get to audioMappr!'s maps:

GenreMappr! • • • ArtistMappr!

Below, you can find a list of the code that we wrote to create this project.

audioMappr! code binary
audioMappr! code source
audioMappr! code binary & source
audioMappr! API download
audioMappr! API online

Here is the project proposal presentation that we gave in class:
audioMappr!.pdf

Look at the version history, which contains some information on pitfalls, problems, known bugs and problem solutions that we encountered during our work on audioMappr!.
Own Web Services
... in which we explain
what Web Services you can query from audioMappr!.
audioMappr! is not just a framework that consumes the WebServices by AudioScrobbler and Google, it actually provides you as a developer with the data that we filtered out from AudioScrobbler. This way, you are not only able to view a visualization of the music preferences of the countries in the world, but also make use of the XML-file that we provide to consume these data in a machine-friendly way.

Also, GoogleMaps developers might be very interested in using the KML-country database that we use to color the specific countries on the map. With the help of our database, everyone can display information or data per country on a GoolgeMap, by just reading the files from our database and manipulating it.

Both services that we provide are freely available to every individual or group for private or academic use. Seriously, everyone can have it! However, since we would like to know who is using what, you need to contact either Dan Schlegel, Bastian Tenbergen, or both and ask for details. Also, you must obey to the copyright information. When using our Web Services, make sure that the purpose you intend to use them for are of non-commercial and/or academic use only. You are not allowed to use the free Web Services to acquire any sort of profit. Please contact the others for commercial versions.

        * project members in alphabetical order.

(c) 2007 by B. Tenbergen, D. Schlegel