Music Explorer FX

Sten has posted a link to his super nifty Music  Explorer FX.  Music Explorer FX is  a Java Fx application for exploring and discovering music.  In some ways, the application is like a much slicker version of  Music Plasma or Musicovery.  You can explore a particular neighborhood in the music world – looking at artist photos and videos, listening to music, reading reviews and blog posts, and following paths to similar artists.    It’s a very engaging application that makes it easy to learn about new bands.    I especially like the image gallery mode – when I find a band that I think might be interesting, I hit the play button to listen to their music, and then enter the image gallery to get a slide show of the band playing.  Here’s an example of ‘Pull Tiger Tail’ – a band that I just learned about today while exploring with MEFX.

mefx

Sten uses a number of APIs to make MEFX happen. He uses the Echo Nest for artist search and to get all sorts of info including artist familiarity, hotness, artist similarity, blogs, news, reviews and audio. He gets artist images from Flickr and Last.fm – and just to make sure he’s relevant in this Twitter-centric world, he uses the Twitter API to let you tweet about any interesting paths you’ve taken through the music space.

We are living in a remarkable world now – there’s such an incredible amount of music available. There are millions of artists creating music in all styles.  The challenge for today’s music listener is to find a way to navigate through this music space to find music that they will like.  Traditional music recommenders can help, but I really think that applications like the MEFX that enable exploration of the music space are going to be important tools for the adventurous music listener

, , , , ,

2 Comments

The end of an era at Last.fm

RJ just announced that he, along with the other two founders of Last.fm are leaving Last.fm. Details in this post:   Message from the Last.fm founders, Felix, RJ and Martin.  This is a big deal.  RJ, Felix and Martin laid out the roadmap that just about every music 2.0 company would follow.   They continuously  brought new innovations to music discovery that are now standard for music sites, innovations like  scrobbling of music taste,   web services to allow access to all of their music data, social tagging of music,  recommendation radio, to name just a few.

I hope that the folks remaining at Last.fm will keep the vision of Felix, RJ and Martin alive, and I wish Felix, RJ and Martin the very best in their next venture(s).  (I guess it is time to pay really close attention to playdar).

, ,

3 Comments

A glimpse of the Music Explorer

I noticed that Sten posted a photo from the JavaOne pavillion that happens to show the Music Explorer FX in the background.

Sten at JavaOne

Sten at JavaOne

Using my photo-forensic skills, I’ve extracted a detail that shows the Music Explorer FX:

mefx-detail.1

Here you can see Franz Ferdinand, surrounded by a set of similar artists, as well as a audio player,  along with graphics that show familiarity and hotness (all derived from the Echo Nest).   The Music Explorer FX is pretty neat. I hope Sten releases it soon.

, ,

3 Comments

New desks at the nest

Yes, this is big news … we have some new furniture at the nest.  No longer are there doors on file cabinets masquerading as desks. Everyone now has a real desk.

New desks a the nest

New desks at the nest

Clearly, there’s no stopping us now.

,

9 Comments

The Beat that follows your feet

There’s a new application in the Echo Nest developer showcase called SynchStep.  SynchStep is an iPhone/iTouch application (currently only for jailbroken devices) that automatically synchronizes the music to your walking or running pace.   SynchStep uses the Echo Nest Analyze API to extract the tempo for each song in your collection and when you are out for a walk or a run it will pick a song that matches your tempo.

I’ve seen a few academic systems that do this sort of thing.  For instance, at last year’s ISMIR there was a paper called  Development of an automatic music selection system based on runner’s step frequency that described a similar system. But SynchStep is the first system I’ve seen that is available to the general public  on a popular platform like the iPhone.

SynchStep is a great example of a context-sensitive playlister.   Instead of a list of songs selected via a random number generator, or via  a DJ sitting in some dark, smoke-filled sound booth you get a playlist that matches what you are doing.  I think we are going to see more attention paid to context-sensitive playlists:  ‘Music for the root canal’, ‘Music that synchronizes with my windshield wipers’,  ‘music for that first date with that girl who you think may be kind of emo’, and so on.    To make these kind of playlists, the playlist generators will have to know what you are doing, and they’ll have to know what the music sounds like.  Platforms like the iPhone already provides lots of context – the iPhone knows where you are,  what time it is, it can hear you, it can see you, it can feel you move,  it knows that the emo girl just sent you a  ‘dear john’ IM,  it can even hear your heartbeat.     Signal processing and music analysis provides the other piece of the puzzle – knowing what the music sounds like.   Just like SynchStep picks a track with a tempo that matches your pace, these next generation, context-aware playlisters will select music that fits the context.   So when that kind-of-emo girl dumps you, your iPhone will know about it and will try to cheer you up with a little Katrina & The Waves.  This song has super powers,  it can even make the emo boys happy.

