Mercurial > hg > qm-dsp
changeset 460:02cb97d2dee8
Remove now superfluid m_key array
author | Daniel Schürmann <daschuer@mixxx.org> |
---|---|
date | Fri, 24 May 2019 21:06:47 +0200 |
parents | b7e10277a84c |
children | 9414df58fd0e |
files | dsp/keydetection/GetKeyMode.cpp dsp/keydetection/GetKeyMode.h |
diffstat | 2 files changed, 16 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/dsp/keydetection/GetKeyMode.cpp Fri May 24 20:40:37 2019 +0200 +++ b/dsp/keydetection/GetKeyMode.cpp Fri May 24 21:06:47 2019 +0200 @@ -53,7 +53,6 @@ m_MeanHPCP(0), m_MajCorr(0), m_MinCorr(0), - m_Keys(0), m_MedianFilterBuffer(0), m_SortedBuffer(0), m_keyStrengths(0) @@ -104,7 +103,6 @@ m_MajCorr = new double[kBinsPerOctave]; m_MinCorr = new double[kBinsPerOctave]; - m_Keys = new double[2*kBinsPerOctave]; m_MedianFilterBuffer = new int[ m_MedianWinsize ]; memset( m_MedianFilterBuffer, 0, sizeof(int)*m_MedianWinsize); @@ -127,11 +125,9 @@ delete [] m_MeanHPCP; delete [] m_MajCorr; delete [] m_MinCorr; - delete [] m_Keys; delete [] m_MedianFilterBuffer; delete [] m_SortedBuffer; - - delete[] m_keyStrengths; + delete [] m_keyStrengths; } double GetKeyMode::krumCorr(double *pData1, double *pData2, unsigned int length) @@ -223,26 +219,30 @@ MathUtilities::circShift( MinProfile, kBinsPerOctave, 1 ); } - for( k = 0; k < kBinsPerOctave; k++ ) { - m_Keys[k] = m_MajCorr[k]; - m_Keys[k+kBinsPerOctave] = m_MinCorr[k]; - } - /* std::cout << "raw keys: "; - for (int ii = 0; ii < 2*kBinsPerOctave; ++ii) { + for (int ii = 0; ii < kBinsPerOctave; ++ii) { if (ii % (kBinsPerOctave/12) == 0) std::cout << "\n"; - std::cout << m_Keys[ii] << " "; + std::cout << m_MajCorr[ii] << " "; + } + for (int ii = 0; ii < kBinsPerOctave; ++ii) { + if (ii % (kBinsPerOctave/12) == 0) std::cout << "\n"; + std::cout << m_MinCorr[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 + // m_MajCorr[1] is C center 1 / 3 + 1 = 1 + // m_MajCorr[4] is D center 4 / 3 + 1 = 2 // '+ 1' because we number keys 1-24, not 0-23. - key = MathUtilities::getMax( m_Keys, 2* kBinsPerOctave, &dummy ) / 3 + 1; + double maxMaj; + int maxMajBin = MathUtilities::getMax( m_MajCorr, kBinsPerOctave, &maxMaj ); + double maxMin; + int maxMinBin = MathUtilities::getMax( m_MinCorr, kBinsPerOctave, &maxMin ); + int maxBin = (maxMaj > maxMin) ? maxMajBin : (maxMinBin + kBinsPerOctave); + key = maxBin / 3 + 1; +// std::cout << "fractional key pre-sorting: " << (maxBin + 2) / 3.0 << std::endl; // std::cout << "key pre-sorting: " << key << std::endl;