X-Git-Url: http://git.johnwright.org/?p=fmit.git;a=blobdiff_plain;f=libs%2FMusic%2FDummyMonoQuantizer.cpp;fp=libs%2FMusic%2FDummyMonoQuantizer.cpp;h=323ddce88c190f210ecfce417041f8684ea305f2;hp=0000000000000000000000000000000000000000;hb=a8fb82288feb6b258f2c04312f0c36ba8d79b494;hpb=adfba0402927438a1869f1e716bcf0e25574ce1e diff --git a/libs/Music/DummyMonoQuantizer.cpp b/libs/Music/DummyMonoQuantizer.cpp new file mode 100644 index 0000000..323ddce --- /dev/null +++ b/libs/Music/DummyMonoQuantizer.cpp @@ -0,0 +1,72 @@ +// Copyright 2005 "Gilles Degottex" + +// This file is part of "Music" + +// "Music" is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// "Music" is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +#include "MonoQuantizer.h" + +#include +using namespace std; +#include +using namespace Music; +#include "DummyMonoQuantizer.h" + +DummyMonoQuantizer::DummyMonoQuantizer() +{ + m_confidence = 1.0; +} + +void DummyMonoQuantizer::quantize(double freq) +{ +// cerr << "DummyMonoQuantizer::quantize " << freq << endl; + + double current_time = m_time.elapsed(); + + double current_center_freq = h2f(f2h(freq)); + m_avg_freq = freq; + + if(m_current_center_freq==0.0) + { + if(current_center_freq>0.0) + { + m_current_center_freq = current_center_freq; + m_duration.start(); + emit(noteStarted(m_current_center_freq, 0.0)); + } + } + else + { + if(current_center_freq==0.0) + { + m_current_center_freq = current_center_freq; + emit(noteFinished(m_current_center_freq, 0.0)); + } + else if(m_current_center_freq != current_center_freq) + { + emit(noteFinished(m_current_center_freq, 0.0)); + m_current_center_freq = current_center_freq; + m_duration.start(); + emit(noteStarted(m_current_center_freq, 0.0)); + } + } +} + +void DummyMonoQuantizer::reset() +{ + quantize(0.0); + m_avg_freq = 0.0; +}