1 // Copyright 2005 "Gilles Degottex" 2 3 // This file is part of "Music" 4 5 // "Music" is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU Lesser General Public License as published by 7 // the Free Software Foundation; either version 2.1 of the License, or 8 // (at your option) any later version. 9 // 10 // "Music" is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public License 16 // along with this program; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 19 20 #ifndef _LATENCYMONOQUANTIZER_H_ 21 #define _LATENCYMONOQUANTIZER_H_ 22 23 #include <deque> 24 using namespace std; 25 #include <qobject.h> 26 #include <qdatetime.h> 27 #include <Music/Music.h> 28 using namespace Music; 29 #include "MonoQuantizer.h" 30 31 class LatencyMonoQuantizer : public MonoQuantizer 32 { 33 QTime m_time; 34 35 //! in millis 36 float m_latency; 37 38 struct State{ 39 double m_time; 40 double m_freq; 41 double m_confidence; m_timeState42 State(double t, double f, double c=1.0) : m_time(t), m_freq(f), m_confidence(c) {} 43 }; 44 deque<State> m_states; 45 46 struct Note{ 47 int m_dens; 48 double m_avg_freq; NoteNote49 Note(double f) : m_dens(1), m_avg_freq(f) {} 50 }; 51 52 QTime m_duration; 53 54 public: 55 LatencyMonoQuantizer(); 56 setLatency(float latency)57 void setLatency(float latency) {m_latency=latency;} getLatency()58 double getLatency() {return m_latency;} 59 60 virtual void quantize(double freq); 61 virtual void reset(); 62 ~LatencyMonoQuantizer()63 virtual ~LatencyMonoQuantizer(){} 64 }; 65 66 #endif // _LATENCYMONOQUANTIZER_H_ 67