#endif
#include "OnsetDetect.h"
-#include "dsp/onsets/DetectionFunction.h"
-#include "dsp/onsets/PeakPicking.h"
-#include "dsp/tempotracking/TempoTrack.h"
+#include <dsp/onsets/DetectionFunction.h>
+#include <dsp/onsets/PeakPicking.h>
+#include <dsp/tempotracking/TempoTrack.h>
using std::string;
using std::vector;
return FeatureSet();
}
- size_t len = m_d->dfConfig.frameLength / 2;
+ size_t len = m_d->dfConfig.frameLength / 2 + 1;
// float mean = 0.f;
// for (size_t i = 0; i < len; ++i) {
// << "dftype " << m_dfType << ", sens " << m_sensitivity
// << ", len " << len << ", mean " << mean << std::endl;
- double *magnitudes = new double[len];
- double *phases = new double[len];
+ double *reals = new double[len];
+ double *imags = new double[len];
// We only support a single input channel
for (size_t i = 0; i < len; ++i) {
-
- magnitudes[i] = sqrt(inputBuffers[0][i*2 ] * inputBuffers[0][i*2 ] +
- inputBuffers[0][i*2+1] * inputBuffers[0][i*2+1]);
-
- phases[i] = atan2(-inputBuffers[0][i*2+1], inputBuffers[0][i*2]);
+ reals[i] = inputBuffers[0][i*2];
+ imags[i] = inputBuffers[0][i*2+1];
}
- double output = m_d->df->process(magnitudes, phases);
+ double output = m_d->df->processFrequencyDomain(reals, imags);
- delete[] magnitudes;
- delete[] phases;
+ delete[] reals;
+ delete[] imags;
if (m_d->dfOutput.empty()) m_d->origin = timestamp;