Mercurial > hg > vamp-aubio-plugins
changeset 37:119e22552925
Implement reset functions (fixes #498)
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Wed, 11 Jul 2012 13:09:15 +0100 |
parents | 5c5deb8393b9 |
children | 76c13f0c40ab |
files | plugins/Notes.cpp plugins/Onset.cpp plugins/Pitch.cpp plugins/Tempo.cpp |
diffstat | 4 files changed, 55 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/Notes.cpp Tue Jul 10 17:29:42 2012 +0100 +++ b/plugins/Notes.cpp Wed Jul 11 13:09:15 2012 +0100 @@ -105,10 +105,21 @@ m_onset = new_fvec(1); m_pitch = new_fvec(1); + reset(); + + return true; +} + +void +Notes::reset() +{ + if (m_onsetdet) del_aubio_onset(m_onsetdet); + if (m_pitchdet) del_aubio_pitch(m_pitchdet); + 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); @@ -117,8 +128,8 @@ m_pitchdet = new_aubio_pitch (const_cast<char *>(getAubioNameForPitchType(m_pitchtype)), - blockSize, - stepSize, + m_blockSize, + m_stepSize, lrintf(m_inputSampleRate)); aubio_pitch_set_unit(m_pitchdet, const_cast<char *>("freq")); @@ -129,13 +140,6 @@ m_currentOnset = Vamp::RealTime::zeroTime; m_haveCurrent = false; m_prevPitch = -1; - - return true; -} - -void -Notes::reset() -{ } size_t
--- a/plugins/Onset.cpp Tue Jul 10 17:29:42 2012 +0100 +++ b/plugins/Onset.cpp Wed Jul 11 13:09:15 2012 +0100 @@ -91,20 +91,7 @@ m_ibuf = new_fvec(stepSize); m_onset = new_fvec(1); - m_onsetdet = new_aubio_onset - (const_cast<char *>(getAubioNameForOnsetType(m_onsettype)), - blockSize, - 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, - lrintf(m_inputSampleRate)); - - m_lastOnset = Vamp::RealTime::zeroTime - m_delay - m_delay; + reset(); return true; } @@ -112,6 +99,22 @@ void Onset::reset() { + if (m_onsetdet) del_aubio_onset(m_onsetdet); + + m_onsetdet = new_aubio_onset + (const_cast<char *>(getAubioNameForOnsetType(m_onsettype)), + 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 * m_stepSize, + lrintf(m_inputSampleRate)); + + m_lastOnset = Vamp::RealTime::zeroTime - m_delay - m_delay; } size_t
--- a/plugins/Pitch.cpp Tue Jul 10 17:29:42 2012 +0100 +++ b/plugins/Pitch.cpp Wed Jul 11 13:09:15 2012 +0100 @@ -100,13 +100,7 @@ m_ibuf = new_fvec(stepSize); m_obuf = new_fvec(1); - m_pitchdet = new_aubio_pitch - (const_cast<char *>(getAubioNameForPitchType(m_pitchtype)), - blockSize, - stepSize, - lrintf(m_inputSampleRate)); - - aubio_pitch_set_unit(m_pitchdet, const_cast<char *>("freq")); + reset(); return true; } @@ -114,6 +108,15 @@ void Pitch::reset() { + if (m_pitchdet) del_aubio_pitch(m_pitchdet); + + m_pitchdet = new_aubio_pitch + (const_cast<char *>(getAubioNameForPitchType(m_pitchtype)), + m_blockSize, + m_stepSize, + lrintf(m_inputSampleRate)); + + aubio_pitch_set_unit(m_pitchdet, const_cast<char *>("freq")); } size_t
--- a/plugins/Tempo.cpp Tue Jul 10 17:29:42 2012 +0100 +++ b/plugins/Tempo.cpp Wed Jul 11 13:09:15 2012 +0100 @@ -94,16 +94,7 @@ m_delay = Vamp::RealTime::frame2RealTime(3 * stepSize, lrintf(m_inputSampleRate)); - m_lastBeat = Vamp::RealTime::zeroTime - m_delay - m_delay; - - m_tempo = new_aubio_tempo - (const_cast<char *>(getAubioNameForOnsetType(m_onsettype)), - blockSize, - stepSize, - lrintf(m_inputSampleRate)); - - aubio_tempo_set_silence(m_tempo, m_silence); - aubio_tempo_set_threshold(m_tempo, m_threshold); + reset(); return true; } @@ -111,6 +102,18 @@ void Tempo::reset() { + if (m_tempo) del_aubio_tempo(m_tempo); + + m_lastBeat = Vamp::RealTime::zeroTime - m_delay - m_delay; + + m_tempo = new_aubio_tempo + (const_cast<char *>(getAubioNameForOnsetType(m_onsettype)), + m_blockSize, + m_stepSize, + lrintf(m_inputSampleRate)); + + aubio_tempo_set_silence(m_tempo, m_silence); + aubio_tempo_set_threshold(m_tempo, m_threshold); } size_t