function [b,sgram,tt,ff] = beat_track(d,sr, VERBOSE)
% [b,sgram,tt,ff] = beat_track(d,sr, VERBOSE)
% Wrapper to run beat tracking on a soundfile.
% <d> is a waveform at <sr>, or is the name of a soundfile.
% <b> returns the beat times.
% 2012-03-27 Dan Ellis dpwe@ee.columbia.edu
if nargin < 3; VERBOSE = 0; end
if nargout == 0; VERBOSE = 1; end
% Maybe read in the waveform
if ischar(d);
targetsr = 11025;
forcemono = 1;
[d,sr] = audioread(d,targetsr,forcemono);
end
% Get the onset envelope
[onset, osr, sgram] = beat_onset(d,sr);
% axes for sgram, in case we need them
tt = [0:size(sgram,2)-1]/osr;
ff = 1:size(sgram,1);
% Estimate the global tempo (and plot global a/c)
if VERBOSE
subplot(211)
end
tempo = beat_tempo(onset, osr, VERBOSE); % plots autocorrelation if VERBOSE
% Do the beat time search
beats = beat_simple(onset, osr, tempo);
if VERBOSE
disp(['Global tempo = ', num2str(tempo),' BPM']);
% Plot the results
subplot(212)
beat_plot(beats, '', tt, ff, sgram);
end
if nargout < 1
% Update the graphics
drawnow();
% Play the results
beat_play(beats, d, sr);
else
b = beats;
end