<< Chapter < Page Chapter >> Page >
This module discusses the method for finding the tempo of a song and the length of each note, when given the start and end times for each note.

Now that we have what notes were played and each note's starting and ending point, the only pieces of information left to find are the tempo of the music and the lengths of each note as a quarter note of half note, rather than a number of samples. For the purposes of this discussion here, a note length will mean how the amount of time the note would be played is represented on a page of sheet music, such as a quarter note or half note. Meanwhile, a note duration will refer to the actual amount of time the note was played in terms of samples or seconds. Since it is impossible to tell the difference between a song played at one tempo and a song played at twice the tempo with each note being played for twice the number of beats, we must assign a note length to a particular number of samples and extrapolate all other note lengths based on that assignment. We chose to assign the quarter note to the most common note duration.

To find this most common duration, create a histogram of all the note durations. An example histogram is shown below. We then find the maximum of this histogram. Now since this peak represents a range of durations, we still need a precise number of samples to call a quarter note. To do this, we take all of the durations in and around this peak and find the average value of the durations, rounded to the nearest whole number. In the example, all 14 durations clustered around the peak were averaged to achieve this quarter note duration.

Shown here is the histogram created from a song with twenty note-hits detected. Six half notes occur, and fourteen quarter notes occur.

Now that we have an average quarter note duration, we must merely compare all of our durations to this number to determine the most likely length of every note. A range of durations must map to a particular note length since it is highly unlikely that a duration will be an exact multiple of our quarter note duration. In our implementation, we found eighth notes, quarter notes, dotted quarter notes, half notes, dotted half notes, and whole notes. All the ranges we used had a tolerance of one-fourth the quarter note duration in either direction. Other implementations could choose to find more note lengths such as sixteenth notes or triplets; however, this is done at the cost of range tolerance, and thus error rate. Finally, the tempo of the song is simply 60 times the sampling frequency divided by the length of a quarter note in samples.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Elec 301 projects fall 2006. OpenStax CNX. Sep 27, 2007 Download for free at http://cnx.org/content/col10462/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Elec 301 projects fall 2006' conversation and receive update notifications?

Ask