comparison dsp/tonal/TonalEstimator.cpp @ 505:930b5b0f707d

Merge branch 'codestyle-and-tidy'
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 05 Jun 2019 12:55:15 +0100
parents 7992d0923626
children
comparison
equal deleted inserted replaced
471:e3335cb213da 505:930b5b0f707d
16 #include "TonalEstimator.h" 16 #include "TonalEstimator.h"
17 17
18 #include <cmath> 18 #include <cmath>
19 #include <iostream> 19 #include <iostream>
20 20
21 #ifndef PI
22 #define PI (3.14159265358979232846)
23 #endif
24
25 TonalEstimator::TonalEstimator() 21 TonalEstimator::TonalEstimator()
26 { 22 {
27 m_Basis.resize(6); 23 m_Basis.resize(6);
28 24
29 int i = 0; 25 int i = 0;
30 26
31 27
32 // circle of fifths 28 // circle of fifths
33 m_Basis[i].resize(12); 29 m_Basis[i].resize(12);
34 for (int iP = 0; iP < 12; iP++) 30 for (int iP = 0; iP < 12; iP++) {
35 { 31 m_Basis[i][iP] = std::sin( (7.0 / 6.0) * iP * M_PI);
36 m_Basis[i][iP] = std::sin( (7.0 / 6.0) * iP * PI); 32 }
37 } 33
38 34 i++;
39 i++;
40 35
41 m_Basis[i].resize(12); 36 m_Basis[i].resize(12);
42 for (int iP = 0; iP < 12; iP++) 37 for (int iP = 0; iP < 12; iP++) {
43 { 38 m_Basis[i][iP] = std::cos( (7.0 / 6.0) * iP * M_PI);
44 m_Basis[i][iP] = std::cos( (7.0 / 6.0) * iP * PI); 39 }
45 } 40
46 41 i++;
47 i++; 42
48 43
49 44 // circle of major thirds
50 // circle of major thirds 45 m_Basis[i].resize(12);
51 m_Basis[i].resize(12); 46 for (int iP = 0; iP < 12; iP++) {
52 for (int iP = 0; iP < 12; iP++) 47 m_Basis[i][iP] = 0.6 * std::sin( (2.0 / 3.0) * iP * M_PI);
53 { 48 }
54 m_Basis[i][iP] = 0.6 * std::sin( (2.0 / 3.0) * iP * PI); 49
55 } 50 i++;
56
57 i++;
58 51
59 m_Basis[i].resize(12); 52 m_Basis[i].resize(12);
60 for (int iP = 0; iP < 12; iP++) 53 for (int iP = 0; iP < 12; iP++) {
61 { 54 m_Basis[i][iP] = 0.6 * std::cos( (2.0 / 3.0) * iP * M_PI);
62 m_Basis[i][iP] = 0.6 * std::cos( (2.0 / 3.0) * iP * PI); 55 }
63 }
64 56
65 i++; 57 i++;
66 58
67 59
68 // circle of minor thirds 60 // circle of minor thirds
69 m_Basis[i].resize(12); 61 m_Basis[i].resize(12);
70 for (int iP = 0; iP < 12; iP++) 62 for (int iP = 0; iP < 12; iP++) {
71 { 63 m_Basis[i][iP] = 1.1 * std::sin( (3.0 / 2.0) * iP * M_PI);
72 m_Basis[i][iP] = 1.1 * std::sin( (3.0 / 2.0) * iP * PI); 64 }
73 } 65
74 66 i++;
75 i++;
76 67
77 m_Basis[i].resize(12); 68 m_Basis[i].resize(12);
78 for (int iP = 0; iP < 12; iP++) 69 for (int iP = 0; iP < 12; iP++) {
79 { 70 m_Basis[i][iP] = 1.1 * std::cos( (3.0 / 2.0) * iP * M_PI);
80 m_Basis[i][iP] = 1.1 * std::cos( (3.0 / 2.0) * iP * PI); 71 }
81 }
82 72
83 } 73 }
84 74
85 TonalEstimator::~TonalEstimator() 75 TonalEstimator::~TonalEstimator()
86 { 76 {
87 } 77 }
88 78
89 TCSVector TonalEstimator::transform2TCS(const ChromaVector& rVector) 79 TCSVector TonalEstimator::transform2TCS(const ChromaVector& rVector)
90 { 80 {
91 TCSVector vaRetVal; 81 TCSVector vaRetVal;
92 vaRetVal.resize(6, 0.0); 82 vaRetVal.resize(6, 0.0);
93 83
94 for (int i = 0; i < 6; i++) 84 for (int i = 0; i < 6; i++) {
95 { 85 for (int iP = 0; iP < 12; iP++) {
96 for (int iP = 0; iP < 12; iP++) 86 vaRetVal[i] += m_Basis[i][iP] * rVector[iP];
97 { 87 }
98 vaRetVal[i] += m_Basis[i][iP] * rVector[iP]; 88 }
99 } 89
100 } 90 return vaRetVal;
101
102 return vaRetVal;
103 } 91 }