
I’m fascinated by the new Genius playlists feature in iTunes. I have an entire other post in me explaining how they have changed how I listen to music, but as a developer I’m also interested in how the feature works.
I was excited when I saw this button on the iTunes What’s New page, but unfortunately all it tells you is how to create a Genius playlist. I’m interested in how iTunes creates the playlists, and I don’t think this illustration is quite what I’m after.
What I do know is that for Genius to be able to make use of tracks, you have to send information about them to Apple. Genius won’t work until you initialize it, and you have to update Genius when you add new tracks to generate playlists from them.
I know Pandora has an algorithmic approach to mapping related music, called the Music Genome Project. Wikipedia has a brief explanation of how it works:
A given song is represented by a vector containing approximately 150 genes. Each gene corresponds to a characteristic of the music, for example, gender of lead vocalist, level of distortion on the electric guitar, type of background vocals, etc. Rock and pop songs have 150 genes, rap songs have 350, and jazz songs have approximately 400. Other genres of music, such as world and classical, have 300-500 genes. The system depends on a sufficient number of genes to render useful results. Each gene is assigned a number between 1 and 5, and fractional values are allowed but are limited to half integers.[1] (The term genome is borrowed from genetics.)
Based on this blog post, it sounds like Apple uses an approach based on listener behavior:
Genius works by looking at the songs you play and the songs you skip. It analyzes the data, along with all the data from everyone else in the world who uses iTunes and Genius, and picks artists it thinks you’ll like. The more people use Genius, the better it should work.
I’m wondering whether the data Apple has been collecting since 2006 when they launched the iTunes MiniStore was used to create the Genius feature.
Anyone seen any additional details?