, , ,

2 Comments

Help! My iPod thinks I’m EMO – the Podcast

I notice that the audio for the panel session “Help! My iPod thinks I’m emo”  that Anthony (of the Hype Machine) and I gave at SXSW is online.  You can listen to it here

And follow along with the slides on slide share here.

Leave a comment

The first music app in the Java App Store?

At the JavaOne keynote this morning, James Gosling and Jonathan Schwartz gave a demo of the new Java App store in front of 20,000 Java developers.    The Java App store is new online store for Java apps.  It’s just like the iPhone App store for Java.  Oh .. and it has about a billion potential shoppers.  One of the very first apps in the store  (and as far as I can tell, the only music app) is an application called Music Explorer FX.  This is a soon to be released Java FX application designed to help you explore the world of music.  I’ve had the opportunity to play with the Music Explorer – it is really quite cool. (and it makes heavy use of the Echo Nest API, which makes it doubly cool).  The developer of the application, Sten Anderson has written a teaser about the app on his blog.  As he says, stay tuned for to find out when the app will be available.

, , , , , ,

Leave a comment

Building a music map

I like maps, especially maps that show music spaces – in fact I like them so much I have one framed, hanging in my kitchen.  I’d like to create a map for all of music.  Like any good map, this map should work at multiple levels; it should help you understand the global structure of the music space, while allowing you to dive in and see fine detailed structure as well.  Just as Google maps can show you that Africa is south of Europe and moments later that Stark st. intersects with Reservoir St in Nashua NH a good music map should be able to show you at a glance  how Jazz, Blues and Rock relate to each other while moments later let you find an unknown 80s hair metal band that sounds similar to Bon Jovi.

My goal is to build a map of the artist space, one the allows you to explore the music space at a global level, to understand how different music styles relate, but then also will allow you to zoom in and explore the finer structure of the artist space.

I’m going to base the music map on the artist similarity data collected from  the Echo Nest artist similarity web service.  This web service lets you get 15 most similar artists for any artist.  Using this web service I collected the artist similarity info for about 70K artists along with each artists familiarity and hotness.

Some Explorations
It would be silly to start trying to visualize 70K artists right away – the 250K artist-to-artist links would overwhelm just about any graph layout algorithm.  The graph would look like this.  So I started small, with just the near neighbors of The Beatles.  (Beatles-K1)   For my first experiment, I graphed the the nearest neighbors to The Beatles.  This plot shows how the the 15 near neighbors to the Beatles all connect to each other.

beatles-near-neighbors

In the graph, artist names are sized proportional to the familiarity of the artist.   The Beatles are bigger than The Rutles because they are more familiar.  I think the graph is pretty interesting, showing how all of the similar artists of the Beatles relate to each other, however, the graph is also really scary because it shows 64 interconnections for these 16 artists.    This graph is just showing the outgoing links for the Beatles, if we include the incoming links to the Beatles (the artist similarity function is asymettric so outgoing similarities and incoming similarities are not the same), it becomes a real mess:

beatles.1.in

If you extend this graph one more level – to include the friends of the friends of The Beatles (Beatles-K2), the graph becomes unusable.  Here’s a detail, click to see  the whole mess.  It is only 116 artists with 665 edges, but already you can see that it is not going to be usable.

beatles.2.out.detail

Eliminating the edges

Clearly the approach of drawing all of the artist connections is not going to scale to beyond a few dozen artists.  One approach is to just throw away all of the edges.  Instead of showing a graph representation, use an embedding algorithm like MDS or t-SNE to position the artists in the space.  These algorithms layout items by attempting to minimize the energy in the layout.  It’s as if all of the similar items are connected by invisible springs which will push all of the artists into positions that minimize the overall tension in the springs. The result should show that similar artists are near each other, and dissimilar artists are far away.  Here’s a detail for an  example for the friends of the friends of the Beatles plot.  (Click on it to see the full plot)

beatles2-embedded-detail.1

I find this type of visualization to be quite unsatisfying.  Without any edges in the graph I find it hard to see any structure.  I think I would find this graph hard to use for exploration.  (Although it is fun though to see the clustering of bands like The Animals, The Turtles, The Byrds, The Kinks and the Monkeee).

Drawing some of the edges

