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 _MONOQUANTIZER_H_ 21 #define _MONOQUANTIZER_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 30 class MonoQuantizer : public QObject 31 { 32 Q_OBJECT 33 34 protected: 35 double m_min_confidence; 36 37 double m_confidence; 38 double m_current_center_freq; // nearest semi-tone 39 double m_avg_freq; // precise frequency 40 41 public: 42 MonoQuantizer(); 43 getMinConfidence()44 double getMinConfidence() {return m_min_confidence;} setMinConfidence(float min_confidence)45 void setMinConfidence(float min_confidence) {m_min_confidence=min_confidence;} getConfidence()46 double getConfidence() {return m_confidence;} 47 // int getMinStoredRecon() {return m_min_stored_recon;} isPlaying()48 bool isPlaying() {return m_current_center_freq>0.0;} getCenterFrequency()49 double getCenterFrequency() {return m_current_center_freq;} getAverageFrequency()50 double getAverageFrequency() {return m_avg_freq;} 51 52 virtual void quantize(double freq)=0; 53 virtual void reset()=0; 54 55 virtual ~MonoQuantizer(); 56 57 signals: 58 void noteStarted(double freq, double dt); 59 void noteFinished(double freq, double dt); 60 // void notePlayed(double freq, double duration, double dt); 61 62 // public slots: 63 }; 64 65 #endif // _MONOQUANTIZER_H_ 66