SBSimilarity

Introduction Browsing How it works Implementation Contact

Introduction

As part of work for the OMRAS 2 project, we have adapted the SoundBite playlist creation software to provide similarity information on the semantic web. So now, in addition to static metadata such as the Zitgist repository of MusicBrainz information, we can publish dynamically-computed information about audio similarity.

What does all this mean ? Well, it means that if you browse audio through this server you'll see all the information from Zitgist, and also some track "recommendations" from a growing library of over 200,000 tracks.

Browsing

Sorry, browsing is currently a bit threadbare while ZG resources aren't displaying in the tabulator. It should still be usable, but is far less interesting ;) Otherwise, you could check out the screencast linked below.

Currently there's no artist/album/song index, so the only way to browse is to start from a track you're interested in (some examples can be found below, or try appending a MusicBrainz ID to http://isophonics.net/music/signal/) and follow links.

Hopefully some archives will provide links to these resources in due course, so that you can get SBSimilarity information while browsing dedicated music information directories (eg. Zitgist, DBTune, BBC backstage).

Some example tracks :
The Mountain Goats - Woke Up New
Blues Traveler - Felicia
MC Frontalot - Goth Girls
Jonathan Coulton - RE: Your Brains

Here is a screencast demonstrating the SBSimilarity service being used in the Tabulator.Screencast delayed until ZG working in tabulator again, sorry... There is also an older SBSimilarity screencast which shows how a user can start from a track in iTunes, and (using an iTunes wrapper for GNAT) access information on the semantic web in order to preview similar audio they might like to buy.

How it works

SBSimilarity is based on a database of audio features collected by the SoundBite playlist creation tool for 200,000+ music tracks across all users' collections.

When a signal resource is requested from the isophonics server (eg. http://isophonics.net/music/signal/280b7fae-724e-4a6d-8e91-6fe3f0a2bdad) just the basic triples relating that signal to the track it was published as, and a link to a SBSimilarity resource are returned. The Music Ontology term mo:similar_to is used to link to the SBSimilarity resource, which has the benefit of hiding this "advertisement" resource once it is dereferenced.

If the user is interested in finding similar tracks, they can dereference this mo:similar_to URI (eg. http://isophonics.net/SBSimilarity/280b7fae-724e-4a6d-8e91-6fe3f0a2bdad). To satisfy this request, the server performs a search across the database of audio features to determine the ten most similar known tracks, and then uses the mo:similar_to property again, to associate these found tracks with the seed track.

In this way, computation is performed only when the user is really interested in the actual information, and the user's semantic web client/browser need have no knowledge of the fact that the resource is dynamically computed.

For more information, please see the forthcoming paper "A distributed data space for music-related information".

Implementation

The two URI spaces, http://isophonics.net/music/signal/ and http://isophonics.net/SBSimilarity/ are each handled by urispace mappings which translate resource URIs into SPARQL DESCRIBE queries.

These queries are intercepted by one of two custom Joseki processors which trigger computation if results have not previously been computed.

The current implementation is a bit hacky, so source code is not currently being provided. If you are particularly interested to see the source, do get in touch though. We hope to implement this compute-on-demand strategy in a much more generic and elegant way very soon, and will be making source available for that when appropriate.

Contact

If you find problems or would like more information, please contact christopher.sutton@cantab dot net.