X-Git-Url: http://git.johnwright.org/?p=fmit.git;a=blobdiff_plain;f=libs%2FMusic%2FLatencyMonoQuantizer.h;fp=libs%2FMusic%2FLatencyMonoQuantizer.h;h=f32f5e83898e41075650caa0d651a29ce5058124;hp=0000000000000000000000000000000000000000;hb=a8fb82288feb6b258f2c04312f0c36ba8d79b494;hpb=adfba0402927438a1869f1e716bcf0e25574ce1e diff --git a/libs/Music/LatencyMonoQuantizer.h b/libs/Music/LatencyMonoQuantizer.h new file mode 100644 index 0000000..f32f5e8 --- /dev/null +++ b/libs/Music/LatencyMonoQuantizer.h @@ -0,0 +1,66 @@ +// 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 + + +#ifndef _LATENCYMONOQUANTIZER_H_ +#define _LATENCYMONOQUANTIZER_H_ + +#include +using namespace std; +#include +#include +#include +using namespace Music; +#include "MonoQuantizer.h" + +class LatencyMonoQuantizer : public MonoQuantizer +{ + QTime m_time; + + //! in millis + float m_latency; + + struct State{ + double m_time; + double m_freq; + double m_confidence; + State(double t, double f, double c=1.0) : m_time(t), m_freq(f), m_confidence(c) {} + }; + deque m_states; + + struct Note{ + int m_dens; + double m_avg_freq; + Note(double f) : m_dens(1), m_avg_freq(f) {} + }; + + QTime m_duration; + + public: + LatencyMonoQuantizer(); + + void setLatency(float latency) {m_latency=latency;} + double getLatency() {return m_latency;} + + virtual void quantize(double freq); + virtual void reset(); + + virtual ~LatencyMonoQuantizer(){} +}; + +#endif // _LATENCYMONOQUANTIZER_H_