SonicTruths.net

main digital music

"Start at the beginning - and when you get to the end, stop."

"Strike that - reverse it."


GNAT + GNARQL
Yves and I have been working on a pair of little tools to start bringing semantic web data to your local audio collection (and in due course hopefully the opposition direction too, using RDF-enabled Vamp plugins). The first, 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.
A diagram of the GNAT + GNARQL tools in action
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 :

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...
Displaying a variety of feature information on a timeline with a JS widget

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 :)
The OMRAS2 chord ontology
A lot of my work over the last few months has been related to a chord ontology we've been working on, to allow structured chord descriptions in RDF. This means that in the same web of data that the 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.
The main model in the chord ontology Attaching chords to a song's timeline
The model used in the chord ontology

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 :
Screenshot of a chord description in the tabulator, showing the score image


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 :)
mopy - Music Ontology PYthon interface

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.

Screenshot of a mopy session

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.

SBSimilarity on the Semantic Web

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.

Screenshot of SBSimilarity in the Tabulator
If you're interested in the approach or would like to try it out, please visit the SBSimilarity webpage.

SoundBite - Automatic playlist creation for iTunes

I spent about six months working full-time on SoundBite.SoundBite icon
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...

MSc thesis on Vocal Melody Transcription

tba

Final year project for BA

tba

My flair

XKCD Questionable Content digg TiddlyWiki - a reusable non-linear personal web notebook Child's Play charity Counting Crows DBTune blog - publishing linked music metadata on the semantic web Dresden Dolls - Amanda Palmer's blog Isophonics - New music technologies Joel on Software Last.FM MC Frontalot - The godfather of Nerdcore Hip-Hop The Mountain Goats Netscape - better than it was Penny Arcade PvP /. SoundBite - Automatic playlist creation software TextMate Adam Kalsey's Button Maker is useful ;) WWdN: In Exile Woot ! Blues Traveler OMRAS 2 Project My FOAF Profile Valid HTML 4.01 Strict Valid CSS!