Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
API Workshop
           November 21, 2010
           Paul Lamere
           paul@echonest.com




Friday, November 20, 2009
listening                    reading




     World of Music Audio                      learning             World of Musi...
READING
                                       Artist
                                      • Tag Cloud
                  ...
Track
                                                                                                                    ...
developer.echonest.com
Friday, November 20, 2009
developer.echonest.com
Friday, November 20, 2009
Query:
             http://developer.echonest.com/api/get_similar
               ?api_key=YOUR_API_KEY
               &id=...
CLIENT LIBRARIES
                     Echo Nest
                       Remix
                                            J...
The Echo Nest
                              Artist API




Friday, November 20, 2009
Friday, November 20, 2009
Friday, November 20, 2009
Friday, November 20, 2009
Get your gaga on ... from python

             >> from pyechonest import artist
             >>
             >> gaga = art...
ARTIST RADIO IN TEN LINES OF CODE


    def wander(band, max=10):
        """ generate a playlist by wandering a seed arti...
Find Weezer’s neighbors in Java
       ArtistAPI artistAPI = new ArtistAPI(MY_ECHO_NEST_API_KEY);
       List<Artist> arti...
Things you can build with
                                 The Echo Nest
                                    Artist API


...
Friday, November 20, 2009
Friday, November 20, 2009
PLAYLISTING




Friday, November 20, 2009
PLAYLISTING




Friday, November 20, 2009
Friday, November 20, 2009
More engaging music discovery
                The Music Exploration Space




Friday, November 20, 2009
The Echo Nest
                              Track API




Friday, November 20, 2009
25




                                              auditory spectrogram
                                                ...
4
                                                    x 10
                                               2

             ...
Friday, November 20, 2009
ECHO NEST REMIX API

                               chop sound into:

        Sections


        Bars

        Beats
     ...
Delving into ‘Billie Jean’
           >> from pyechonest import track
           >>
           >> t=track.upload("BillieJe...
Things you can build with
                                 The Echo Nest
                                    Track API



...
The Click Track Detector

                                                   Nirvana




                            Britn...
The Loudness war
                The loss of dynamic range in modern recordings




Friday, November 20, 2009
MUSIC VISUALIZATION




Friday, November 20, 2009
Friday, November 20, 2009
Visualizing Kid-A
                Song visualizations by using Echo Nest Analysis




                                    ...
Visualizing Song self similarity
                  The shape of the song



    Madonna, Like A Prayer




               ...
SYNCHSTEP




                            MATCH MUSIC TO YOUR PACE

Friday, November 20, 2009
Song visualization on the iPhone
                Cocoa framework for the Echo Nest




Friday, November 20, 2009
Beethoven Hero
                Synchronizing visualizations with music




                                               ...
Friday, November 20, 2009
THE ECHO NEST REMIX API




Friday, November 20, 2009
CLIENT LIBRARIES
                     Echo Nest
                       Remix
                                            J...
Friday, November 20, 2009
>> song.segments
                                                         [segment, segment, segment...]
                 ...
WHAT
                            THE ECHO NEST REMIX API
                                    DOES




Friday, November 20,...
def one(input_filename, output_filename):
             audiofile = audio.LocalAudioFile(input_filename)
             bars ...
MAKE WEB SITES
Friday, November 20, 2009
MAKE WEB SITES
Friday, November 20, 2009
Hyperingo



      st = modify.Modify()
      afile = audio.LocalAudioFile(in_filename)
      beats = afile.analysis.beats...
Hyperingo



      st = modify.Modify()
      afile = audio.LocalAudioFile(in_filename)
      beats = afile.analysis.beats...
I’ve always wanted to hear
                            Michael Jackson trying to sing
                                Amer...
Make a James Brown Machine


                                  MAKE MUSIC
Friday, November 20, 2009
Let’s hear The Black Eyes Peas in 5/4.

                                            -P.L.
                                ...
API Workshop
       November 21, 2010
       Paul Lamere
       paul@echonest.com




Friday, November 20, 2009
Upcoming SlideShare
Loading in …5
×

The Echo Nest workshop for Boston Music Hack Day

4,092 views

Published on

This is a slide deck for the Echo Nest API workshop presented at the Boston Music Hack Day on November 21, 2010. Note that the live presentation has music and video that is not present in this deck

Published in: Technology
  • Be the first to comment

The Echo Nest workshop for Boston Music Hack Day

  1. 1. API Workshop November 21, 2010 Paul Lamere paul@echonest.com Friday, November 20, 2009
  2. 2. listening reading World of Music Audio learning World of Music Text Solutions WHAT THE ECHO NEST DOES Friday, November 20, 2009
  3. 3. READING Artist • Tag Cloud • Similar Artists • Familiarity • Hotttnesss • News • Audio • Images • Video • Reviews • Biography Friday, November 20, 2009
  4. 4. Track LISTENING •Tempo • Key Dm7 G7 CM7 C#O Dm7 G7 CM7 C#O Dm7 G7 CM7 C#O Dm7 G7 CM7 C#O • Time Signature x 10 4 • Mode • Sections 2 1 wave form 0 • Pitch ! -1 ! -2 0 2 4 6 8 10 12 14 16 • Timbre 1 0.8 25 auditory spectrogram loudness 0.6 20 0.4 • Tatums 15 0.2 10 0 0 2 4 6 8 10 12 14 16 5 25 • Beats 1 0 0.5 1 1.5 2 sec. 20 spectrogram 1 auditory 15 0.8 10 segmentation • Bars 5 0.6 1 0 2 4 0.4 6 8 10 12 14 16 0.2 B • Duration A 0 chromagram 0 0.5 1 20 1.5 2 sec. G B A# E A 40 D pitch features • Loudness G# C G 0 2 4 F# 6 8 10 6012 14 16 F E B segment-synchronous D# D 80 A • Metadata chromagram C# G C 0 0.5 1 1.5 2 sec. 100 E 25 D 20 120 timbre features C • Segments 0 2 4 6 8 10 12 14 16 15 140 10 • Fade in 5 160 1 2 4 6 8 10 12 14 16 segments 180 • Fade out 200 220 20 40 60 80 100 120 140 160 180 200 220 Friday, November 20, 2009
  5. 5. developer.echonest.com Friday, November 20, 2009
  6. 6. developer.echonest.com Friday, November 20, 2009
  7. 7. Query: http://developer.echonest.com/api/get_similar ?api_key=YOUR_API_KEY &id=music://id.echonest.com/~/AR/AR2UWUD1187B9B3B01&rows=3 &version=3 Response: Friday, November 20, 2009
  8. 8. CLIENT LIBRARIES Echo Nest Remix Java 3RD PARTY Cocoa Pyechonest Flash Ruby Processing Echo Nest Web Services http://developer.echonest.com/pages/resources Friday, November 20, 2009
  9. 9. The Echo Nest Artist API Friday, November 20, 2009
  10. 10. Friday, November 20, 2009
  11. 11. Friday, November 20, 2009
  12. 12. Friday, November 20, 2009
  13. 13. Get your gaga on ... from python >> from pyechonest import artist >> >> gaga = artist.search_artists(‘Lady Gaga’)[0] >> gaga <Artist ‘Lady Gaga’> >> gaga.hotttnesss() 0.86328906000000005 >> gaga.similar(2) [<Artist 'Ashley Tisdale'>, <Artist 'Britney Spears'>] Friday, November 20, 2009
  14. 14. ARTIST RADIO IN TEN LINES OF CODE def wander(band, max=10): """ generate a playlist by wandering a seed artist neighborhood """ played = [] while max: if band.audio(): audio = random.choice(band.audio()) if audio['url'] not in played: play(audio) played.append(audio['url']) max -= 1 band = random.choice(band.similar()) Friday, November 20, 2009
  15. 15. Find Weezer’s neighbors in Java ArtistAPI artistAPI = new ArtistAPI(MY_ECHO_NEST_API_KEY); List<Artist> artists = artistAPI.searchArtist("Weezer”, false); if (artists.size() > 0) { for (Artist artist : artists) { List<Scored<Artist>> similars = artistAPI.getSimilarArtists(artist, 0, 10); for (Scored<Artist> simArtist : similars) { System.out.println("   " + simArtist.getItem()); } } } Friday, November 20, 2009
  16. 16. Things you can build with The Echo Nest Artist API Friday, November 20, 2009
  17. 17. Friday, November 20, 2009
  18. 18. Friday, November 20, 2009
  19. 19. PLAYLISTING Friday, November 20, 2009
  20. 20. PLAYLISTING Friday, November 20, 2009
  21. 21. Friday, November 20, 2009
  22. 22. More engaging music discovery The Music Exploration Space Friday, November 20, 2009
  23. 23. The Echo Nest Track API Friday, November 20, 2009
  24. 24. 25 auditory spectrogram 20 15 auditory spectrogram 10 5 1 0 0.5 1 1.5 2 sec. 1 0.8 segmentation 0.6 segments 0.4 0.2 0 0 0.5 1 1.5 2 sec. B A# A pitch features G# G pitch features F# F E D# D C# C 0 0.5 1 1.5 2 sec. 25 20 timbre features 15 timbre features 10 5 1 2 4 6 8 10 12 14 16 segments JEHAN STYLE Friday, November 20, 2009
  25. 25. 4 x 10 2 1 0 beat markers ! -1 ! -2 0 5 10 15 20 25 240 190 143 tempogram 114 96 72 60 0 5 10 15 20 25 1 0.8 0.6 tempo spectrum 0.4 0.2 0 60 72 96 114 143 190 240 JEHAN STYLE Friday, November 20, 2009
  26. 26. Friday, November 20, 2009
  27. 27. ECHO NEST REMIX API chop sound into: Sections Bars Beats ALL SONG Segments ELEMENTS ARE ITEMS IN A LIST Friday, November 20, 2009
  28. 28. Delving into ‘Billie Jean’ >> from pyechonest import track >> >> t=track.upload("BillieJean.mp3") >> t.tempo {'confidence': 0.966, 'value': 116.944} >> len(t.bars) 142 >> len(t.segments) 1259 >> t.segments[10] {'duration': 0.252, 'loudness_begin': -46.009, 'loudness_end': -44.121, 'loudness_max': -30.931, 'pitches': [0.342, 0.873, 0.843, 1.0, 0.511, 0.432, 0.841, 0.432, 0.691, 0.687, 0.329, 0.672], 'start': 2.50204, 'timbre': [19.50, 130.611, -114.94, 112.246, 28.369, -60.277, -23.689, -10.537, 4.514, 12.957, -25.44, 2.88], 'time_loudness_max': 0.0171} Friday, November 20, 2009
  29. 29. Things you can build with The Echo Nest Track API Friday, November 20, 2009
  30. 30. The Click Track Detector Nirvana Britney Spears Friday, November 20, 2009
  31. 31. The Loudness war The loss of dynamic range in modern recordings Friday, November 20, 2009
  32. 32. MUSIC VISUALIZATION Friday, November 20, 2009
  33. 33. Friday, November 20, 2009
  34. 34. Visualizing Kid-A Song visualizations by using Echo Nest Analysis Visualizations by Chris Mueller Friday, November 20, 2009
  35. 35. Visualizing Song self similarity The shape of the song Madonna, Like A Prayer Reich, Steve – Music for 18 Musicians: Pulses Visualization by Chris Mueller Friday, November 20, 2009
  36. 36. SYNCHSTEP MATCH MUSIC TO YOUR PACE Friday, November 20, 2009
  37. 37. Song visualization on the iPhone Cocoa framework for the Echo Nest Friday, November 20, 2009
  38. 38. Beethoven Hero Synchronizing visualizations with music By Anita Lillie Friday, November 20, 2009
  39. 39. Friday, November 20, 2009
  40. 40. THE ECHO NEST REMIX API Friday, November 20, 2009
  41. 41. CLIENT LIBRARIES Echo Nest Remix Java 3RD PARTY Cocoa Pyechonest Flash Ruby Processing Echo Nest Web Services http://developer.echonest.com/pages/resources Friday, November 20, 2009
  42. 42. Friday, November 20, 2009
  43. 43. >> song.segments [segment, segment, segment...] >> song.segments[10].start 34.502 >> song.segments[10].timbre [-30.2, -10.4, 4.5, 3.2...] >> song.segments[10].pitch [0.5, 0.13, 1.0, .... ] >> song.beats.reverse() >> for i in segments: i.stretch(2) i = i + othersong.segment[12] >> You can mix elements, time stretch them, detect & change pitch, move them around, repeat them on downbeats, find a closest match in another song, detect and modify volume envelopes, read/write mp3, aiff, wav ALL SONG ELEMENTS ARE ITEMS IN A LIST Friday, November 20, 2009
  44. 44. WHAT THE ECHO NEST REMIX API DOES Friday, November 20, 2009
  45. 45. def one(input_filename, output_filename): audiofile = audio.LocalAudioFile(input_filename) bars = audiofile.analysis.bars collect = audio.AudioQuantumList() for bar in bars: collect.append(bar.children()[0]) out = audio.getpieces(audiofile, collect) out.encode(output_filename) Friday, November 20, 2009
  46. 46. MAKE WEB SITES Friday, November 20, 2009
  47. 47. MAKE WEB SITES Friday, November 20, 2009
  48. 48. Hyperingo st = modify.Modify() afile = audio.LocalAudioFile(in_filename) beats = afile.analysis.beats total = float(len(beats)) out_shape = (2*len(afile.data),) for i, beat in enumerate(beats): delta =  i / total new_ad = st.shiftTempo(afile[beat], 1 + delta / 2) out_data.append(new_ad) out_data.encode(out_filename) Friday, November 20, 2009
  49. 49. Hyperingo st = modify.Modify() afile = audio.LocalAudioFile(in_filename) beats = afile.analysis.beats total = float(len(beats)) out_shape = (2*len(afile.data),) for i, beat in enumerate(beats): delta =  i / total new_ad = st.shiftTempo(afile[beat], 1 + delta / 2) out_data.append(new_ad) out_data.encode(out_filename) Friday, November 20, 2009
  50. 50. I’ve always wanted to hear Michael Jackson trying to sing Amerie’s “One Thing” -B.L. MAKE MUSIC Friday, November 20, 2009
  51. 51. Make a James Brown Machine MAKE MUSIC Friday, November 20, 2009
  52. 52. Let’s hear The Black Eyes Peas in 5/4. -P.L. MAKE MOVIES Friday, November 20, 2009
  53. 53. API Workshop November 21, 2010 Paul Lamere paul@echonest.com Friday, November 20, 2009

×