show what PresentationInfo::Change is being used for
[ardour.git] / libs / vamp-plugins / OnsetDetect.cpp
index 714eee3647fa69638b66c4d47088a9bf430c0832..2a347919517e82db599c2b40daea28686be1b726 100644 (file)
@@ -49,7 +49,7 @@ public:
     vector<double> dfOutput;
     Vamp::RealTime origin;
 };
-    
+
 
 OnsetDetector::OnsetDetector(float inputSampleRate) :
     Vamp::Plugin(inputSampleRate),
@@ -162,7 +162,7 @@ OnsetDetector::getParameter(std::string name) const
     } else if (name == "sensitivity") {
         return m_sensitivity;
     } else if (name == "whiten") {
-        return m_whiten ? 1.0 : 0.0; 
+        return m_whiten ? 1.0 : 0.0;
     }
     return 0.0;
 }
@@ -265,7 +265,7 @@ OnsetDetector::initialise(size_t channels, size_t stepSize, size_t blockSize)
     dfConfig.adaptiveWhitening = m_whiten;
     dfConfig.whiteningRelaxCoeff = -1;
     dfConfig.whiteningFloor = -1;
-    
+
     m_d = new OnsetDetectorData(dfConfig);
     return true;
 }
@@ -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;
 
@@ -480,7 +477,7 @@ OnsetDetector::getRemainingFeatures()
     }
 
     for (unsigned int i = 0; i < ppParams.length; ++i) {
-        
+
         Feature feature;
 //        feature.hasTimestamp = false;
         feature.hasTimestamp = true;