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. % is a waveform at , or is the name of a soundfile. % 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