Mercurial > hg > camir-aes2014
view toolboxes/MIRtoolbox1.3.2/MIRToolboxDemos/demo3tempo.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line source
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)