Archive for category Uncategorized

Where’s the Drama?

I’m at Music Hack Day Berlin this week where I’m just finishing up my hack called Where’s the Drama?

Where’s The Drama? will automatically find the most dramatic bits in your favorite music, so you can skip right to the best part of the song. No need to listen to anything else. Here’s a video of the app in action:


 So get out your cigarette lighter, stand up and start to listen more dramatically.

The app is online, but please treat it gently – it has a really hacky Spotify integration that will probably fall over if you look at it too hard. The code is on github.


The Wub Machine

Peter Sobot (@psobot ) has used The Echo Nest Remix to automatically add dubstep to any song.

The Crash Bandicoot Dubset remix is pretty wild.  Peter says that The Wub Machine is still work in progress. Check out how it works and add your ideas to the mix on Peter’s blog.

, , ,

Leave a comment

The BPM Explorer

Last month I wrote about using the Echo Nest API to analyze tracks to generate plots that you can use to determine whether or not a machine is responsible for setting the beat of a song.   I received many requests to analyze tracks by particular  artists, far too many for me to do without giving up my day job.   To satisfy this pent up demand for click track analysis I’ve written an application called the BPM Explorer that you let you create your own click plots.  With this application you can analyze any song in your collection, view its click plot and listen to your music, synchronized with the plot.  Here’s what the app looks like:

Check out the application here:  The Echo Nest BPM Explorer.  It’s written in Processing and deployed with Java Webstart, so it (should) just work.

My primary motiviation for writing this application was to check out the new Echo Nest Java Client to make sure that it was easy to use from Processing.   One of my secret plans is to get people in the Processing community interested in using the Echo Nest API.  The Processing community is filled with some  ultra-creative folks that have have strong artistic, programming and data visualization skills.   I’d love to see more song visualizations like this and this that are built using the Echo Nest APIs.  Processing is really cool – I was able to write the BPM explorer in just a few hours (it took me longer to remember how to sign jar files for webstart than it did to write the core plotter).    Processing strips away all of the boring parts of writing graphic programming (create a frame,  lay it out with a gridbag, make it visible,  validate, invalidate, repaint, paint arghh!). For processing, you just write a method ‘draw()’ that will be called 30 times a second.   I hope I get the chance to write more Processing programs.

Update: I’ve released the BPM Explorer code as open source – as part of the echo-nest-demos project hosted at google-code.  You can also browse the read  for the BPM Explorer.

, , , ,


Collaborative Filtering and Diversity

One of the things Anthony and I talked about at our “Help! My iPod thinks I’m emo.” SXSW panel last week is the ‘Harry Potter Effect’ – how popular items in a recommender can lead to (among other things) feedback loops that lead to a situation where the rich get richer.  A  popular item like that latest Coldplay or Metallica album get purchased often with other albums and therefore end up getting recommended more frequently – and because it gets recommended – it gets purchased more often until it is sitting on the top of the charts.  The Harry Potter effect can result in a lowering of the diversity of items consumed.

In his post, Online Monculture and the End of the Niche, Tom Slee over at whimsley has run a simulation that shows how this drop in diversity occurs – and also explains the non-intuitive result that while the use of a recommender can lead to decreased diversity overall, it can lead to increased diversity for an individual.  Tom  explains this with a metaphor:  In the Internet World the customers see further, but they are all looking out from the same tall hilltop. While without a recommender  individual customers are standing on different, lower, hilltops. They may not see as far individually, but more of the ground is visible to someone.

As an example of this effect,  here’s a recommendation from Amazon that shows how 8% of  those that shopped for The Big Penis Book

bigbwent on to buy a Harry Potter book.  A recommender that pushes those that are buying books about big penises toward Harry Potter may indeed increase the diversity of those individuals (they may never have considered harry potter before, because of all those penises), but does indeed lower the overall diversity of the community as a whole (everyone is buying harry potter).

It is an interesting post, with charts and graphs and a good comment thread.  Worth a read.  (Thanks for the tip  Jeremy)

1 Comment

Overview of the Echo Nest Remix API

Adam Lindsay has put together some really nice documentation for the remix API:

  • An Overview of the Echo Nest Remix API – This is, as Adam puts it, a “high-level tourist’s guide” to the API.  In this guide, Adam walks the reader through the hierarchy of information returned by the API (beats, bars, tatums, sections and segments), and then goes on to describe some of the ways all of this information can be retrieved and manipulated using the remix methods.  Adam has put together some rather ingenious classes and patterns that make walking through the information in a song really easy. For instance, to find all of the beats in a song that fall on the first beat of the measure, one could code:
        beats =
        ones = beats.that(fall_on_the(1))

    I like Adam’s way of thinking about remix:  “Remix makes each song its own API: each song offers queries into its own features, and can return any number of transformed versions of itself, all of which are sensitive to the original song’s musical features”

  • remix module documentation – Adam has generated some Javadoc style documentation for remix.  This lays out all of the classes, building blocks, helper functions and variables that you need to know about to use remix.  Until now, it has been necessary to look at code samples or delve into the remix code to see what methods and tools were available.  This set of documentation lets you drive the car without having to open the hood to start it. Great stuff.

Thanks much, Adam for providing this documentation.  The whole community is benefitting from your work. Awesome!

Leave a comment

On the ferry

I’m on the ferry between Vermont and upstate NY blogging with my iphone on my way to picking up my son from school for his spring break. I was able to use the 4 hour drive here to practice my sxsw talk: “help! My iPod thinks I’m emo”.

Here’s a shot out the window. There’s still ice on the lake. I suspect there will be less ice in Austin TX.


Leave a comment

Collaborative Playlists

playlistsCollaborative playlists seem to be all the rage.  Fred Wilson writes how he collaborated with his twitter followers to create a primal screen playlist.  Jason talks about combining twitter search, hashtags and Lucas’s playTwitter. Twisten and Blip let you twitter songs and play tweets of others. But I’ve been creating and enjoying collaborative playlists for over a year with Spotify.  Collaborative playlists are fun and a great way to share music and Spotify’s approach makes it dead easy.    You just create a playlist (easy as iTunes), mark it as ‘collaborative’ and share the URL of the playlist with your friends (or the world). Anyone with the URL to the shared playlist can add to, delete or reorder songs on the playlist.  Of course, the down side is that someone can really mess up your playlists.  I have a few suggestions  that could make Spotify collaborative playlists even better:

  1. Add version control to playlists – so when some vandal adds “Never gonna give you up”  50 times to your playlist you can recover
  2. Allow playlist editors to add tags or notations to their additions so you can see why a particular song was added to the playlist
  3. Allow for lengthy text description of playlists and tracks in the playlist (like the XSPF supports)
  4. Let me share a read-only version of a collaborative playlist
  5. Create a directory of playlists so that Spotify users can easily find public and collaborative playlists by name, tag or description.

One day perhaps the whole world will be able to enjoy Spotify’s collaborative playlists.