Wednesday, November 5, 2008

Math Club

I'll be giving a talk on "Machines that Understand Music" at the LA Math Club on Sunday, November 19, 2008. If you're in Hollywood, come along and meet all the musos and industry types that I hope will show up.

The Math Club is organized by the genial Roni Brunn, aka "the Girl From". Previous speakers have included Futurama's David X. Cohen and heaps of smart profs. I'm hoping to match the former for smarts and the later for humour...

Here's the abstract:

Humans can identify that a radio station is playing country music in less than one second (and switch channels!). Although the amorphous details of music and the emotions that it evokes in us are sometimes subjective, there are many concepts (e.g., instrumentation, genre, tempo, ...) that most listeners agree on. Given these statistical regularities, it should be possible to build a machine that can analyze and understand many aspects of music.

I will talk about and demonstrate a computer audition system that understands music. Using signal processing analysis of audio waveforms and machine learning models to identify patterns in the signal, my "musical search and discovery engine" goes beyond artist and song name search and can find "funky music with a horn section for a party" or "jazz saxophone for romancing". The system can also associate new music with relevant semantic tags, creating automatic record reviews. This musical search and discovery engine has many applications for personalized discovery and distribution of all music online.

Finally, I will explain how the data used to train the computer audition system to understand music is collected using an online music annotation game that is about to be launched on Facebook. Bring your laptops and we can all play together!

iLuke API

In my ongoing quest to:
a) get my Facebook music annotation game "Herd It" running and
b) master all web technologies,
this week, I taught myself how to write AJAX apps.

Despite all the buzz I'd heard about this, AJAX is really just one JavaScript function call: XMLHTTPrequest. Basically:
HTML web page has JavaScript
JavaScript has XMLHttpRequest object
XMLHttpRequest object sends requests to a server script (e.g., PHP)
Server responds with XML info
XMLHttpRequest updates to the DOM as it gets new info.

Easy, right?!

I've used this to integrate the iLike API as the music player for Herd It. Now I can play all the (30-second clips of) music we want and not get sued!