# HG changeset patch # User Chris Cannam # Date 1381907783 -3600 # Node ID b21e97d570be97b8dc0710bc7e4bcb59695aff3f # Parent a4aa37f7af283112d7b3e005b4f4a941925c299d Fixes to tests diff -r a4aa37f7af28 -r b21e97d570be dsp/rateconversion/TestResampler.cpp --- a/dsp/rateconversion/TestResampler.cpp Tue Oct 15 18:27:19 2013 +0100 +++ b/dsp/rateconversion/TestResampler.cpp Wed Oct 16 08:16:23 2013 +0100 @@ -151,15 +151,16 @@ } vector -squareWave(int rate, int freq, int n) +squareWave(int rate, double freq, int n) { //!!! todo: hoist, test vector v(n, 0.0); for (int h = 0; h < (rate/4)/freq; ++h) { double m = h * 2 + 1; - double scale = 1 / m; + double scale = 1.0 / m; for (int i = 0; i < n; ++i) { - v[i] += scale * sin(i * 2 * M_PI * freq / rate); + double s = scale * sin((i * 2.0 * M_PI * m * freq) / rate); + v[i] += s; } } return v; @@ -190,14 +191,33 @@ vector inSpectrum(inrate, 0.0); FFTReal(inrate).forwardMagnitude(square.data(), inSpectrum.data()); + for (int i = 0; i < inSpectrum.size(); ++i) { + inSpectrum[i] /= inrate; + } vector outSpectrum(outrate, 0.0); FFTReal(outrate).forwardMagnitude(maybeSquare.data(), outSpectrum.data()); + for (int i = 0; i < outSpectrum.size(); ++i) { + outSpectrum[i] /= outrate; + } // Don't compare bins any higher than 99% of Nyquist freq of lower sr int lengthOfInterest = (inrate < outrate ? inrate : outrate) / 2; lengthOfInterest = lengthOfInterest - (lengthOfInterest / 100); +/* + std::cerr << "inSpectrum:" << std::endl; + for (int i = 0; i < lengthOfInterest; ++i) { + if (i % 5 == 0) std::cerr << std::endl << i << ": "; + std::cerr << inSpectrum[i] << " "; + } + std::cerr << "\noutSpectrum:" << std::endl; + for (int i = 0; i < lengthOfInterest; ++i) { + if (i % 5 == 0) std::cerr << std::endl << i << ": "; + std::cerr << outSpectrum[i] << " "; + } + std::cerr << std::endl; +*/ for (int i = 0; i < lengthOfInterest; ++i) { BOOST_CHECK_SMALL(inSpectrum[i] - outSpectrum[i], 1e-7); }