Import fmit upstream version 0.97.6
[fmit.git] / src / DummyMonoQuantizer.cpp
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 #include "MonoQuantizer.h"
21
22 #include <iostream>
23 using namespace std;
24 #include <Music/Music.h>
25 using namespace Music;
26 #include "DummyMonoQuantizer.h"
27
28 DummyMonoQuantizer::DummyMonoQuantizer()
29 {
30         m_confidence = 1.0;
31 }
32
33 void DummyMonoQuantizer::quantize(double freq)
34 {
35 //      cerr << "DummyMonoQuantizer::quantize " << freq << endl;
36
37         double current_time = m_time.elapsed();
38
39         double current_center_freq = h2f(f2h(freq));
40         m_avg_freq = freq;
41
42         if(m_current_center_freq==0.0)
43         {
44                 if(current_center_freq>0.0)
45                 {
46                         m_current_center_freq = current_center_freq;
47                         m_duration.start();
48                         emit(noteStarted(m_current_center_freq, 0.0));
49                 }
50         }
51         else
52         {
53                 if(current_center_freq==0.0)
54                 {
55                         m_current_center_freq = current_center_freq;
56                         emit(noteFinished(m_current_center_freq, 0.0));
57                 }
58                 else if(m_current_center_freq != current_center_freq)
59                 {
60                         emit(noteFinished(m_current_center_freq, 0.0));
61                         m_current_center_freq = current_center_freq;
62                         m_duration.start();
63                         emit(noteStarted(m_current_center_freq, 0.0));
64                 }
65         }
66 }
67
68 void DummyMonoQuantizer::reset()
69 {
70         quantize(0.0);
71         m_avg_freq = 0.0;
72 }