#include "HilbertFilterDesigner.h" #include "AudioMath.h" #include "BiquadParams.h" #include "BiquadFilter.h" #include "BiquadState.h" #include #include #include // test that we can hook it up template void test0() { BiquadParams paramsSin; BiquadParams paramsCos; HilbertFilterDesigner::design(44100, paramsSin, paramsCos); } // test that filter designer does something (more than just generate zero template void test1() { BiquadParams paramsSin; BiquadParams paramsCos; HilbertFilterDesigner::design(44100, paramsSin, paramsCos); const double delta = .00001; for (int i = 0; i < 3; ++i) { assert(!AudioMath::closeTo(0, (paramsSin.A1(i)), delta)); assert(!AudioMath::closeTo(0, (paramsSin.A2(i)), delta)); assert(!AudioMath::closeTo(0, (paramsSin.B0(i)), delta)); assert(!AudioMath::closeTo(0, (paramsSin.B1(i)), delta)); assert(!AudioMath::closeTo(0, (paramsSin.B2(i)), delta)); assert(!AudioMath::closeTo(0, (paramsCos.A1(i)), delta)); assert(!AudioMath::closeTo(0, (paramsCos.A2(i)), delta)); assert(!AudioMath::closeTo(0, (paramsCos.B0(i)), delta)); assert(!AudioMath::closeTo(0, (paramsCos.B1(i)), delta)); assert(!AudioMath::closeTo(0, (paramsCos.B2(i)), delta)); } } // see if it passes audio template void test2() { BiquadParams paramsSin; BiquadParams paramsCos; BiquadState stateSin; BiquadState stateCos; HilbertFilterDesigner::design(44100, paramsSin, paramsCos); // const T hilbertSin = BiquadFilter::run(input, hilbertFilterStateSin, hilbertFilterParamsSin); T input = 1; // T t = BiquadFilter::run(input, state, paramsSin); for (int i = 0; i < 10; ++i) { T ts = BiquadFilter::run(input, stateSin, paramsSin); T tc = BiquadFilter::run(input, stateCos, paramsCos); assert(!AudioMath::closeTo(ts, 0, .00001)); assert(!AudioMath::closeTo(tc, 0, .00001)); } } template void test() { test0(); test1(); test2(); } void testHilbert() { test(); test(); }