diff src/ConstantQ.cpp @ 164:1081c73fbbe3

Various changes to make the code compatible with MSVC++ (though we don't provide projects for it yet)
author Chris Cannam <c.cannam@qmul.ac.uk>
date Fri, 08 Aug 2014 10:07:25 +0100
parents b34df30fd7e4
children 5b1a1bbd6e7f
line wrap: on
line diff
--- a/src/ConstantQ.cpp	Thu Aug 07 19:19:21 2014 +0100
+++ b/src/ConstantQ.cpp	Fri Aug 08 10:07:25 2014 +0100
@@ -41,6 +41,8 @@
 #include <iostream>
 #include <stdexcept>
 
+#include <cmath>
+
 using std::vector;
 using std::cerr;
 using std::endl;
@@ -89,7 +91,7 @@
 void
 ConstantQ::initialise()
 {
-    m_octaves = int(ceil(log2(m_maxFrequency / m_minFrequency)));
+    m_octaves = int(ceil(log(m_maxFrequency / m_minFrequency) / log(2)));
 
     if (m_octaves < 1) {
         m_kernel = 0; // incidentally causing isValid() to return false
@@ -198,9 +200,9 @@
     double finalOctLat = latencies[m_octaves-1];
     double finalOctFact = pow(2, m_octaves-1);
     totalLatency =
-        int(round(finalOctLat +
-                  finalOctFact *
-                  ceil((totalLatency - finalOctLat) / finalOctFact)));
+        int(finalOctLat +
+            finalOctFact *
+            ceil((totalLatency - finalOctLat) / finalOctFact) + .5);
 
 #ifdef DEBUG_CQ
     cerr << "total latency = " << totalLatency << endl;
@@ -248,7 +250,7 @@
 #endif
 
         m_buffers.push_back
-            (RealSequence(int(round(octaveLatency)), 0.0));
+            (RealSequence(int(octaveLatency + 0.5), 0.0));
     }
 
     m_fft = new FFTReal(m_p.fftSize);