IFT6080 Music and Machine Learning HW2

Due date: Monday March 16 before class.

You have two different homeworks to choose from. This homework is intentionally left open-ended so that you can tailor it to your skills and your interests. You may use any programming language you'd like. You may work in teams of two but it is not required. If you work alone, please speak with me directly about simplifying the homework assignment.

Option 1: Beat Tracking

Implement a working beat tracker. The beat tracker should take as input an audio file and return as output an annotation of that audio file. The annotation is a text file containing a beat onset in seconds, one beat per line:

You should name your files using this naming convention: [Song name without extension].[Your name].beats
For example, for the audio hello.wav my model writes its predictions to the text file hello.eck.beats

You may use beat_evaluate.py to evaluate your work. Use the Dixon measure.

I have several databases of annotated audio for testing your beat trackers. Since I can't post these datasets on the web I will work with you in class to have access to the audio and annotations.

Option 2: Compete in Tagatune

You may compete in the MIREX Tagatune contest. See the website for details. Note that the deadline has already passed for this contest. This means that your model results (whether good or bad) may not appear as official contest entries.

I have lots of data to use for testing your models. I will work with you in class to have access to that data.


  1. You must submit your source code and a report containing plots and descriptions. A web page is also fine.
  2. Your report can be in French or English.
  3. Submit your homework as a single compressed .zip or .tgz file containing all code and the report via email to douglas.eck@umontreal.ca.
  4. The subject of the email should be "ift6080 hw2"
  5. If you work in teams of two, each person must be familiar with both parts of the homework. Please indicate who did what work in your report