"Start at the beginning - and when you get to the end, stop."
"Strike that - reverse it."
GNAT + GNARQL
GNAT, is described in more detail by Yves here but the basic idea is that it'll go through your local audio collection and use fingerprinting and smart metadata searches to find a URI for each track. This gives you a bunch of entry points to the semantic web (I'm really leaning more towards the name "web of data" these days...) and that's where the second tool comes in.
GNARQL starts by loading in all the RDF files in the specified folder tree - this is expected to be mainly the GNAT-produced identification info, but on our test machine at Queen Mary it happily gobbled up a bunch of Kurt's Myspace artist network information, and the Beatles chord transcriptions too ;D These are loaded into a local triple store which then exposes a SPARQL endpoint for queries.
So far, so good, but things really get interesting when you start crawling from your local information. This starts pulling in all the text metadata from Zitgist's Musicbrainz dump, and potentially (eg. with Yves' Jamendo and Magnatune data sets) also download links for other tracks by the artist, album art, etc.
So you can start asking things like :
- Find me all artists in my collection who have worked with someone who produced a Pink Floyd album
- Find me tracks by artists from the Eastern hemisphere
- Give me all albums produced by people who died before I was born
Yves has also been working on a Mazzle interface for GNARQL, for people who don't enjoy typing SPARQL queries ;)
I think these kinds of queries (while perhaps a little contrived) already start to set the system apart from existing media library software. Things are going to get really interesting when we combine this with the work we're doing on RDF Vamp plugins and the chord ontology, so that the information available through GNARQL has been computed locally and is presented alongside all the standard (editorial) information. The Openlink timeline widget starts to demonstrate what might be part of a near-future GNARQL interface...
If you don't mind your software lacking final polish, go check out gnat and gnarql from the motools SVN repository and let us know what you think :)
mopy and SBSimilarity work below contribute to, we can publish chord transcriptions of songs.
The starting point was Chris Harte's chord syntax, which he's used to transcribe the full Beatles back catalogue for use by researchers. There's a description of the syntax in his ISMIR2005 paper.
This provided a good starting point, but considerable adaptation was necessary to fit the model to an RDF-y world view. With help from Matthias and Yves, we were able to pull things together for a first draft release at the end of October. The announcement on the Music Ontology mailing list sparked some interest and discussion, which has fed into a list of proposed revisions for version two.
We've had some really encouraging progress so far. The model as it stands has been sufficient to translate chord transcriptions of all the Beatles songs, around 400 MMA example songs, and around 14,000 MIDI accompaniment files from a research partner in OMRAS2, which gives Matthias a nice big data set to sink his teeth into ;)
We've had discussions with Tillman Weyde's group at City which will hopefully lead to the inclusion of their work on chord roles in sequences, adding a higher level of abstraction to our current model.
Christophe Rhodes from Goldsmiths hacked away during a quiet afternoon and added score images to our chord descriptions :
As usual, the associated software is all available in the
motools project on sourceforge and the new year should see a new and greatly improved release of the ontology :)
There was a request from the folks at the PD Burn project for a python interface to work with Music Ontology data. I started off thinking we could autogenerate some files to start from based on the RDFS ontology document, but it turned out - well, we could generate pretty much everything from the ontology document.
There are a few rough edges and some missing features (most notably no RDF containers, shaky support for OWL ontologies, some clashes between terms), but all in all it's pretty usable.
We released version 0.2 recently and it can be grabbed at the MO tools page on SourceForge. More information is available in the mopy readme.
It's good to eat your own dogfood, so mopy's being used in some of the other motools apps, including gnat, the music collection identificator and the scripts to convert chord transcriptions into chord ontology RDF. The MyPySpace project is also using mopy.
One of the main issues in the OMRAS2 project is how to allow people to provide audio services in a standard way so as to ease interoperability of digital music processing components and aid cooperation between researchers. Having done some work with web services and found out just how painful that can get, I'm keen to investigate alternatives to building a SOAPy behemoth, and it seems like Semantic Web technologies might be the way to go.
There's a lot of really interesting and cool work going on in the semantic web community (and the Linking Open Data community especially) but most work so far has focused on publishing and interlinking static data (eg. DBPedia, Geonames, Zitgist's musicbrainz dump) and it's not immediately obvious how to adapt the model to suit web services (or even if it's a good idea to do so).
So as an experiment in providing dynamic "compute-on-demand" resources in the semantic web, and a way to make use of the data we've been collecting with SoundBite, I put/hacked together a SBSimilarity service to provide "similar track" information for MusicBrainz resources.

If you're interested in the approach or would like to try it out, please visit the SBSimilarity webpage.
I spent about six months working full-time on SoundBite.
Mark Levy created the software, and had already written the core C++ engine and an AppleScript UI for the Mac. I developed that further, incorporating new features, building a robust Cocoa GUI and developing the web services which allow us to gather audio features about users' music collections and enable us to develop new large-scale audio similarity applications. More recently I worked on Mark L's prototype of a C# GUI for windows, and brought that mostly up to speed with the Mac version.
Both versions are now available from the Isophonics website. What are you waiting for ? ;)
Work on SoundBite is ongoing at Queen Mary, and Kurt's been doing some really interesting things with it lately...
tba
Final year project for BAtba
























