diff chromamethods.cpp @ 44:109d3b2c7105 matthiasm-plugin

regarding the chord estimation:\n * tweaked chord templates\n * that means that the original method also changed
author matthiasm
date Mon, 25 Oct 2010 01:58:37 +0900
parents d6bb9b43ac1c
children 6e76c7710fa1
line wrap: on
line diff
--- a/chromamethods.cpp	Mon Oct 25 00:52:39 2010 +0900
+++ b/chromamethods.cpp	Mon Oct 25 01:58:37 2010 +0900
@@ -365,18 +365,37 @@
         for (unsigned kSemitone = 0; kSemitone < 12; kSemitone++) loadedChordDict.push_back(1.0);
 	
         // normalise
-        float sum = 0;
-        for (int i = 0; i < loadedChordDict.size(); i++) {
-            sum += pow(loadedChordDict[i],2);
-            if (i % 24 == 23) {
-                float invertedsum = 1.0/sqrt(sum);
-                for (int k = 0; k < 24; k++) {
-                    loadedChordDict[i-k] *= invertedsum; 
-                }
-                sum = 0;
+        // float sum = 0;
+        // for (int i = 0; i < loadedChordDict.size(); i++) {
+        //     sum += pow(loadedChordDict[i],2);
+        //     if (i % 24 == 23) {
+        //         float invertedsum = 1.0/sqrt(sum);
+        //         for (int k = 0; k < 24; k++) {
+        //             loadedChordDict[i-k] *= invertedsum; 
+        //         }
+        //         sum = 0;
+        //     }
+        //      
+        // }
+        
+        
+        for (int iChord = 0; iChord < loadedChordDict.size()/24; iChord++) {
+            float sum = 0;
+            float stand = 0;
+            for (int iST = 0; iST < 24; ++iST) {
+                sum += loadedChordDict[24 * iChord + iST];
             }
-		
+            for (int iST = 0; iST < 24; ++iST) {
+                loadedChordDict[24 * iChord + iST] -= sum/24;
+                stand += pow(loadedChordDict[24 * iChord + iST],2)/24;
+            }
+            stand = sqrt(stand);
+            for (int iST = 0; iST < 24; ++iST) {
+                loadedChordDict[24 * iChord + iST] /= stand;            
+            }
+            
         }
+        
 	
 
         nChord = 0;