Archive for category web services
For my London Music Hackday hack I built a web app called ‘Earth Destroyers’. Give Earth Destroyers a band name and it will show you how eco-friendly the band’s touring schedule is. Earth Destroyers calculates the total distance traveled from the first gig to the last along with the average distance between shows. If an artist has an average inter-show distance of greater than a 1,000 km I consider it an ‘Earth Destroyer’. The app also shows you a Google map so you can see just how inefficient the tour is. To build the app I used event data from Bandsintown.
Check out Earth Destroyers
Yesterday, Steve Jobs reminded us that it was less than 10 years ago when Apple announced the first iPod which could put a thousand songs in your pocket. With the emergence of cloud-based music services like Spotify and Rhapsody, we can now have a virtually endless supply of music in our pocket. The ‘bottomless iPod’ will have as big an effect on how we listen to music as the original iPod had back in 2001. But with millions of songs to chose from, we will need help finding music that we want to hear. Shuffle play won’t work when we have a million songs to chose from. We will need new tools that help us manage our listening experience. I’m convinced that one of these tools will be intelligent automatic playlisting.
This weekend at the Music Hack Day London, The Echo Nest is releasing the first version of our new Playlisting API. The Playlisting API lets developers construct playlists based on a flexible set of artist/song selection and sorting rules. The Echo Nest has deep data about millions of artists and songs. We know how popular Lady Gaga is, we know the tempo of every one of her songs, we know other artists that sound similar to her, we know where she’s from, we know what words people use to describe her music (‘dance pop’, ‘club’, ‘party music’, ‘female’, ‘diva’ ). With the Playlisting API we can use this data to select music and arrange it in all sorts of flexible ways – from very simple Pandora radio style playlists of similar sounding songs to elaborate playlists drawing on a wide range of parameters. Here are some examples of the types of playlists you can construct with the API:
- Similar artist radio – generate a playlist of songs by similar artists
- Jogging playlist – generate a playlist of 80s power pop with a tempo between 120 and 130 BPM, but never ever play Bon Jovi
- London Music Hack Day Playlist -generate a playlist of electronic and techno music by unknown artists near London, order the tracks by tempo from slow to fast
- Tomorrow’s top 40 – play the hottest songs by pop artists with low familiarity that are starting to get hottt
- Heavy Metal Radio – A DMCA-Compliant radio stream of nothing but heavy metal
We have also provide a dynamic playlisting API that will allow for the creation of playlists that adapt based upon skipping and rating behavior of the listener.
I’m about to jump on a plane for the Music Hackday London where we will be demonstrating this new API and some cool apps that have already been built upon it. I’m hoping to see a few apps emerge from this Music Hack Day that use the new API. More info about the APIs and how you can use it to do all sorts of fun things will be forthcoming. For the motivated dive into the APIs right now.
[tweetmeme source= ‘plamere’ only_single=false]
TL;DR; I built a game called Name Dropper that tests your knowledge of music artists.
One bit of data that we provide via our web APIs is Artist Familiarity. This is a number between 0 and 1 that indicates how likely it is that someone has heard of that artists. There’s no absolute right answer of course – who can really tell if Lady Gaga is more well known than Barbara Streisand or whether Elvis is more well known than Madonna. But we can certainly say that The Beatles are more well known, in general, than Justin Bieber.
To make sure our familiarity scores are good, we have a Q/A process where a person knowledgeable in music ranks our familiarity score by scanning through a list of artists ordered in descending familiarity until they start finding artists that they don’t recognize. The further they get into the list, the better the list is. We can use this scoring technique to rank multiple different familiarity algorithms quickly and accurately.
One thing I noticed, is that not only could we tell how good our familiarity score was with this technique, this also gives a good indication of how well the tester knows music. The further a tester gets into a list before they can’t recognize artists, the more they tend to know about music. This insight led me to create a new game: The Name Dropper.
The Name Dropper is a simple game. You are presented with a list of dozen artist names. One name is a fake, the rest are real.
If you find the fake, you go onto the next round, but if you get fooled, the game is over. At first, it is pretty easy to spot the fakes, but each round gets a little harder, and sooner or later you’ll reach the point where you are not sure, and you’ll have to guess. I think a person’s score is fairly representative of how broad their knowledge of music artists are.
The biggest technical challenge in building the application was coming up with a credible fake artist name generator. I could have used Brian’s list of fake names – but it was more fun trying to build one myself. I think it works pretty well. I really can’t share how it works since that could give folks a hint as to what a fake name might look like and skew scores (I’m sure it helps boost my own scores by a few points). The really nifty thing about this game is it is a game-with-a-purpose. With this game I can collect all sorts of data about artist familiarity and use the data to help improve our algorithms.
So go ahead, give the Name Dropper a try and see if you can push me out of the top spot on the leaderboard:
[tweetmeme source= ‘plamere’ only_single=false] One of the many cool things about working at the Echo Nest is that we have an Sonos audio system with single group playlist for the office. Anyone from the CEO to the greenest intern can add music to the listening queue for everyone to listen to. The office, as a whole has a rather diverse taste in music and as a result I’ve been exposed to lots of interesting music. However, the downside of this is that since I’m not listening to music being played on my personal computer, every day I have 10 hours of music listening that is never scrobbled, and as they say, if it doesn’t scrobble, it doesn’t count. Sure the Sonos system scrobbles all of the plays to the Echo Nest account on Last.fm but I’d also like it to scrobble it to my account so I can use nifty apps like Lee Byron’s Last.fm Listening History or Matt Ogle’s Bragging Rights on my own scrobbles.
This morning while listening to that nifty Emeralds album, I decided that I’d deal with those scrobble gaps once and for all. So I wrote a little python script called MeToo that keeps my scrobbles up to date. It’s really quite simple. Whenever I’m in the office, I fire up MeToo. MeToo watches the most recent tracks played on The Echo Nest account and whenever a new track is played, it scrobbles it to my personal account. In effect, my scrobbles will track the office scrobbles. When I’m not listening I just close my laptop and the scrobbling stops.
The script itself is pretty simple – I used pylast to do interfacing to Last.fm – the bulk of the logic is less than 20 lines of code. I start the script like so:
% python metoo.py TheEchoNest lamere
when I do that, MeToo will continuously monitor most recently played tracks on TheEchoNest and scrobble the plays on my account. When I close my laptop, the script is naturally suspended – so even though music may continue to play in the office, my laptop won’t scrobble it.
I suspect that this use case is relatively rare, and so there’s probably not a big demand for something like MeToo, but if you are interested in it, leave a comment. If I see some interest, I’ll toss it up on google code so anyone can use it.
It feels great to be scrobbling again!
[tweetmeme source= ‘plamere’ only_single=false] This weekend The Echo Nest is releasing some new remix functionality – Earworm and Capsule. Earworm lets you create a new version of a song that is any length you want. Would you like 2 minute version of Stairway to Heaven? Or a 3 hour version of Freebird? Or an Infinitely long version of Sex Machine? Earworm can do that. Here’s a 60 minute version of a little Rolling Stones ditty:
Capsule takes a list of tracks and optimizes the song transitions by reordering them and applying automatic beat matching and cross fading to give you a seamless playlist. It is really neat stuff. Here’s an example of a capsule between two Bob Marley songs:
It makes a nice little Bob Marley medley.
Jason writes about Capsule and Earworm and some other new features in remix in his new (and rather awesome) blog: Running With Data – Earworm and Capsule. Check it out.
[tweetmeme source= ‘plamere’ only_single=false] As a music application developer, I have long been vexed by a problem that has made building and releasing a music application very difficult – where do I get the music? A music application needs music – but adding music to an application is very hard. I really have just a few choices: (1) I can use unlicensed content and hope nobody notices, (2) I can try to make the deals with the labels, (3) I can restrict my app to non-demand radio and pay per-stream royalties, or (4) I can just skip the music. None of these options is very appealing to me – If my application gets popular I will either get sued by the labels or swamped by music licensing fees. It is better for me if no one notices my app at all. Even resources like album art and 30 second samples are tightly held by the content owners.
What a crazy world! We are at this incredible point in the history of music with millions of tracks at our fingertips. Now more than ever, we need new ways to explore, organize and share music – but any kind of creativity in this space is stymied. I could build the coolest music app in the world that could help millions of people connect with music, but without a source of legal content, my application will never see the light of day. In my last year while working at the Echo Nest, I’ve seen some really amazing music applications made by very creative developers. These are apps that would make your jaw drop – but you’ll never see them. The apps are languishing on the virtual shelf because there’s no good way to get legal content for the apps.
This weekend at Music Hack Day San Francisco we are going to change this. We are going to make it possible for developers to build applications around music content and release the applications to the world without having to worry about music licensing. To do this, we are working with Play.me a new digital music service that offers on-demand music. With the Echo Nest / Play.me program a developer can write music applications using all of the usual Echo Nest APIs – and include streaming content from the millions of songs in the Play.me catalog. Play.me is very generous with its content giving a user 5 hours per week of on-demand music (once a user goes beyond their 5 hour allotment, full-streams are replaced with 30 second streams). Play.me’s strategy here is simple – they hope that by encouraging innovative applications built around their content they will attract more paying subscribers who get access to unlimited streams. The Echo Nest and Play.me platforms are well integrated letting developers write apps that take advantage of all the deep Echo Nest data – artist similarities, news, reviews, blogs, bios, images, video and even our deep track-level music analysis for every artist and track in the Play.me catalog. This is a big deal for music application developers. We can finally build applications around real music without having to worry about being sued or going broke paying licensing fees if our apps get popular. And if our application brings new subscribers to Play.me, we can make money through an affiliate program. (Here’s the fine print – Play.me is currently US only (sorry, rest of the world), and to hear the full streams you need to register with Play.me (you just need an email address, no credit cards required))
There are already some apps that have been built on top of the Echo Nest / Play.me APIs:
MusicExplorerFX – The award-winning Music Exploration tool.
Slice – a music exploration and discovery application for the Android Platform
PlaylistPathfinder – a novel application that creates playlists by finding paths through the Echo Nest artist similarity space.
I’ll write in more depth about these apps in subsequent posts – but the story for these apps are nearly identical – they were cool apps that were languishing on the music shelf because there was no way to release them with licensed content. Now the apps can be released to the world and even help the application developer make some money.
Over the years, we’ve seen many different ways for people to discovery new music come and go. When I was growing up, the radio DJ was the primary way people people discovered new music. The DJ was the tastemaker for the generation. For the next generation, I think music apps will be one of the primary ways people discover new music.
If you have idea about a cool new music app, but have been stymied by the problem of how to get content for your app, check out this program. More details will be forthcoming during Music Hack Day San Francisco.
- Performance – api method calls run faster – on average API methods are running 3X faster than the older version.
- JSON Output – all of our methods now support JSON output in addition to XML. This greatly simplifies writing client libraries for the Echo Nest
- Nimble coding – with the new architecture it will be much easier for us to roll out new features – so expect to see new features added to the Echo Nest platform every month
- No cruft – we are revisiting our APIs to try to eliminate inconsistencies, redundancies and unnecessary features to make them as clean as we can.
The beta version of our next generation APIs are here: http://beta.developer.echonest.com/
The first significant new API we are adding is the Song API – this gives you all sorts of ways to search for and retrieve song level data. With the song API you can do the following:
- search for songs via artist name, song title, and description. You can affect the results with constraints and sorts:
- constrain the results by a number of factors including musical attributes like tempo, loudness, time signature and key, artist hotttnesss, location
- sort – the results by any of the attributes
- Find similar songs – find similar songs to a seed song
- Find profile – get all sorts of info about a song including audio, audio summary info, track data for different catalogs, song hottttnesss, artist_hotttnesss, artist_location, and detailed track analysis
- Identify songs – works in conjunction with the ENMFP
There are lots of things you can do with this API. Here’s just a quick sample of the types of queries you can make:
Find the loudest thrash songs
Find indie songs for jogging
Fetch the tempo of Hey Jude
Fetch the track audio and analysis of Bad Romance
Find songs similar to Bad Romance
- jen-api – a java client
- beta_pyechonest – a new branch of the venerable pyechonest library. Grab it from SVN with
svn checkout http://pyechonest.googlecode.com/svn/branches/ beta-pyechonest-read-only
I’ll be writing more about all of the new APIs real soon. Access the beta Echo Nest APIs here: