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 );