Machine learning for creative AI applications in music (2018 nov)Yi-Hsuan Yang
An up-to-date overview of our recent research on music/audio and AI. It contains four parts:
* AI Listener: source separation (ICMLA'18a) and sound event detection (IJCAI'18)
* AI DJ: music thumbnailing (TISMIR'18) and music sequencing (AAAI'18a)
* AI Composer: melody generation (ISMIR'17), lead sheet generation (ICMLA'18b), multitrack pianoroll generation (AAAI'18b), and instrumentation generation (arxiv)
* AI Performer: CNN-based score-to-audio generation (AAAI'19)
Research at MAC Lab, Academia Sincia, in 2017Yi-Hsuan Yang
Some research projects we did in 2017 at the Music & Audio Computing (MAC) Lab, Research Center for IT Innovation, Academia Sinica, Taipei, Taiwan. It includes three parts: 1) vocal separation, 2) music generation, 3) AI DJ.
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIsNordic APIs
A presentation given by Bill Doerrfeld, Editor in Chief of Nordic APIs, at our 2024 Austin API Summit, March 12-13.
Session Description: As it turns out, making a hit API is a lot like making a hit music album. You have to find a niche, you need good naming, and you need quality content. Also, on the production side, design, style, experience, and collaboration all matter a lot. At the end of the day, both are products, requiring the right management tools, marketing know-how, and infrastructure to scale. In this SXSW-inspired opening keynote, I'll look into the parallels between the two endeavors, providing a fun and informative look into specific things API providers should be considering on their journey toward becoming API platform rockstars.
LyricsMatch is a song discovery platform that enables the user to search for similar songs in other languages. The similarity is based on the theme or lyrics of the song. The current version supports English to Hindi song suggestions. When the user enters an English song, the platform recommends Hindi songs similar in meaning or theme to the suggested English song.
AI&BigData Lab 2016. Игорь Костюк: Как приручить музыкальную рекомендательную...GeeksLab Odessa
4.6.16 AI&BigData Lab
Upcoming events: goo.gl/I2gJ4H
Это — рекомендательная система. Если взглянуть на нее со стороны, то она крепко застряла между Collaborative filtering и Content-based filtering. Используются рекомендательные системы уже давно, но рекомендации все еще не идеальны. Обычно проблемы — это выбор технологий или там фреймворка… А у нас — cold-start problem, semantic gap и др.!
Fetch me if you can - Handling API data in different JS frameworksMarco Pagni
Here my slides from berlinjs on 09/19/2019:
Fetching and displaying third party API data has become a very popular coding challenge, either before or during interview processes. Having seen several candidates going through this exercise, I'd like to walk you through on how to do this in React, Vue and Svelte, show you pitfalls and common struggles, and explain what the interviewer wants to learn about your skill set with this approach
Workshop on the Last.fm API given at Music Hack Day Stockholm (Jan 30, 2010). WIth contributions from Matthew Ogle, David Singleton, and Jonty Wareing.
Apologies for some text flowing off the slides, Slideshare doesn't seem to like the typeface we use. :-/
Machine Learning for Creative AI Applications in Music (2018 May)Yi-Hsuan Yang
Machine Learning for Creative AI Applications in Music, slides presented at the Fifth Taiwanese Music and Audio Computing Workshop (http://mac.citi.sinica.edu.tw/tmac18/)
A Drupal case study on developing the Australian Broadcasting Corporation's Dig Music website. I gave this talk at Drupal Downunder #ddu2011 in Brisbane, Australia (Jan 23, 2011).
I discuss how the Semantic Web was used to create a real time snapshot of a musical artist that is pulled live from the digital radio broadcast.
I also talk about performance issues we encountered and ways that they were overcome.
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Dr. Vinod Kumar Kanvaria
Exploiting Artificial Intelligence for Empowering Researchers and Faculty,
International FDP on Fundamentals of Research in Social Sciences
at Integral University, Lucknow, 06.06.2024
By Dr. Vinod Kumar Kanvaria
More Related Content
Similar to Mining the social web for music-related data: a hands-on tutorial
Machine learning for creative AI applications in music (2018 nov)Yi-Hsuan Yang
An up-to-date overview of our recent research on music/audio and AI. It contains four parts:
* AI Listener: source separation (ICMLA'18a) and sound event detection (IJCAI'18)
* AI DJ: music thumbnailing (TISMIR'18) and music sequencing (AAAI'18a)
* AI Composer: melody generation (ISMIR'17), lead sheet generation (ICMLA'18b), multitrack pianoroll generation (AAAI'18b), and instrumentation generation (arxiv)
* AI Performer: CNN-based score-to-audio generation (AAAI'19)
Research at MAC Lab, Academia Sincia, in 2017Yi-Hsuan Yang
Some research projects we did in 2017 at the Music & Audio Computing (MAC) Lab, Research Center for IT Innovation, Academia Sinica, Taipei, Taiwan. It includes three parts: 1) vocal separation, 2) music generation, 3) AI DJ.
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIsNordic APIs
A presentation given by Bill Doerrfeld, Editor in Chief of Nordic APIs, at our 2024 Austin API Summit, March 12-13.
Session Description: As it turns out, making a hit API is a lot like making a hit music album. You have to find a niche, you need good naming, and you need quality content. Also, on the production side, design, style, experience, and collaboration all matter a lot. At the end of the day, both are products, requiring the right management tools, marketing know-how, and infrastructure to scale. In this SXSW-inspired opening keynote, I'll look into the parallels between the two endeavors, providing a fun and informative look into specific things API providers should be considering on their journey toward becoming API platform rockstars.
LyricsMatch is a song discovery platform that enables the user to search for similar songs in other languages. The similarity is based on the theme or lyrics of the song. The current version supports English to Hindi song suggestions. When the user enters an English song, the platform recommends Hindi songs similar in meaning or theme to the suggested English song.
AI&BigData Lab 2016. Игорь Костюк: Как приручить музыкальную рекомендательную...GeeksLab Odessa
4.6.16 AI&BigData Lab
Upcoming events: goo.gl/I2gJ4H
Это — рекомендательная система. Если взглянуть на нее со стороны, то она крепко застряла между Collaborative filtering и Content-based filtering. Используются рекомендательные системы уже давно, но рекомендации все еще не идеальны. Обычно проблемы — это выбор технологий или там фреймворка… А у нас — cold-start problem, semantic gap и др.!
Fetch me if you can - Handling API data in different JS frameworksMarco Pagni
Here my slides from berlinjs on 09/19/2019:
Fetching and displaying third party API data has become a very popular coding challenge, either before or during interview processes. Having seen several candidates going through this exercise, I'd like to walk you through on how to do this in React, Vue and Svelte, show you pitfalls and common struggles, and explain what the interviewer wants to learn about your skill set with this approach
Workshop on the Last.fm API given at Music Hack Day Stockholm (Jan 30, 2010). WIth contributions from Matthew Ogle, David Singleton, and Jonty Wareing.
Apologies for some text flowing off the slides, Slideshare doesn't seem to like the typeface we use. :-/
Machine Learning for Creative AI Applications in Music (2018 May)Yi-Hsuan Yang
Machine Learning for Creative AI Applications in Music, slides presented at the Fifth Taiwanese Music and Audio Computing Workshop (http://mac.citi.sinica.edu.tw/tmac18/)
A Drupal case study on developing the Australian Broadcasting Corporation's Dig Music website. I gave this talk at Drupal Downunder #ddu2011 in Brisbane, Australia (Jan 23, 2011).
I discuss how the Semantic Web was used to create a real time snapshot of a musical artist that is pulled live from the digital radio broadcast.
I also talk about performance issues we encountered and ways that they were overcome.
Similar to Mining the social web for music-related data: a hands-on tutorial (20)
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Dr. Vinod Kumar Kanvaria
Exploiting Artificial Intelligence for Empowering Researchers and Faculty,
International FDP on Fundamentals of Research in Social Sciences
at Integral University, Lucknow, 06.06.2024
By Dr. Vinod Kumar Kanvaria
Normal Labour/ Stages of Labour/ Mechanism of LabourWasim Ak
Normal labor is also termed spontaneous labor, defined as the natural physiological process through which the fetus, placenta, and membranes are expelled from the uterus through the birth canal at term (37 to 42 weeks
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...Levi Shapiro
Letter from the Congress of the United States regarding Anti-Semitism sent June 3rd to MIT President Sally Kornbluth, MIT Corp Chair, Mark Gorenberg
Dear Dr. Kornbluth and Mr. Gorenberg,
The US House of Representatives is deeply concerned by ongoing and pervasive acts of antisemitic
harassment and intimidation at the Massachusetts Institute of Technology (MIT). Failing to act decisively to ensure a safe learning environment for all students would be a grave dereliction of your responsibilities as President of MIT and Chair of the MIT Corporation.
This Congress will not stand idly by and allow an environment hostile to Jewish students to persist. The House believes that your institution is in violation of Title VI of the Civil Rights Act, and the inability or
unwillingness to rectify this violation through action requires accountability.
Postsecondary education is a unique opportunity for students to learn and have their ideas and beliefs challenged. However, universities receiving hundreds of millions of federal funds annually have denied
students that opportunity and have been hijacked to become venues for the promotion of terrorism, antisemitic harassment and intimidation, unlawful encampments, and in some cases, assaults and riots.
The House of Representatives will not countenance the use of federal funds to indoctrinate students into hateful, antisemitic, anti-American supporters of terrorism. Investigations into campus antisemitism by the Committee on Education and the Workforce and the Committee on Ways and Means have been expanded into a Congress-wide probe across all relevant jurisdictions to address this national crisis. The undersigned Committees will conduct oversight into the use of federal funds at MIT and its learning environment under authorities granted to each Committee.
• The Committee on Education and the Workforce has been investigating your institution since December 7, 2023. The Committee has broad jurisdiction over postsecondary education, including its compliance with Title VI of the Civil Rights Act, campus safety concerns over disruptions to the learning environment, and the awarding of federal student aid under the Higher Education Act.
• The Committee on Oversight and Accountability is investigating the sources of funding and other support flowing to groups espousing pro-Hamas propaganda and engaged in antisemitic harassment and intimidation of students. The Committee on Oversight and Accountability is the principal oversight committee of the US House of Representatives and has broad authority to investigate “any matter” at “any time” under House Rule X.
• The Committee on Ways and Means has been investigating several universities since November 15, 2023, when the Committee held a hearing entitled From Ivory Towers to Dark Corners: Investigating the Nexus Between Antisemitism, Tax-Exempt Universities, and Terror Financing. The Committee followed the hearing with letters to those institutions on January 10, 202
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Unit 8 - Information and Communication Technology (Paper I).pdfThiyagu K
This slides describes the basic concepts of ICT, basics of Email, Emerging Technology and Digital Initiatives in Education. This presentations aligns with the UGC Paper I syllabus.
Safalta Digital marketing institute in Noida, provide complete applications that encompass a huge range of virtual advertising and marketing additives, which includes search engine optimization, virtual communication advertising, pay-per-click on marketing, content material advertising, internet analytics, and greater. These university courses are designed for students who possess a comprehensive understanding of virtual marketing strategies and attributes.Safalta Digital Marketing Institute in Noida is a first choice for young individuals or students who are looking to start their careers in the field of digital advertising. The institute gives specialized courses designed and certification.
for beginners, providing thorough training in areas such as SEO, digital communication marketing, and PPC training in Noida. After finishing the program, students receive the certifications recognised by top different universitie, setting a strong foundation for a successful career in digital marketing.
The French Revolution, which began in 1789, was a period of radical social and political upheaval in France. It marked the decline of absolute monarchies, the rise of secular and democratic republics, and the eventual rise of Napoleon Bonaparte. This revolutionary period is crucial in understanding the transition from feudalism to modernity in Europe.
For more information, visit-www.vavaclasses.com
The French Revolution Class 9 Study Material pdf free download
Mining the social web for music-related data: a hands-on tutorial
1. Mining the social web
for music-related data:
a hands-on tutorial
Claudio Baccigalupo & Benjamin Fields
ISMIR 2009 – Kobe (Japan)
1
2. Welcome!
Claudio Baccigalupo Ben Fields
IIIA–CSIC Goldsmiths
Barcelona, Spain University of London, UK
ismir2009.ben elds.net
2
3. It’s a hands-on tutorial
You will write code for real MIR applications:
1. Evaluating hypotheses 4. Performing audio analysis
2. Comparing lyrics by genre 5. Capturing social data
3. Revealing trends 6. Collecting feedback
exploring multiple languages and web sites:
3
4. Source code archive
All the code examples are included in the le:
ismir2009.ben elds.net/tutorial.zip
Unzip the archive and open a shell in its folder.
en check that Python and Ruby are installed:
$ ruby --version
$ python --version
Or download them from:
python.org and ruby-lang.org
4
6. The evaluation process
Say you have built the“ultimate genre recogniser”
song genre genre
recogniser
How would you evaluate its precision rate?
1. Build a local collection of varied songs
A cumbersome,
2. Assign them with a genre label
boring process!
3. Run the algorithm and check its output
6
7. The traditional approach
Evaluate with a few, manually labelled examples
$ cd <PACKAGE PATH>/c
$ python isrock.py ../m/rock.mp3 =» True
$ python isrock.py ../m/metal.mp3 =» True
$ python isrock.py ../m/vocal.mp3 =» False
$ python isrock.py ../m/experimental.mp3 =» False
e “ultimate” recogniser or just a coincidence?
7
8. The web-based approach
e web contains thousands of genre-classi ed
songs that can be legally downloaded for free
Jamendo only includes 170K songs by 14K artists
8
9. From browser to web API
A web API allows to retrieve data in a compact
format from a site by means of simple queries
api.jamendo.com/get2/name
+artist_name/album/plain/?
jamendo.com/en/albums order=ratingmonth_desc
9
10. From browser to web API
Documentation at: developer.jamendo.com
API query to retrieve 50 random Rock songs:
api.jamendo.com/get2/stream/track/plain/?
tag_idstr=rock&n=50&order=random_desc
10
11. Creating a Python script
Verify the genre recogniser on Jamendo tracks:
$ python
from urllib import urlopen
from isrock import isRock
query = "http://api.jamendo.com/get2/stream/track/
plain/?n=50&tag_idstr=rock&order=random_desc"
result = urlopen(query).read()
songs = result.split()
rock = [isRock(song) for song in songs]
print "The ratio of rock songs is: %.2f" % (float
(rock.count(True))/len(songs))
11
12. Evaluating the genre recogniser
e code is included in the le c/jamendo_1.py:
=» The ratio of rock
$ python jamendo_1.py
songs is: 0.58
e script c/jamendo_2.py allows to specify the
number of tests and multiple genres at once:
$ python jamendo_2.py 30 rock jazz country rnb
e result shows that the isRock recogniser is
not able to distinguish Rock from other genres
12
13. Lessons learnt
Music data can easily be retrieved from the web
ousands of songs can be downloaded for free
Songs in Jamendo already have a genre label
attached, so you do not have to decide for one
Working with a web API simpli es the process
Di erent musical objects are available (songs,
artists, albums, playlists, users) to work on
13
15. The relevance of lyrics
Recent interest for lyrics-based analysis:
1. Knees, Schedl, Widmer, Multiple Lyrics Alignment: Automatic
Retrieval of Song Lyrics, 2005
2. Geleijnse, Korst, E cient Lyrics Extraction from the web, 2006
3. Kleedorfer, Knees, Pohle, Oh Oh Oh Whoah! Towards
Automatic Topic Detection in Song Lyrics, 2008
4. Mayer, Neumayer, Rauber, Rhyme and Style Features for
Musical Genre Categorisation By Song Lyrics, 2008
Lyrics were retrieved without using any web API
15
16. An online song lyrics database
Lyrics y provides a web API to retrieve lyrics
lyrics y.com/search/view.php? lyrics y.com/api/api.php?
1524965aad&view=578812 i=KEY&a=Rihanna&t=Umbrella
16
17. Creating a Ruby script
To retrieve the lyrics for “Umbrella” (Rihanna):
$ echo '$lyricsfly_key = "PASTE YOUR KEY HERE"' >
lyricsfly_key.rb
17
18. Creating a Ruby script
To retrieve the lyrics for “Umbrella” (Rihanna):
$ irb
require 'net/http'
require 'rexml/document'
require 'lyricsfly_key'
url = "http://lyricsfly.com/api/api.php?
a=Rihanna&t=Umbrella&i=#{$lyricsfly_key}"
result = Net::HTTP.get_response(URI.parse(url))
response = REXML::Document.new
(result.body).elements['//tx']
puts response.text
18
19. Retrieving multiple lyrics
e code is included in the le c/lyrics y_1.py:
=» You have my heart[br]
$ ruby lyricsfly_1.rb
And we'll never be ...
e script c/lyrics y_2.rb allows to specify the
artist name and track title:
=» Imagine there's no
$ ruby lyricsfly_2.rb
Heaven
"John Lennon" Imagine
It's easy if you try
No Hell below us ...
19
20. Lyrics-based analysis
Mayer, Neumayer, Rauber, Rhyme and Style Features
for Musical Genre Categorisation By Song Lyrics, 2008
Textual features of lyrics are related to the genre
Hip-hop lyrics have more ‘?’ than Country ones
Evaluated on 29 Hip-hop and 41 Country songs
Does this hold with larger data sets?
20
21. Repeating the experiment
‘Country’ and ‘Hip-hop’
music web API #1
List songs by genre
music web API #2
List lyrics by genre Count ‘?’ by genre
21
22. Retrieving songs by genre
Last.fm has 4M songs classi ed by tags/genres
last.fm/music/+tag/country last.fm/api/show?service=285
22
23. Retrieving songs by genre
Last.fm has 4M songs classi ed by tags/genres
ws.audioscrobbler.com/2.0/?
last.fm/music/+tag/country method=tag.gettoptracks&
tag=disco& api_key=KEY
23
24. Combining two music web APIs
e code is included in the le c/lyrics y_3.rb:
require 'net/http'
require 'rexml/document'
require "#{File.dirname(__FILE__)}/lyricsfly_key"
require "#{File.dirname(__FILE__)}/lastfm_key"
def get_lyrics(artist_and_title)
artist,title = artist_and_title.collect{|arg|
arg.gsub(/[^a-zA-Z0-9]/,'%25')}
url = "http://lyricsfly.com/api/api.php?"
url += "a=#{artist}&t=#{title}&i=#{$lyricsfly_key}"
result = Net::HTTP.get_response(URI.parse(url))
response = REXML::Document.new(result.body).elements['//tx']
response.text.gsub("[br]", "") unless response.nil?
end
24
25. Combining two music web APIs
def get_artists_and_titles(genre)
url = "http://ws.audioscrobbler.com/2.0/?method="
url += "tag.gettoptracks&tag=#{genre}&api_key=#{$lastfm_key}"
result = Net::HTTP.get_response(URI.parse(url))
response = REXML::Document.new(result.body)
response.elements.collect('//track') do |track| [
track.elements['artist'].elements['name'].text,
track.elements['name'].text ] end unless response.nil?
end
ARGV.each do |genre|
tracks = get_artists_and_titles(genre)
lyrics = tracks.collect{|track| get_lyrics(track)}.compact
qm = lyrics.inject(0.0) {|qm, lyric| qm + lyric.count("?")}
p "#{genre} avg question marks: %.2f" % (qm/lyrics.length)
end
Finally: $ ruby lyricsfly_3.rb country hip-hop
25
26. Lessons learnt
Hip-hop lyrics have more “?” than Country ones
Any programming language with libraries to
retrieve pages and parse XML can do the work
Data from di erent web APIs can be aggregated
A mash-up application can uncover hidden
musical relationships among di erent domains
26
28. From instance to concept
ere is no limit to the chain of API calls
To connect even more resources, unique
identi ers work better than ambiguous names
Many web sites identify musical objects through
a speci c set of Musicbrainz IDs which allow to
easily match the same item in multiple places
28
29. Music and web ontologies
e Linking Open Data project is a prominent
attempt at expressing and connecting objects of
di erent domains using semantic web technology
linkeddata.org musicontology.com
29
31. What is trendy?
“Trend” is related to a speci c time and context
Anything that is rapidly becoming famous in
your enviroment (your friends, your location, …)
Mavens are the rst to pick up on nascent trends
Music example: which artists should you now be
listening to, to keep up with the latest trends?
31
32. Trendy artist of the month
your friends
Last month they
mostly listened to:
is month they are
mostly listening to:
is kind of information can be retrieved from
music-related web communities such as Last.fm
32
33. Hiding API calls with wrappers
Last.fm provides for each user the list of friends
and the most played artists in a given period
ese data can be retrieved via Last.fm API or,
more easily, using the Python wrapper pylast,
available at code.google.com/p/pylast :
$ wget http://pypi.python.org/packages/source/p/
pylast/pylast-0.4.15.tar.gz
$ gunzip < pylast-0.4.15.tar.gz | tar xvf -
$ cd pylast-0.4.15
$ sudo python setup.py install
33
34. Retrieving lists of friends
API wrappers abstract the functions that make
HTTP calls to send and receive information
Using the pylast wrapper, the code to obtain lists
of friends from Last.fm is compact and clear:
$ python
import pylast
from lastfm_key import lastfm_key
api = pylast.get_lastfm_network(lastfm_key)
friends = api.get_user("claudiob").get_friends()
print "Last.fm friends: %s" % friends
34
35. Extracting trendy artists of the month
To reveal which artists a user should listen to:
1. Retrieve the list of friends of that user
2. Retrieve the most played artists by the friends during this and
the previous month, printing those who have ‘grown’ more in
this period while excluding artists the user is already aware of
e code is included in the le c/lastfm_2.py:
$ python lastfm_2.py claudiob
=» Trendy artists for claudiob:
1) Amy Winehouse, already known by daddyrho, recently
discovered by kobra_cccpozzi, pilomatic, econ-luca, ...
35
36. Lessons learnt
Social data from the web helps uncover trends
Data for trends imply a temporal dimension, a
context (friends, geographical location, …) and
a class of objects (artists, tracks, …) to observe
More transparent and ‘human’ than using
collaborative ltering for recommendations
API wrappers shorten and clear up the code
36
38. The web as a source of tools
How do you extract acoustic features of a song?
1. Write your own code:
2. Use a software package:
3. Retrieve from a web site:
echonest.com/analyze
38
39. Estimating the tempo of a song
Acoustic analysis performed through a web API:
upload: ‘Upload a track to e Echo
Nest's analyzer for analysis and later
retrieval of track information’
get_tempo: ‘Retrieve the overall
estimated tempo of a track in beats
per minute after previously calling
for analysis via upload’
developer.echonest.com/ Authentication is required
pages/overview
39
40. Creating a Ruby script
Estimate tempo for the track m/120bpm.mp3:
$ irb
require 'net/http'
require 'rexml/document'
require 'echonest_key'
song = 'http://ismir2009.benfields.net/m/120bpm.mp3'
url= 'http://developer.echonest.com/api/upload'
result = Net::HTTP.post_form(URI.parse(url),
{'api_key' => $echonest_key, 'version' => '3',
'url' => song})
40
41. Creating a Ruby script
Estimate tempo for the track m/120bpm.mp3:
song_id = REXML::Document.new
(result.body).elements['//track'].attributes['id']
url = 'http://developer.echonest.com/api/get_tempo'
url+= "?id=#{song_id}"
url+= "&version=3&api_key=#{$echonest_key}"
result = Net::HTTP.get_response(URI.parse(url))
tempo = REXML::Document.new(result.body).elements
['//tempo'].text
puts "The estimated tempo is #{tempo} BPM"
41
42. Complete audio analysis
e code is included in the le c/echonest_1.rb:
=» The estimated tempo
$ ruby echonest_1.rb
is 120.013 BPM
e script c/echonest_2.rb allows to specify the
track location and estimates more features:
=» "time_signature"=> 4,
$ ruby echonest_2.rb
http:// "mode"=> 1, "key"=> 5,
ismir2009.benfields.net "tempo"=> 120
/m/120bpm.mp3
developer.echonest.com/
forums/thread/9
42
43. Minor/major vs. sad/happy
‘Sad’ and ‘Happy’
Songs in minor are sad
List songs by mood Songs in major are happy
Would you agree?
List modes by mood Compare minor/major
43
44. Running the experiment
e code is included in the le c/echonest_3.rb:
$ ruby echonest_3.rb sad happy
=» sad songs are 0.25 major, 0.75 minor
happy songs are 1.00 major, 0.00 minor
Repeating the experiment with more songs can
serve as a proper evaluation of the statement
Do not submit too many simultaneous queries!
44
45. Lessons learnt
e web makes available both musical data and
tools for acoustic analysis
Even DJs can use web-based tools to remix
Symbolic analysis not available… yet?
e future of music software is on the web
45
47. Social networks for musicians
Web sites for musician-to-musician networking
1. Grant access to an artist’s public music
2. Record relationships among musicians in the same network
3. Provide social data in the domain of music
Can be very useful for music informatics
47
48. A different kind of musical resource
SoundCloud, an advanced music-sharing platform
soundcloud.com soundcloud.com/api/console
48
49. Retrieving lists of followers
Install the Python wrapper for SoundCloud API:
$ git clone git://github.com/soundcloud/python-api-wrapper.git
$ cd python-api-wrapper
$ sudo python setup.py install
Code is included in the le c/soundcloud_1.py:
import scapi
from soundcloud_oauth import init_scope
root = init_scope()
user = root.users("bfields")
for friend in user.followings():
print "Following %s" % friend["username"]
49
50. A different type of authentication
SoundCloud authenticates with OAuth protocol:
c/soundcloud_1.py
runs the full protocol
c/soundcloud_2.py
includes a valid token
only for this application
$ python soundcloud_2.py
=» bfields is following:
Forss, atl, stunna, ...
50
51. Plotting networks of friends
Install the igraph library and Python wrapper:
igraph.sf.net/ pypi.python.org/
from and
download.html pypi/python-igraph
and test by drawing a simple graph into a le:
$ python
import igraph
=»
g = igraph.Graph(n=2, edges=[(0,1)])
g.write_svg("test.svg", g.layout("kk"))
[test.svg]
51
52. Plotting networks of friends
e code included in the le c/soundcloud_3.py:
1. Adds a vertex for a given seed user
2. Gets from SoundCloud the list of people the user “follows”
3. For each of these persons:
• Recursively restart from 1. until the desired level of depth
• Adds an edge to connect to the person to the seed user
$ python soundcloud_3.py bfields 2 =»
52
53. Plotting networks of friends
e code included in the le c/soundcloud_3.py:
1. Adds a vertex for a given seed user
2. Gets from SoundCloud the list of people the user “follows”
3. For each of these persons:
• Recursively restart from 1. until the desired level of depth
• Adds an edge to connect to the person to the seed user
$ python soundcloud_3.py bfields 3 =»
53
54. Plotting as a web service
How to plot a snapshot of the full network?
c/soundcloud_4.py
collects the full network
of SoundCloud friends
(takes a long time!)
LaNet-vi o ers a web
service that draws large
scale networks of data
xavier.informatics.indiana.edu/
lanet-vi/ (no software required!)
54
55. Plotting as a web service
ismir2009.ben elds.net/m/soundcloud_16k.png
55
56. Lessons learnt
Musicians relate in online communities with
each other (as friends, followers, …)
Social networks can easily be extracted and
plotted, either partially or completely
Plotting can also be outsourced to a web service
Researchers can bene t for several applications:
playlist generation, recommender systems, …
56
58. Subjective evaluation
Researchers need feedback in many scenarios
Recommender systems Automatic composition
Mood-based analysis …and more
Setting up a web survey has some drawbacks!
isolated
hard to share
can vote twice (or never)
requires personal data
58
59. Advantages of social networks
Bene ts of publishing the survey on Facebook:
1. Collect personal data without lling any form
2. Explore social connections between users
3. Share and publish surveys through networks of friends
4. Potentially reach millions of users in a friendly environment
5. Attract more people with game-styled application
59
61. Creating a PHP survey
e code is included in the le c/facebook_1.php:
<?php if(!($vote = @$_GET['vote'])) { ?>
<object type="application/x-shockwave-flash" height="30"
data="mp3player.swf?autoplay=true&song_url=http://
ismir2009.benfields.net/m/saxex.mp3"></object>
<form>
<b>Personal data:</b><br /> Your name:
<input type="text" name="first_name" size="17">
<input type="text" name="last_name" size="17"> Your birth year:
<input type="text" name="birth_year" size="4"> Your sex:
<input type="radio" name="sex" value="male"> Male
<input type="radio" name="sex" value="female"> Female
Your current home-town: <input type="text" name="city" size=25>
<b>Survey:</b><br />
This song was performed by a
<input type="submit" value='Human' name="vote" /> or by a
<input type="submit" value='Robot' name="vote" />?</form>
61
62. Creating a PHP survey
e code is included in the le c/facebook_1.php:
<?php } else {
$info = $_GET;
$data_file = "/tmp/fb_survey.txt";
$text = "|". date("Y.m.d H:i:s");
$text .= "|". $vote;
$text .= "|". $info['first_name'] ." ". $info['last_name'];
$text .= "|". $info['sex'];
$text .= "|". $info['birth_year'];
$text .= "|". $info['city'];
$file = fopen($data_file, "a");
fwrite($file, $text ."n"); fclose($file);
$file = file_get_contents($data_file, 'r');
$human = substr_count($file, '|Human|');
$robot = substr_count($file, '|Robot|');
echo "Votes so far: Human ". $human ." - Robot ". $robot;
echo "<pre>". $file ."</pre>";
} ?>
62
63. Creating a Facebook application
1. Create a Facebook account
2. Navigate to facebook.com/developers/apps.php
3. Add the Developer application to the Facebook pro le
4. Set up a new application
63
64. Setting up the environment
5. Copy and paste the application keys to c/facebook_key.php:
<?php
$app_id = "142884214891";
$api_key = "33e8acab5343ebfc3bc545c57c81c7e0";
$secret_key = "d2721fe8b3276bd24a2d5a0d62b3f518";
?>
6. Download and unzip the Facebook PHP client library from
facebook.com/developers/apps.php to the c/ folder
7. Add the following lines at the top of c/facebook_1.php:
<?php
require_once('facebook_key.php');
require_once("facebook-platform/php/facebook.php");
$facebook = new Facebook($api_key, $secret);
$user = $facebook->require_login(); ?>
64
65. Creating a Facebook survey in PHP
8. Modify the rest of c/facebook_1.php as follows:
<?php if(!($vote = @$_GET['vote'])) { ?>
<fb:mp3 src="http://ismir2009.benfields.net/m/saxex.mp3"
<object type="application/x-shockwave-flash" height="30"
title="Autumn Leaves" album="Autumn Leaves" artist="Human or
data="mp3player.swf?autoplay=true&song_url=http://
Robot?" />
ismir2009.benfields.net/m/saxex.mp3"></object>
<form>
<b>Personal data:</b><br /> Your name:
<input type="text" name="first_name" size="17">
<input type="text" name="last_name" size="17"> Your birth year:
<input type="text" name="birth_year" size="4"> Your sex:
<input type="radio" name="sex" value="male"> Male
<input type="radio" name="sex" value="female"> Female
Your current home-town: <input type="text" name="city" size=25>
<b>Survey:</b><br />
This song was performed by a
<input type="submit" value='Human' name="vote" /> or by a
<input type="submit" value='Robot' name="vote" />?</form>
65
67. Deploying to Facebook
Update the code from the le c/facebook_2.php
to a web server and update Facebook settings:
Click on the canvas tab
Fill the desired web address
Specify the location of the code
Select FBML as render method
Save changes
Visit the application page
67
71. Mining the web for musical data is easy and fast
Every researcher can bene t from this approach
Web APIs can be combined for speci c goals
Online social networks are practical to collect
human experiences and evaluate hypotheses
e web also o ers tools for analysis and graphs
Give it a try!
71