Code covered by the BSD License  

Highlights from
MIRtoolbox

image thumbnail
from MIRtoolbox by Olivier Lartillot
An innovative environment, on top of Matlab, for music and audio analysis

demo3tempo
function demo3tempo
% To get familiar with tempo estimation from audio using the MIR Toolbox.
% To assess the performance of the tempo estimation method.

% 1. Let's investigate the different stages needed for tempo estimation. 
 
d = miraudio('ragtime')
mirenvelope(d)
e = mirenvelope(d,'Halfwavediff')

% Decompose the audio file with a filter bank.
f = mirfilterbank(d)

% Calculate also a half-wave rectified differentiated envelope.
ee = mirenvelope(f,'HalfwaveDiff')

% Sum the frequency channels.ok
s = mirsum(ee,'Centered') 

d2 = miraudio('vivaldi')
f2 = mirfilterbank(d2)
ee2 = mirenvelope(f2,'HalfwaveDiff')
s2 = mirsum(ee2,'Centered') 

% Calculate the autocorrelation function.
ac = mirautocor(s) 
 
% Apply the resonance model to the autocorrelation function.
ac = mirautocor(s,'Resonance') 
 
% Find peaks in the autocorrelation function.
p = mirpeaks(ac) 
mirgetdata(p)

% Get the period of the peaks.
t = mirtempo(p,'Total',1)

display('Strike any key to continue...');
pause
close all

% 2. All the functions we used are integrated into the function tempo.
help mirtempo

% For instance, we can simply write:
[t,ac] = mirtempo('ragtime')

% As you can see in the help, the resonance is integrated by default in the
% tempo function. To toggle off the use of the resonance function, type:
[t,ac] = mirtempo('ragtime','Resonance',0)

[t,ac] = mirtempo('ragtime','total',5)

display('Strike any key to continue...');
pause
close all

% 3. The excerpt 'laksin' and 'czardas' have variable tempi. Use frame-
% based tempo analysis to estimate the variation of the tempi. 
% Apply to this end the tempo command with the 'frame' option. 
[t1,p1] = mirtempo('laksin','Frame')
[t2,p2] = mirtempo('czardas','Frame')

% What is the range of variation of tempi?
help mirhisto
h1 = mirhisto(t1)
h2 = mirhisto(t2)

Contact us at files@mathworks.com