We can’t draw all of the edges, the graph just gets too dense, but if we don’t draw any edges, the map loses too much structure making it less useful for exploration.  So lets see if we can only draw some of the edges – this should bring back some of the structure, without overwhelming us with connections.  The tricky question is “Which edges should I draw?”.   The obvious choice would be to attach each artist to the artist that it is most similar to.  When apply this to the  Beatles-K2 neighborhood we get something like this:

beatles-2-nearest-neighbor

This clearly helps quite a bit. We no longer have the bowl of spaghetti, while we can still see some structure.  We can even see some clustering that make sense (Led Zeppelin is clustered with Jimi Hendrix and the Rolling Stones while Air Supply is closer to the Bee Gees).  But there are some problems with this graph.  First, it is not completely connected, there are a 14 separate clusters varying from a size of 1 to a size of 57.  This disconnection is not really acceptable. Second, there are a number of  non-intuitive flows from familiar to less familiar artists.  It just seems wrong that bands like the Moody Blues, Supertramp and ELO are connected to the rest of the music world via  Electric Light Orchestra II (shudder).

To deal with the ELO II problem I tried a different strategy.  Instead of attaching an artist to its most similar artist,  I attach it to the most similar artist that also has the closest, but greater familiarity.  This should prevent us from attaching the Moody Blues to the world via ELO II, since ELO II is of much less familiarity than the Moody Blues.   Here’s the plot:

beatles-2-nearest-fam

Now we are getting some where.  I like this graph quite a bit.  It has a nice left to right flow from popular to less popular, we are not overwhelmed with edges, and ELO II is in its proper subservient place.  The one problem with the graph is that it is still disjoint.   We have 5 clusters of artists.   There’s no way to get to  ABBA from the Beatles even though we know that ABBA is a near neighbor to the Beatles.  This is a direct product of how we chose the edges. Since we are only using some of the edges in the graph, there’s a chance that some subgraphs will be disjoint.  When I look at the a larger neighborhood (Beatles-K3), the graph becomes even more disjoint with a hundred separate clusters.     We want to be able to build a graph that is not disjoint at all, so we need a new way to select edges.

Minimum Spanning Tree
One approach to making sure that the entire graph is connected is to generate the minimum spanning tree for the graph.  The minimum spanning tree of a graph minimizes the number of edges needed to connect the entire graph.   If we start with a completely connected graph, the minimum spanning tree is guarantee to result in a completely connected graph.  This will eliminate our disjoint clusters.    For this next graph, built the minimum spanning tree of the Beatles-K2 graph.

beatles.2.out.minspan

As predicted, we no longer have separate clusters within the graph. We can find a path between any two artists in the graph.  This is a big win, we should be able to scale this approach up to an even larger number of artists without ever having to worry about disjoint clusters.  The whole world of music is connected in a single graph.  However, there’s something a bit unsatisfying about this graph.  The Beatles are connected to only two other artists: John Lennon & The Plastic Ono Band and The Swinging Blue Jeans.   I’ve never heard of the Swinging Blue Jeans.  I’m sure they sound a lot like the Beatles, but I’m also sure that most Beatles fans would not tie the two bands together so closely.    Our graph topology needs to be sensitive to this.  One approach is to weight the edges of the graph differently.  Instead of weighting them by similarity,  the edges can be weighted by the difference in familiarity between two artists.   The Beatles and Rolling Stones have nearly identical familiarities so the weight between them would be close to zero, while The Beatles and the Swinging Blue Jeans have very different familiarities, so the weight on the edge between them would be very high.  Since the minimum spanning is trying to reduce the overall weight of the edges in the graph, it will chose low weight edges before it chooses high weight edges.  The result is that we will still end up with a single graph, with none of the disjoint clusters, but artists will be connected to other artists of similar familiarity when possible.  Let’s try it out:

beatles.2.minspan.fam

Now we see that popular bands are more likely to be connected to other popular bands, and the Beatles are no longer directly connected to “The Swinging Blue Jeans”.    I’m pretty happy with this method of building the graph.  We are not overwhelmed by edges, we don’t get a whole forest of disjoint clusters, and the connections between artists makes sense.

Of course we can build the graph by starting from different artists. This gives us a deep view into that particular type of music.  For instance, here’s a graph that starts from Miles Davis:

miles-graph

Here’s a near neighbor graph starting from Metallica:

metallica-graph-small

And here’s one showing the near neighbors to Johann Sebastian Bach:

bach-graph

This graphing technique works pretty well, so lets try an larger set of artists.  Here I’m plotting the top 2,000 most popular artists.  Now, unlike the Beatles neighborhood, this set of artists is not guaranteed to be connected, so we may have some disjoint cluster in the plot.  That is expected and reasonable.  The image of the resulting plot is rather large (about 16MB) so here’s a  small detail, click on the image to see the whole thing.  I’ve also created a PDF version which may be easier to browse through.

