diff Matcher.cpp @ 16:4c8526c5bf58

Implement features outputs
author Chris Cannam
date Fri, 10 Oct 2014 13:16:54 +0100
parents a82276091bbd
children 47f98349aa17
line wrap: on
line diff
--- a/Matcher.cpp	Fri Oct 10 12:55:05 2014 +0100
+++ b/Matcher.cpp	Fri Oct 10 13:16:54 2014 +0100
@@ -19,6 +19,7 @@
 #include <iostream>
 
 #include <cstdlib>
+#include <cassert>
 
 bool Matcher::silent = true;
 
@@ -84,6 +85,8 @@
 
     initialised = true;
 
+    freqMapSize = getFeatureSize(params);
+
     makeFreqMap();
 
     initVector<double>(prevFrame, freqMapSize);
@@ -136,6 +139,16 @@
     }
 } // makeFreqMap()
 
+int
+Matcher::getFeatureSize(Parameters params)
+{
+    if (params.useChromaFrequencyMap) {
+        return 13;
+    } else {
+        return 84;
+    }
+}
+
 void
 Matcher::makeStandardFrequencyMap()
 {
@@ -151,11 +164,10 @@
     }
     while (i <= params.fftSize/2) {
         double midi = log(i*binWidth/440.0) / log(2.0) * 12 + 69;
-        if (midi > 127)
-            midi = 127;
+        if (midi > 127) midi = 127;
         freqMap[i++] = crossoverBin + lrint(midi) - crossoverMidi;
     }
-    freqMapSize = freqMap[i-1] + 1;
+    assert(freqMapSize == freqMap[i-1] + 1);
     if (!silent) {
         cerr << "Standard map size: " << freqMapSize 
              << ";  Crossover at: " << crossoverBin << endl;
@@ -177,7 +189,6 @@
         double midi = log(i*binWidth/440.0) / log(2.0) * 12 + 69;
         freqMap[i++] = (lrint(midi)) % 12 + 1;
     }
-    freqMapSize = 13;
     if (!silent) {
         cerr << "Chroma map size: " << freqMapSize 
              << ";  Crossover at: " << crossoverBin << endl;