function beat_test(F) % beat_test(F) % Test the beat tracker against a set of files with ground truth. % Each cell of cell array is a sound file. Run the beat % tracker, then score it against a ground truth file with the % same name as but a ".txt" extension (mirex06 format). % 2012-03-27 Dan Ellis dpwe@ee.columbia.edu % Make sure it's a cell array if ischar(F) F = {F}; end nf = length(F); % Global fixup offset = 0.0; for i = 1:nf wavfile = F{i}; [p,n,e] = fileparts(wavfile); txtfile = fullfile(p, [n,'.txt']); beats = beat_track(wavfile); sys_tempo = 60 / median(diff(beats)); [truth, true_tempo] = beat_ground_truth(txtfile); fprintf(1, 'Error for %s (tempo est=%5.1f, users=%5.1f BPM, %d true tracks): ', ... n, sys_tempo, true_tempo, length(truth)); % Complete the report from the printout from beat_score collar = 0.2; VERBOSE = 1; [err(i),ins(i),del(i),tru(i)] = ... beat_score(beats + offset, truth, collar, VERBOSE); end fprintf(1,'Overall average error: %.1f%% (%5d ins, %5d del, %5d true)\n', ... 100*mean(err), sum(ins), sum(del), sum(tru));