The Echo Nest workshop for Boston Music Hack Day

3,450 views
3,396 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
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,450
On SlideShare
0
From Embeds
0
Number of Embeds
1,557
Actions
Shares
0
Downloads
39
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

×