Mercurial > hg > pyin
view test/TestYinUtil.cpp @ 137:109c3a2ad930 vamp-fft-revision
Make use of new Vamp FFT interface. This reduces the runtime of the regression test from 5.7 to 2.2 seconds on this machine, but it does need the right version of the SDK, which is currently only available in the vampipe branch.
author | Chris Cannam |
---|---|
date | Fri, 19 Aug 2016 13:26:40 +0100 |
parents | 99bac62ee2da |
children |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ #include "YinUtil.h" #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MAIN #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_SUITE(TestYin) BOOST_AUTO_TEST_CASE(difference1) { // difference always needs to be non-negative double in[] = { 1, -1, 1, -1, 1, -1, 1, -1 }; double yinBuffer[4]; YinUtil::difference(in, yinBuffer, 4); BOOST_CHECK(yinBuffer[0] >= 0); BOOST_CHECK(yinBuffer[1] >= 0); BOOST_CHECK(yinBuffer[2] >= 0); BOOST_CHECK(yinBuffer[3] >= 0); } // BOOST_AUTO_TEST_CASE(difference2) // { // // difference for fast sinusoid // double in[] = { 1, -1, 1, -1, 1, -1, 1, -1 }; // double yinBuffer[4]; // // Yin y(8, 256); // // y.difference(in, yinBuffer); // // BOOST_CHECK_EQUAL(yinBuffer[0], 0); // BOOST_CHECK_EQUAL(yinBuffer[1], 16); // BOOST_CHECK_EQUAL(yinBuffer[2], 0); // BOOST_CHECK_EQUAL(yinBuffer[3], 16); // } // // BOOST_AUTO_TEST_CASE(difference3) // { // // difference for contaminated fast sinusoid // double in[] = { 2, -1, 1, -1, 1, -1, 1, -1 }; // double yinBuffer[4]; // // Yin y(8, 256); // // y.difference(in, yinBuffer); // // BOOST_CHECK_EQUAL(yinBuffer[0], 0); // BOOST_CHECK_EQUAL(yinBuffer[1], 21); // BOOST_CHECK_EQUAL(yinBuffer[2], 1); // BOOST_CHECK_EQUAL(yinBuffer[3], 21); // } // // BOOST_AUTO_TEST_CASE(difference4) // { // // // double in[2048]; // double yinBuffer[1024]; // for (size_t i = 0; i < 2048; i = i + 2) { // in[i] = 1; // in[i+1] = -1; // } // Yin y(2048, 44100); // // y.difference(in, yinBuffer); // // BOOST_CHECK(yinBuffer[0] >= 0); // BOOST_CHECK(yinBuffer[1] >= 0); // } // // BOOST_AUTO_TEST_CASE(cumulativeDifference1) // { // // test against matlab implementation // double yinBuffer[] = {0, 21, 1, 21}; // // Yin y(8, 256); // // y.cumulativeDifference(yinBuffer); // // BOOST_CHECK_EQUAL(yinBuffer[0], 1); // BOOST_CHECK_EQUAL(yinBuffer[1], 1); // this is just chance! // BOOST_CHECK(yinBuffer[2] >= 0.0909 && yinBuffer[2] < 0.091); // BOOST_CHECK(yinBuffer[3] >= 1.4651 && yinBuffer[3] < 1.466); // // } BOOST_AUTO_TEST_SUITE_END()