Implement reset functions (fixes #498)
[vamp-aubio-plugins.git] / plugins / Onset.cpp
index 8d91587..4494b07 100644 (file)
@@ -91,27 +91,30 @@ Onset::initialise(size_t channels, size_t stepSize, size_t blockSize)
     m_ibuf = new_fvec(stepSize);
     m_onset = new_fvec(1);
 
+    reset();
+
+    return true;
+}
+
+void
+Onset::reset()
+{
+    if (m_onsetdet) del_aubio_onset(m_onsetdet);
+
     m_onsetdet = new_aubio_onset
         (const_cast<char *>(getAubioNameForOnsetType(m_onsettype)),
-         blockSize,
-         stepSize,
+         m_blockSize,
+         m_stepSize,
          lrintf(m_inputSampleRate));
     
     aubio_onset_set_threshold(m_onsetdet, m_threshold);
     aubio_onset_set_silence(m_onsetdet, m_silence);
     aubio_onset_set_minioi(m_onsetdet, m_minioi);
 
-    m_delay = Vamp::RealTime::frame2RealTime(4 * stepSize,
+    m_delay = Vamp::RealTime::frame2RealTime(4 * m_stepSize,
                                              lrintf(m_inputSampleRate));
 
     m_lastOnset = Vamp::RealTime::zeroTime - m_delay - m_delay;
-
-    return true;
-}
-
-void
-Onset::reset()
-{
 }
 
 size_t