• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Get control of your email attachments. Connect all your Gmail accounts and in less than 2 minutes, Dokkio will automatically organize your file attachments. You can also connect Dokkio to Drive, Dropbox, and Slack. Sign up for free.


Beat Spy

Page history last edited by aaron mcleran 10 years, 1 month ago

Beat Spy



  • Phil Popp 
    • Music Information Retrieval and Analysis  
    • Audio Research Engineer, Gracenote 
    • email: popp.phillip at gmail dot com 
  • Aaron McLeran
    • Generative Music Composer and Sound Designer
    • Audio Software Engineer, Activision 
    • email: amcleran at gmail dot com 


Big Ideas


1. Using real-time social networks and social network data to create and interface with music. 

2. Create distributed, continuous real-time interaction between large numbers of people anywhere in the world on a single piece of music.




Beat Spy is a music system prototype which uses a Twitter interface to control musical parameters based on the popularity of specified Twitter queries. Beat Spy creates beats by slicing user supplied music and using those slices in the music system. 


Anybody in the world can participate in the musical output of the system by using a simple tweet grammar.



The Twitter Grammar 


     #beatspy <phrase>

     #beatspy track <n>

     #beatspy note <query>

     #beatspy beat <query>


<phrase>                -> Creates a unique seed for the music system based on a hash of the supplied phrase.

track <n>                -> Chooses new source material for beats.

note/beat <query> -> Recent popularity of the supplied <query> is mapped to musical events.


Seeding the music system 


By specifying a phrase without a prefix (track/note/beat), the music system is seeded with a hash of the query. In this way, a unique musical state is created for the specified phrase. The music system can use this single seed for a wide range of musical parameters and structure. For the prototype, it simply is re-used to produce repeatable beat patterns.


Picking new tracks 


Since the actual samples used in the rhythms are remixed slices of pre-existing music (sliced using beat tracking software), the track parameter allows for users to specify which particular track the music system should be used. Currently the playlist is only 10 tracks but in the future, a web interface will allow users to upload tracks to the playlist in real-time and choose which tracks to play.


Mapping Popularity


"Popularity" is defined as the number of tweets which contain the query. The number is between 0 and a tunable "max popularity" number and normalized [0..1]. If the popularity is greater than 0, it is passed to the music system via Open Sound Control. The parameter can then be mapped to any number of musical parameters.


If the query is prefixed by "note", it is simply mapped to note-value; the more popular the query, the higher the note. More complex note-based or synthesis based parameters could be mapped in the future.


If the query is prefixed by "beat", it modifies beat probability distribution functions; a higher popularity produces more complex beats, whilst a lower popularity produces less complex beats. After a short time delay, the music system returns to it's default low-energy state (groove).




The demo for Hackday consists of a proof of concept of the interface and the feasibility of creating music based on twitter searches. The full project will be broader in scope and exist as an interactive socially-networked website. 


BeatSpy's Website will have the following features:


  •      Live audio stream of the current performance state
  •      Upload new source material to be sliced
  •      Playlist of available material
  •      Real-time feedback (and visualization) of recent tweets
  •      Musical visualization 


Tools, Platforms and APIs Used

Twython (Twitter API for Python)

Open Sound Control

Dan Ellis Beat Tracking Algorithm




Comments (0)

You don't have permission to comment on this page.