[Full Text], [Review]
An alternative approach to track beats of a musical recording in real time is proposed here. Chunks of audio are obtained at a constant sampling rate, and a corresponding sub-sampled function known as novelty curve is generated which is designed such that it peaks on note onsets and sudden bursts in energy. Using the novelty curve, tempo for a section of audio is estimated, and the beat instants are detected and changed dynamically.
We submitted this algorithm to the IEEE Signal Processing Cup 2017 and were ranked in the middle third (8-14) among 21 teams all over the world.
Implementation on a embedded device
We implemented the algorithm on Raspberry Pi (3rd Generation) which has 1.2GHz 64-bit quad core ARMv8 CPU and 1Gb RAM. The algorithm was implemented in Python along with heavy use of numpy library to vectorize the code and hence decrease the running time. The links for the the output of the algorithm on Raspberry Pi on an easy and tough musical piece are as follows: