This programming exercise provides a baseline for pitch tracking on singing recordings. You are expected to understand the code and fine tune the parameters to improve the accuracy of pitch tracking.
Training set:
90 short clips, with groundtruth (human labeled beat positions).
Test set:
Test set without groundtruth. You need to use this set to generate the prediction files, and upload them for performance evaluation.
How to run the example program
Modify myBtOptSet.m.
Change the variable auDir in goTest.m to point it to the directory of audio music for beat tracking.
Run goTest.m to obtain the basic performance, with some plots for debugging.
How to get better accuracy
Error analysis
Our program myBt.m will identify beat positions all the way through the audio file. But this is not the case for most of the files. In particular, usually there are no beats at the beginning and end of each audio file. Hence to improve the performance, we need to have a classifier to determine is a beat really exist or not.
Sometimes we can find the tempo correctly, but not the beat positions. This happens to file 037.wav. In this case, we need to improve periodicMarkId.m. Perhaps a comb filter will help.
Some of the audio files do not have a constant tempo, such as 105.wav and 141.wav. In this case, you might want to use small segments for beat tracking and then piece the results together to have the final overall beat positions.
To fine tune BT parameter:
Run goOptimize.m to plot the performance vs. parameter values.(Note that the script will save auSet.mat with pre-computed fields to save time for further computation.)
You can then put the best parameter to myBtOptSet.m.
For visualization
Run goPlayOneFile.m to do debugging over a file with low f-measure.
What to upload for performance evaluation
All you need to upload is the beat files (*.beat2) generated by your beat tracking program. To generate the beat files, you can simply run goBeatWrite.m after modifying the following two lines:
auDir='../btTest';
outputBeatDir='b00902024_beat2';
After running goBeatWrite.m, it will generate a folder of "xxxxxxxxx_beat2" (where the leading characters are you student ID) which contains beat files (with extension "beat2") generated by your beat tracking program. Please compress the whole directory and upload it for evaluation. (Note that manual change of the beat files will be considered cheating in this course. TA may ask you to submit the programs that can generate the beat files for double checking.)
Suggestions
The H1 help of the example code
File convention:
go*.m: Main program that you can execute directly.
my*.*: Files you need to modify in order to improve accuracy.