X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fvamp-plugins%2FOnsetDetect.cpp;h=c2b6d68dbcd96d64ed9261c9d1a2fab4db8c153a;hb=a8858ad311d72c9f4d2caf68e5200e6d1dc324d7;hp=714eee3647fa69638b66c4d47088a9bf430c0832;hpb=2ba2a50decb4b2f8b6b688dea495a2898124cc4f;p=ardour.git diff --git a/libs/vamp-plugins/OnsetDetect.cpp b/libs/vamp-plugins/OnsetDetect.cpp index 714eee3647..c2b6d68dbc 100644 --- a/libs/vamp-plugins/OnsetDetect.cpp +++ b/libs/vamp-plugins/OnsetDetect.cpp @@ -17,9 +17,9 @@ #endif #include "OnsetDetect.h" -#include "dsp/onsets/DetectionFunction.h" -#include "dsp/onsets/PeakPicking.h" -#include "dsp/tempotracking/TempoTrack.h" +#include +#include +#include using std::string; using std::vector; @@ -354,7 +354,7 @@ OnsetDetector::process(const float *const *inputBuffers, 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) { @@ -368,23 +368,20 @@ OnsetDetector::process(const float *const *inputBuffers, // << "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;