# HG changeset patch # User Daniel Schürmann # Date 1558723237 -7200 # Node ID b7e10277a84c752e9b87c7177c673e9e0179e1ec # Parent e7e36ecd7ad2de4d96dde510cf748d4d9cfb7fe4 Calculate key strange during getKeyStrengths() to save CPU time if this is not needed. diff -r e7e36ecd7ad2 -r b7e10277a84c dsp/keydetection/GetKeyMode.cpp --- 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; +} diff -r e7e36ecd7ad2 -r b7e10277a84c dsp/keydetection/GetKeyMode.h --- 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 );