general.2k.detail

I pretty pleased with how these graphs have turned out.  We’ve taken a very complex space and created a visualization that shows some of the higher level structure of the space (jazz artists are far away from the thrash artists) as well as some of the finer details – the female bubblegum pop artists are all near each other.  The technique should scale up to even larger sets of artists.  Memory and compute time become the limiting factors, not graph complexity.  Still, the graphs aren’t perfect – seemingly inconsequential artists sometimes appear as gateways into whole sub genre.  A bit more work is needed to figure out a better ordering for nodes in the graph.

Some things I’d like to try,  when I have a bit of spare time:

  • Create graphs with 20K artists (needs lots of memory and CPU)
  • Try to use top terms or tags of nearby artists to give labels to clusters of artists – so we can find the Baroque composers or the hair metal bands
  • Color the nodes in a meaningful way
  • Create dynamic versions of the graph to use them for music exploration. For instance, when you click on an artist you should be able to hear the artist and read what people are saying about them.

To create these graphs I used some pretty nifty tools:

  • The Echo Nest developer web services – I used these to get the artist similarity, familiarity and hotness data.  The artist similarity data that you get from the Echo Nest is really nice.  Since it doesn’t rely directly on collaborative filtering approaches it avoids the problems I’ve seen with data from other sources of artist similarity. In particular,  the Echo Nest similarity data is not plagued by hubs (for some music services,  a popular band like Coldplay may have hundreds or thousands of near neighbors due to a popularity bias inherent in CF style recommendation).  Note that I work at the Echo Nest. But don’t be fooled into thinking I like the Echo Nest artist similarity data because I work there. It really is the other way around.  I decided to go and work at the Echo Nest because I like their data so much.
  • Graphviz – a tool for rendering graphs
  • Jung – a Java library for manipulating graphs

If you have any ideas about graphing artists – or if you’d like to see a neighborhood of a particular artist. Please let me know.

, , , ,

18 Comments

Beat Rotation Experiments

Doug Repetto, researcher at Columbia University (and founder of dorkbot),  has been taking the Echo Net Remix API for a spin. Doug is interested in how beat displacement and re-ordering affects the perception of different kinds of music. To kick off his research, he’s created some really interesting beat rotation experiments.  Here’s a couple of examples.

Rich Skaggs & Friends playing Bill Monroe, “Big Mon”, rotated so that the beats are in order  2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1:

The same song rotated so that the beats are in order  1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2:

This time  rotated so that the beats are in order  1 3 4 2 1 2 3 4 1 3 4 2 1 2 3 4:

All 3 versions are musically interesting and sound different.  I’m amazed at how music that sounds so complex can be manipulated so simply to give such interesting results.    Doug has lots more examples of his experiments: rotational energy and centripetal force.  If you are  interested in computational remixology, it is worth checking out.

, , ,

Leave a comment

I may never use iTunes again

On the Spotify blog there’s a video demo of Spotify running on Android (the Google mobile OS).   This is a demo of work-in-progress, but already it shows that just as Spotify is pushing the bounds on the desktop, they are going to push the bounds on mobile devices.  The demo shows that  you get the full Spotify experience on your device.  You can listen to just about any song by any artist.  No waiting for music to load, it just starts playing right away.  All your Spotify playlists are available on your device. You don’t have to do  that music shuffle game that you play with the iPod – where you have to decide on Sunday what songs you will want to listen to on Tuesday.

I think  the killer feature in the demo is offline syncing.  You can make any playlist available for listening even when you are offline.  When you mark a playlist for offline sync, the  tracks in the playlist are downloaded to your device allowing you to listen to them in those places that have no Internet connection (such as a plane, the subway or Vermont).    The demo also shows how Spotify keeps all your playlists magically in sync.  Add a song to one of your Spotify playlists while sitting at your computer and the corresponding playlist on your device is instantly updated. Totally cool.  I do worry that the record labels may balk at the offline sync feature.  Spotify  may be pushing the bounds further than the labels want to go,  by letting us listen to any music at any time, whether at home, in the office or mobile.

Much of my daily music listening is now through the Spotify desktop client.  The folks at Spotify continue to add music at a phenomenal rate (100K new tracks in the last week).    The only reason I ever fire up iTunes now is to synchronize music to my iPhone.  It is no secret that Spotify is also working on an iPhone version of their mobile app.  I can’t wait to get a hold of it.  When that happens, I may never use iTunes again.

Check out the demo:

, , ,

4 Comments