Mercurial > hg > qm-dsp
changeset 459:b7e10277a84c
Calculate key strange during getKeyStrengths() to save CPU time if this is not needed.
author | Daniel Schürmann <daschuer@mixxx.org> |
---|---|
date | Fri, 24 May 2019 20:40:37 +0200 |
parents | e7e36ecd7ad2 |
children | 02cb97d2dee8 |
files | dsp/keydetection/GetKeyMode.cpp dsp/keydetection/GetKeyMode.h |
diffstat | 2 files changed, 39 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/dsp/keydetection/GetKeyMode.cpp Fri May 24 20:31:32 2019 +0200 +++ b/dsp/keydetection/GetKeyMode.cpp Fri May 24 20:40:37 2019 +0200 @@ -228,20 +228,6 @@ m_Keys[k+kBinsPerOctave] = m_MinCorr[k]; } - for (k = 0; k < 24; ++k) { - m_keyStrengths[k] = 0; - } - - for( k = 0; k < kBinsPerOctave*2; k++ ) { - int idx = k / (kBinsPerOctave/12); - int rem = k % (kBinsPerOctave/12); - if (rem == 0 || m_Keys[k] > m_keyStrengths[idx]) { - m_keyStrengths[idx] = m_Keys[k]; - } - -// m_keyStrengths[k/(kBinsPerOctave/12)] += m_Keys[k]; - } - /* std::cout << "raw keys: "; for (int ii = 0; ii < 2*kBinsPerOctave; ++ii) { @@ -249,14 +235,8 @@ std::cout << m_Keys[ii] << " "; } std::cout << std::endl; +*/ - std::cout << "key strengths: "; - for (int ii = 0; ii < 24; ++ii) { - if (ii % 6 == 0) std::cout << "\n"; - std::cout << m_keyStrengths[ii] << " "; - } - std::cout << std::endl; -*/ double dummy; // m_Keys[1] is C center 1 / 3 + 1 = 1 // m_Keys[4] is D center 4 / 3 + 1 = 2 @@ -324,3 +304,40 @@ { return kBinsPerOctave; } + +double* GetKeyMode::getKeyStrengths() { + unsigned int k; + + for (k = 0; k < 24; ++k) { + m_keyStrengths[k] = 0; + } + + for( k = 0; k < kBinsPerOctave; k++ ) + { + int idx = k / (kBinsPerOctave/12); + int rem = k % (kBinsPerOctave/12); + if (rem == 0 || m_MajCorr[k] > m_keyStrengths[idx]) { + m_keyStrengths[idx] = m_MajCorr[k]; + } + } + + for( k = 0; k < kBinsPerOctave; k++ ) + { + int idx = (k + kBinsPerOctave) / (kBinsPerOctave/12); + int rem = k % (kBinsPerOctave/12); + if (rem == 0 || m_MinCorr[k] > m_keyStrengths[idx]) { + m_keyStrengths[idx] = m_MinCorr[k]; + } + } + +/* + std::cout << "key strengths: "; + for (int ii = 0; ii < 24; ++ii) { + if (ii % 6 == 0) std::cout << "\n"; + std::cout << m_keyStrengths[ii] << " "; + } + std::cout << std::endl; +*/ + + return m_keyStrengths; +}
--- a/dsp/keydetection/GetKeyMode.h Fri May 24 20:31:32 2019 +0200 +++ b/dsp/keydetection/GetKeyMode.h Fri May 24 20:40:37 2019 +0200 @@ -37,7 +37,7 @@ double* getMeanHPCP() { return m_MeanHPCP; } - double *getKeyStrengths() { return m_keyStrengths; } + double* getKeyStrengths(); bool isModeMinor( int key );