# HG changeset patch # User Chris Cannam # Date 1235730247 0 # Node ID 52c6817a414e208a9e8cb495de6eddcd59cfdf5f # Parent f4a2f5aa743c260a5fce56df759dd470e18c27af * Add a beat spectral difference output to bar detector diff -r f4a2f5aa743c -r 52c6817a414e plugins/BarBeatTrack.cpp --- a/plugins/BarBeatTrack.cpp Tue Feb 10 16:38:02 2009 +0000 +++ b/plugins/BarBeatTrack.cpp Fri Feb 27 10:24:07 2009 +0000 @@ -234,9 +234,20 @@ beatcounts.sampleType = OutputDescriptor::VariableSampleRate; beatcounts.sampleRate = 1.0 / m_stepSecs; + OutputDescriptor beatsd; + beatsd.identifier = "beatsd"; + beatsd.name = "Beat Spectral Difference"; + beatsd.description = "Beat spectral difference function used for bar-line detection"; + beatsd.unit = ""; + beatsd.hasFixedBinCount = true; + beatsd.binCount = 1; + beatsd.sampleType = OutputDescriptor::VariableSampleRate; + beatsd.sampleRate = 1.0 / m_stepSecs; + list.push_back(beat); list.push_back(bars); list.push_back(beatcounts); + list.push_back(beatsd); return list; } @@ -319,6 +330,9 @@ const float *downsampled = m_d->downBeat->getBufferedAudio(downLength); m_d->downBeat->findDownBeats(downsampled, downLength, beats, downbeats); + vector beatsd; + m_d->downBeat->getBeatSD(beatsd); + // std::cerr << "BarBeatTracker: found downbeats at: "; // for (int i = 0; i < downbeats.size(); ++i) std::cerr << downbeats[i] << " " << std::endl; @@ -360,6 +374,13 @@ feature.values.push_back(beat + 1); returnFeatures[2].push_back(feature); // beat function + if (i > 0 && i <= beatsd.size()) { + feature.values.clear(); + feature.values.push_back(beatsd[i-1]); + feature.label = ""; + returnFeatures[3].push_back(feature); // beat spectral difference + } + if (beat == 0) { feature.values.clear(); sprintf(label, "%d", bar);