Beat This

A Beat Synchronization Project
Kileen Cheng Bobak Nazer Jyoti Uppuluri Ryan Verret


Beat Detection Algorithm

Frequency Filterbank
Comb Filter

Block Diagram

Matlab Code
Matlab Plots

Time Scaling Algorithm

Matlab Code


Phase Alignment Algorithm

Matlab Code
Matlab Plots



Music Samples






About The Gang


You Are Visitor

  Conclusions and Future Work

  We determined that our algorithm was successful in determining the tempos of songs as well as tempo-matching two songs together. As seen in our Results section, the algorithm is quite proficient at finding the tempo for most songs although it sometimes finds some simple multiple or fraction of the fundamental tempo instead. There are a few songs for which the algorithm does not pick out a reasonable tempo and these are typically songs with a weak tempo that rely more on phrasing from the music to convey a tempo. From these results, our process could have benefitted from longer samples. However, this would have taken much longer to process so we could also streamline our algorithm to run in real-time in a language faster than Matlab.

Writing our code to run in real time would have also allowed us to detect variations in the tempo since analyzing an entire piece of music in chunks would be simple. Our qualitative results for tempo-matching two songs showed that if the songs varied in tempo the combination of the two was not very effective. Being able to pick up on the variations in the song would improve tempo-matching significantly.

The time-scaling algorithm works fairly well for our purposes. Since we are combining two songs, deleting snippets of the slower song every 80ms is fairly unnoticeable. However, we are limited in the tempo change we can apply to a signal. Using some more advanced digital signal processing, we can time-scale our music without pitch-shifting. This would give us more flexibility with the tempos. For robustness, we should also write an algorithm to slow down music without pitch-shifting it. Finally, it would be quite useful if we could implement the time-scaling in real time as well so we could combine two songs while playing them.

The phase-aligning algorithm worked rather well. However, phase-alignment cannot compensate for variable tempo. Certainly, if we could compensate for variable tempo, our phase-alignment algorithm would work for the whole song.

Finally, we could extend our project to include other aspects of music such as phrasing and harmonics. We could then work on harmonically matching music and correlating the phrasing of one song to that of another.

All in all, our algorithm was quite effective in finding the fundamental tempo of most songs and made good use of this information to tempo-match and phase-align various pieces of music. However, we discovered that it was not very good at knowing which songs went together tastefully (and neither were we).



(C) 2001 Beat This. All rights reserved.