2. listening reading
World of Music Audio learning World of Music Text
Solutions
What The Echo Nest Does
3. The Echo Nest
Context - things we know about music
Artist Data Song Data Listener Data
• Similar Artists • Tempo • Demographics
• Tag Clouds • Danceability age, gender, location
• Familiarity • Energy • Psychographics
Hotttnesss Key & Mode preferences, lifestyle
• •
• Music Preference
• Bios • Time Signature
Blogs Beats • Listening Patterns
• •
News Downbeats • Online Sentiment
• •
Reviews Segments • Community Clustering
• •
Audio links Timbre • Tastemaker Profiling
• •
writers, bloggers
• Video links • Pitch
• Profile Sites • Loudness
• Commerce Links • Sections
• Fingerprint
4. The Echo Nest
Solutions - APIs you can use
Artist Search Song Search
Personalization Advanced Playlisting
Audio Identification Remix
Recommendations
5. Artist Radio (in ten lines of code)
def play_artist_radio(artist, max=10):
""" generate a playlist by wandering a seed artist neighborhood """
played = []
while max:
if artist.audio():
audio = random.choice(artist.audio())
if audio['url'] not in played:
play(audio)
played.append(audio['url'])
max -= 1
band = random.choice(artist.similar())
6. Artist Radio (in three lines of code)
def play_artist_radio(seed, max=10):
""" generate an artist radio playlist """
for song in playlist.static(type='artist-radio',
artist=[seed], results=max):
play(song)
8. With remix you can
chop sound into:
Sections
Bars
Beats
And then
programmatically
Tatums manipulate all of the
bits and pieces
Segments
9. slicing and dicing
Create a remix from beat one of every bar
bars = audiofile.analysis.bars
collect = []
for bar in bars:
collect.append(bar.children()[0])
out = audio.getpieces(audiofile, collect)
out.encode(output_filename)
10. slicing and dicing
Create a remix from beat one of every bar
bars = audiofile.analysis.bars
collect = []
for bar in bars:
collect.append(bar.children()[0])
out = audio.getpieces(audiofile, collect)
out.encode(output_filename)
11. slicing and dicing
Create a remix from beat one of every bar
bars = audiofile.analysis.bars
collect = []
for bar in bars:
collect.append(bar.children()[0])
out = audio.getpieces(audiofile, collect)
out.encode(output_filename)
25. “Years active” for artists
• Can be requested as part of any artist profile call
26. “Years active” for artists
• Can be requested as part of any artist profile call
• Provides start and end dates, supports multiple
active ranges
27. “Years active” for artists
• Can be requested as part of any artist profile call
• Provides start and end dates, supports multiple
active ranges
• Available NOW for artists, coming soon for songs
and as a constraint in our playlist API
28. “Years active” for artists
• Can be requested as part of any artist profile call
• Provides start and end dates, supports multiple
active ranges
• Available NOW for artists, coming soon for songs
and as a constraint in our playlist API
30. “Artist Extract” beta
• New API call that will attempt to extract artist
names from any text you supply
31. “Artist Extract” beta
• New API call that will attempt to extract artist
names from any text you supply
• Takes advantage of our giant database of artists and
our internal toolkit of aliases, stopwords, merged
artists and more (“Led Zep” resolves to Led
Zepplin, “Air” won’t match unless capitalized, etc)
32. “Artist Extract” beta
• New API call that will attempt to extract artist
names from any text you supply
• Takes advantage of our giant database of artists and
our internal toolkit of aliases, stopwords, merged
artists and more (“Led Zep” resolves to Led
Zepplin, “Air” won’t match unless capitalized, etc)
• Results returned in appearance order (default) but
can be sorted by any EN artist attribute
33. “Artist Extract” beta
• New API call that will attempt to extract artist
names from any text you supply
• Takes advantage of our giant database of artists and
our internal toolkit of aliases, stopwords, merged
artists and more (“Led Zep” resolves to Led
Zepplin, “Air” won’t match unless capitalized, etc)
• Results returned in appearance order (default) but
can be sorted by any EN artist attribute
34. “Artist Extract” beta
• New API call that will attempt to extract artist
names from any text you supply
• Takes advantage of our giant database of artists and
our internal toolkit of aliases, stopwords, merged
artists and more (“Led Zep” resolves to Led
Zepplin, “Air” won’t match unless capitalized, etc)
• Results returned in appearance order (default) but
can be sorted by any EN artist attribute
35. Even more newness
• Facebook artist page IDs now in Rosetta,
easily link to artists on FB (also check out “EN
SMAC”, our $10K social music app contest)
36. Even more newness
• Facebook artist page IDs now in Rosetta,
easily link to artists on FB (also check out “EN
SMAC”, our $10K social music app contest)
• Song buckets in the artist API, makes it easy to
get a list of songs for an artist sorted on any EN
attribute (hotttnesss, danceability, etc)
37. Even more newness
• Facebook artist page IDs now in Rosetta,
easily link to artists on FB (also check out “EN
SMAC”, our $10K social music app contest)
• Song buckets in the artist API, makes it easy to
get a list of songs for an artist sorted on any EN
attribute (hotttnesss, danceability, etc)
• libechonest, our official iOS library, now on
Github (https://github.com/echonest/libechonest)
38. The Echo Nest Prize
An iPad 2 will be awarded to the best™
hack that uses The Echo Nest API
39. We’re hiring
…in London!
The Institute is looking for
web devs, mobile devs, and
designers to prototype and
build music apps
Contract &/or full-time
Find Matt for more info!
40. Happy hacking!
• Much more detail online at:
• developer.echonest.com new and improved
• blog.echonest.com
• Grab Matt for help:
• matt@echonest.com
• @flaneur on Twitter
• mogle in #musichackday on freenode