#include #include #include #include #include "HilbertFilterDesigner.h" #include "AudioMath.h" #include "BiquadParams.h" #include "BiquadFilter.h" #include "BiquadState.h" #include "FrequencyShifter.h" #include "TestComposite.h" using Shifter = FrequencyShifter; #include "MeasureTime.h" static void test1() { double d = .1; srand(57); const double scale = 1.0 / RAND_MAX; MeasureTime::run("test1 null", [&d, scale]() { return TestBuffers::get(); }, 1); MeasureTime::run("test1 sin", []() { float x = std::sin(TestBuffers::get()); return x; }, 1); MeasureTime::run("test1 sin double", []() { float x = std::sin(TestBuffers::get()); return x; }, 1); MeasureTime::run("test1 sinx2", []() { float x = std::sin(TestBuffers::get()); x = std::sin(x); return x; }, 1); MeasureTime::run("mult", []() { float x = TestBuffers::get(); float y = TestBuffers::get(); return x * y; }, 1); MeasureTime::run("div", []() { float x = TestBuffers::get(); float y = TestBuffers::get(); return x / y; }, 1); } template static void testHilbert() { BiquadParams paramsSin; BiquadParams paramsCos; BiquadState state; HilbertFilterDesigner::design(44100, paramsSin, paramsCos); MeasureTime::run("hilbert", [&state, ¶msSin]() { T d = BiquadFilter::run(TestBuffers::get(), state, paramsSin); return d; }, 1); } void testShifter() { Shifter fs; fs.setSampleRate(44100); fs.init(); fs.inputs[Shifter::AUDIO_INPUT].value = 0; MeasureTime::run("shifter", [&fs]() { fs.inputs[Shifter::AUDIO_INPUT].value = TestBuffers::get(); fs.step(); return fs.outputs[Shifter::SIN_OUTPUT].value; }, 1); } void perfTest() { test1(); testHilbert(); testHilbert(); testShifter(); }