Merge commit '0.99.2'
[fmit.git] / libs / Music / Note.cpp
1 // Copyright 2007 "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 #include "Note.h"
20
21 void Note::init()
22 {
23         min_err = numeric_limits<float>::max();
24         max_err = -numeric_limits<float>::max();
25         avg_err = 0.0f;
26 }
27 Note::Note(int h)
28         : ht(h)
29 {
30         init();
31 }
32 Note::Note(int h, int num, int den)
33         : ht(h)
34 {
35         init();
36         factor = QString::number(num)+"/"+QString::number(den);
37 }
38 Note::Note(int h, float cents)
39         : ht(h)
40 {
41         init();
42         factor = QString::number(cents);
43 }
44 QString Note::getName() const
45 {
46         return Music::h2n(ht)+factor;
47 }
48 void Note::addAnalysis(float err, float volume)
49 {
50         min_err = (err<min_err)?err:min_err;
51         max_err = (err>max_err)?err:max_err;
52
53         if(!errors.empty())
54                 avg_err *= errors.size();
55
56         errors.push_back(err);
57
58         avg_err += err;
59         avg_err /= errors.size();
60
61         volumes.push_back(volume);
62 }