API Walkthrough @ MusicHackDay San Francisco '13 Ching-Wei Chen (@cweichen)
Jan 12, 2015
API Walkthrough @ MusicHackDay San Francisco '13
Ching-Wei Chen (@cweichen)
Gracenote
● Founded in 1998● Offices in the U.S. (SF Bay Area), Japan, Korea,
Taiwan and Germany● 300+ employees
Business Verticals
Video
Interactive Program Guide – TV Listings
Audio and video recognition for Second screen Apps
Smart recommendations
Music
Music recognition for Cloud services and Apps
Discovery and playlisting
Linking
Automotive
Music recognition, playlisting and metadata clean-up
Cover Art and Artist Images
Enhanced voice recognition
Some numbers...
Business Verticals
Video
Interactive Program Guide – TV Listings
Audio and video recognition for Second screen Apps
Smart recommendations
Music
Music recognition for Cloud services and Apps
Discovery and playlisting
Linking
Automotive
Music recognition, playlisting and metadata clean-up
Cover Art and Artist Images
Enhanced voice recognition
Business Verticals
Video
Interactive Program Guide – TV Listings
Audio and video recognition for Second screen Apps
Smart recommendations
Music
Music recognition for Cloud services and Apps
Discovery and playlisting
Linking
Automotive
Music recognition, playlisting and metadata clean-up
Cover Art and Artist Images
Enhanced voice recognition
3 developer platforms
Web API
● Delivers a rich set of music metadata (XML)● Text Search Query● Returns
– Artist: genres, origin, decades, images, bio, …
– Album: cover art, track listing, …
– Track: tempo, mood, …
Web API
● Wrappers● Python
https://github.com/cweichen/pygn ● PHP
https://github.com/richadams/php-gracenote● Java
https://github.com/richadams/java-gracenote
Web API
● Wrappers● Python
https://github.com/cweichen/pygn ● PHP
https://github.com/richadams/php-gracenote● Java
https://github.com/richadams/java-gracenote
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Medium Tempo, Heavy Brooding song
by a Swedish Defiant Punk band from the 1990's
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Medium Tempo, Heavy Brooding song
by a Swedish Defiant Punk band from the 1990's
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Medium Tempo, Heavy Brooding song
by a Swedish Defiant Punk band from the 1990's
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Medium Tempo, Heavy Brooding song
by a Swedish Defiant Punk band from the 1990's
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Medium Tempo, Heavy Brooding song
by a Swedish Defiant Punk band from the 1990's
Web API
import pygn # Get it at https://github.com/cweichen/pygn
clientID = 'XXXXXX-XXXXXXXXXXXXXXXXXX' userID = pygn.register(clientID) # only call it once!
metadata = pygn.searchTrack(clientID, userID, 'Backyard Babies', '', 'Minus Celsius')
Medium Tempo, Heavy Brooding song
by a Swedish Defiant Punk band from the 1990's
3 developer platforms
Mobile Client
● iOS & Android SDK● Provides all Web API functionality PLUS
● Library identification (audio fingerprinting)● Streaming "Over The Air" identification
● Sample iOS & Android application in SDK
3 developer platforms
GNSDK
● Good for hardcore C programmers!
● Desktop applications● Library identification (audio fingerprinting)
● Example apps● Mood Grid & Playlisting (local collection)
GNSDK – Mood Grid
GNSDK
● Playlist generation
GENERATE PLAYLIST
WHERE
GN_Tempo > 120 AND
GN_Mood LIKE SEED AND
GN_Genre LIKE SEED
LIMIT 5 PER GN_ArtistName
GNSDK
Prizes
● Best Gracenote Hack: 2 passes to Outside Lands Music Festival
● Favorite Hack: Beats by Dre Pill Portable Wireless Speakers
Ideas
● Music Taste Visualizer use Facebook likes or Last.fm scrobbles + Gracenote metadata to create a visualization of a user’s music collection and tastes, or his/her friend’s music tastes
● Music ID use Gracenote fingerprinting to ID songs on mobile device and
do ??? ● Mood-based music exploration● Mood Lighting Change the ambient of a room, according to the
mood/tempo of the song
@GracenoteDev
Ching-Wei Chen (@cweichen)
Contact
https://