changeset 100:d1398182a072 matthiasm-plugin

s parameter setting now has an effect
author Matthias Mauch <mail@matthiasmauch.net>
date Tue, 07 Dec 2010 10:56:55 +0900
parents daee3c60c4f9
children 109745cd67c3 c7eee95a9487
files NNLSBase.cpp NNLSChroma.cpp
diffstat 2 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/NNLSBase.cpp	Fri Dec 03 19:10:09 2010 +0900
+++ b/NNLSBase.cpp	Tue Dec 07 10:56:55 2010 +0900
@@ -57,8 +57,7 @@
     if (debug_on) cerr << "--> NNLSBase" << endl;
     // make the *note* dictionary matrix
     m_dict = new float[nNote * 84];
-    for (unsigned i = 0; i < nNote * 84; ++i) m_dict[i] = 0.0;
-    dictionaryMatrix(m_dict, 0.7);
+    for (unsigned i = 0; i < nNote * 84; ++i) m_dict[i] = 0.0;    
 }
 
 
@@ -354,6 +353,8 @@
         cerr << "--> initialise";
     }
 	
+	dictionaryMatrix(m_dict, m_s);
+	
 	// make things for tuning estimation
 	for (int iBPS = 0; iBPS < nBPS; ++iBPS) {
         sinvalues.push_back(sin(2*M_PI*(iBPS*1.0/nBPS)));
--- a/NNLSChroma.cpp	Fri Dec 03 19:10:09 2010 +0900
+++ b/NNLSChroma.cpp	Tue Dec 07 10:56:55 2010 +0900
@@ -226,9 +226,18 @@
 NNLSChroma::FeatureSet
 NNLSChroma::getRemainingFeatures()
 {
+    static const int nConsonance = 24;
+    float consonancepattern[nConsonance] = {0,-1,-1,1,1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1,-1};
+    float consonancemean = 0;
+    for (int i = 0; i< nConsonance; ++i) {
+        consonancemean += consonancepattern[i]/nConsonance;
+    }
     
-    float consonancepattern[24] = {0,-1,-1,1,1,1,-1,1,1,1,-1,-1,1,-1,-1,1,1,1,-1,1,1,1,-1,-1};
-    // for (int i = 0; i< 12; ++i) cerr << consonancepattern[i]<< endl; 
+    cerr << "consonancemean = " << consonancemean << endl;
+    
+    for (int i = 0; i< nConsonance; ++i) {
+        consonancepattern[i] -= consonancemean;
+    }
     if (debug_on) cerr << "--> getRemainingFeatures" << endl;
     FeatureSet fsOut;
     if (m_logSpectrum.size() == 0) return fsOut;
@@ -430,12 +439,12 @@
         
         consonance.values.push_back(0);
         for (int iSemitone = 0; iSemitone < 84-24; ++iSemitone) {            
-            notesum += f3.values[iSemitone] * f3.values[iSemitone];
+            notesum += f3.values[iSemitone] * f3.values[iSemitone] * treblewindow[iSemitone] * treblewindow[iSemitone];
             float tempconsonance = 0;
             for (int jSemitone = 1; jSemitone < 24; ++jSemitone) {
-                tempconsonance += f3.values[iSemitone+jSemitone] * (consonancepattern[jSemitone]);
+                tempconsonance += f3.values[iSemitone+jSemitone] * (consonancepattern[jSemitone]) * treblewindow[iSemitone+jSemitone];
             }
-            consonance.values[0] += (f3.values[iSemitone] * tempconsonance);
+            consonance.values[0] += (f3.values[iSemitone] * tempconsonance * treblewindow[iSemitone]);
         }
         if (notesum > 0) consonance.values[0] /= notesum;