Wednesday, October 21, 2009

Google for Music... by Google?

The big goal of my research for the past few years has been to build a system that we liken to "Google for Music". Using signal processing and machine learning to analyze music, we can automatically associate any songs with hundreds of descriptive tags. This means that you can find music without knowing the name of the band / song / album you want - just by typing in words that describe what you want to hear. To check out a prototype of our system, go to HerdIt.org and sign up to be a Beta tester. While you're there, play Herd It and make the search engine even smarter!

Now it seems that Google is finally getting on board with this themselves. After years of staying away from music (the legal, licensing and logistical difficulties scared even them), it seems like Google music may be coming soon.

Now, all we need to do is get them to use our algorithms to make their search even better!

Modelling Music as a Dynamic Texture

My paper "Modeling Music as a Dynamic Texture" has been accepted for publication in IEEE Transactions on Audio, Speech and Language Processing! This is work with my colleague and good buddy, Prof. Antoni Chan, and my advisor and good buddy, Prof. Gert Lanckriet and is awesome for at least 5 reasons:
  1. It presents a new, statistical model of musical audio that really takes time into account
  2. It introduces - and solves - the "Bohemian Rhapsody problem" (in case you don't know what this is - try describing the sound of BoRhap in 5 words or less...)
  3. Our model can automatically separate the verse, chorus, solo, bridge, etc parts of any song as well or better than anything else
  4. It will be a chapter in my thesis
  5. I get to talk about Freddie Mercury's falsetto, Bjork and the Beatles in an academic paper
Lookout for the paper in a library near you before the end of the year! We're working on extending the model to more Music Information Retrieval tasks like tagging and similarity. In the meantime, check out some of our results on automatically segmenting music.

Listen to the 35-second version of Bohemian Rhapsody!

Monday, October 12, 2009

Calling library objects from a loaded SWF

Herd It is a Flash application that loads lots of external SWFs - to play minigames, show results, etc. - into the main SWF loaded by the player. The problem is that, any object that is defined in the loaded, external SWF is not known to the main SWF in advance and so can not be referenced by the main SWF's ActionScript code.

When you load the external SWF as a Loader, you can refer to objects on it's stage using:
var myLoader:Loader = new Loader();
var myUrlReq:URLRequest = new URLRequest("data.swf");
myLoader.load(myUrlReq);
var myObject:* = myLoader.content["myTimelineObject"];

I always had thought that you couldn't access anything from the external SWF's library - until now! Thanks to this blog post by Koen De Weggheleire (another good thing to come from Belgium), I have learned that it IS possible to access the external SWF's library.
First, we load the loader:
var myLoader:Loader = new Loader();
var myUrlReq:URLRequest = new URLRequest("data.swf");
myLoader.load(myUrlReq);

Once the loader has loaded (you may want an Event.COMPLETE handler to wait for this), we can now find objects in the external SWF's library using the contentLoaderInfo's applicationDomain:
var LibraryClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("LibraryClassName") as Class;
var myLibraryObject:MovieClip = new LibraryClass as MovieClip;

Nice one, Belgium!