Mercurial > hg > qm-dsp
comparison dsp/tonal/TonalEstimator.h @ 482:cbe668c7d724
Untabify, indent, tidy
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Fri, 31 May 2019 11:02:28 +0100 |
parents | 7e8d1f26b098 |
children | 701233f8ed41 |
comparison
equal
deleted
inserted
replaced
481:de5f557a270f | 482:cbe668c7d724 |
---|---|
23 #include <iostream> | 23 #include <iostream> |
24 | 24 |
25 class ChromaVector : public std::valarray<double> | 25 class ChromaVector : public std::valarray<double> |
26 { | 26 { |
27 public: | 27 public: |
28 ChromaVector(size_t uSize = 12) : std::valarray<double>() | 28 ChromaVector(size_t uSize = 12) : std::valarray<double>() { |
29 { resize(uSize, 0.0f); } | 29 resize(uSize, 0.0f); |
30 | 30 } |
31 virtual ~ChromaVector() {}; | 31 |
32 | 32 virtual ~ChromaVector() {}; |
33 void printDebug() | 33 |
34 { | 34 void printDebug() { |
35 for (int i = 0; i < int(size()); i++) | 35 for (int i = 0; i < int(size()); i++) { |
36 { | 36 std::cout << (*this)[i] << ";"; |
37 std::cout << (*this)[i] << ";"; | 37 } |
38 } | 38 std::cout << std::endl; |
39 | 39 } |
40 std::cout << std::endl; | 40 |
41 } | 41 void normalizeL1() { |
42 | 42 // normalize the chroma vector (L1 norm) |
43 void normalizeL1() | 43 double dSum = 0.0; |
44 { | 44 |
45 // normalize the chroma vector (L1 norm) | 45 for (size_t i = 0; i < 12; (dSum += std::abs((*this)[i++]))) ; |
46 double dSum = 0.0; | 46 for (size_t i = 0; i < 12; dSum > 0.0000001?((*this)[i] /= dSum):(*this)[i]=0.0, i++) ; |
47 | 47 } |
48 for (size_t i = 0; i < 12; (dSum += std::abs((*this)[i++]))) ; | |
49 for (size_t i = 0; i < 12; dSum > 0.0000001?((*this)[i] /= dSum):(*this)[i]=0.0, i++) ; | |
50 | 48 |
51 } | 49 void clear() { |
52 | |
53 void clear() | |
54 { | |
55 for (size_t i = 0; i < 12; ++i) (*this)[i] = 0.0; | 50 for (size_t i = 0; i < 12; ++i) (*this)[i] = 0.0; |
56 } | 51 } |
57 | |
58 | |
59 }; | 52 }; |
60 | 53 |
61 class TCSVector : public std::valarray<double> | 54 class TCSVector : public std::valarray<double> |
62 { | 55 { |
63 public: | 56 public: |
64 TCSVector() : std::valarray<double>() | 57 TCSVector() : std::valarray<double>() { |
65 { resize(6, 0.0f); } | 58 resize(6, 0.0f); |
66 | 59 } |
67 virtual ~TCSVector() {}; | 60 |
61 virtual ~TCSVector() {}; | |
68 | 62 |
69 void printDebug() | 63 void printDebug() { |
70 { | 64 for (int i = 0; i < int(size()); i++) { |
71 for (int i = 0; i < int(size()); i++) | 65 std::cout << (*this)[i] << ";"; |
72 { | 66 } |
73 std::cout << (*this)[i] << ";"; | 67 std::cout << std::endl; |
74 } | 68 } |
75 | 69 |
76 std::cout << std::endl; | 70 double magnitude() const { |
77 } | 71 double dMag = 0.0; |
78 | 72 |
79 double magnitude() const | 73 for (size_t i = 0; i < 6; i++) { |
80 { | 74 dMag += std::pow((*this)[i], 2.0); |
81 double dMag = 0.0; | 75 } |
82 | 76 |
83 for (size_t i = 0; i < 6; i++) | 77 return std::sqrt(dMag); |
84 { | 78 } |
85 dMag += std::pow((*this)[i], 2.0); | |
86 } | |
87 | |
88 return std::sqrt(dMag); | |
89 } | |
90 | |
91 }; | 79 }; |
92 | |
93 | |
94 | 80 |
95 class TonalEstimator | 81 class TonalEstimator |
96 { | 82 { |
97 public: | 83 public: |
98 TonalEstimator(); | 84 TonalEstimator(); |
99 virtual ~TonalEstimator(); | 85 virtual ~TonalEstimator(); |
100 TCSVector transform2TCS(const ChromaVector& rVector); | 86 TCSVector transform2TCS(const ChromaVector& rVector); |
87 | |
101 protected: | 88 protected: |
102 std::valarray< std::valarray<double> > m_Basis; | 89 std::valarray< std::valarray<double> > m_Basis; |
103 }; | 90 }; |
104 | 91 |
105 #endif // _TONALESTIMATOR_ | 92 #endif // _TONALESTIMATOR_ |