/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2017 - ROLI Ltd. JUCE is an open source library subject to commercial or open-source licensing. By using JUCE, you agree to the terms of both the JUCE 5 End-User License Agreement and JUCE 5 Privacy Policy (both updated and effective as of the 27th April 2017). End User License Agreement: www.juce.com/juce-5-licence Privacy Policy: www.juce.com/juce-5-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ #include "../DSPDemo.h" //============================================================================== // @@ START_DEMO struct WaveShaperTanhDemo { void prepare (const ProcessSpec&) {} void process (const ProcessContextReplacing& context) { shapers[currentShaperIdx].process (context); } void reset() { for (auto&& shaper : shapers) shaper.reset(); } void updateParameters() { currentShaperIdx = jmin (numElementsInArray (shapers), accuracy.getCurrentSelectedID() - 1); } //============================================================================== WaveShaper shapers[2] { { std::tanh }, { FastMathApproximations::tanh } }; int currentShaperIdx = 0; ChoiceParameter accuracy {{ "No Approximation", "Use fast-math approximation"}, 1, "Accuracy" }; std::vector parameters { &accuracy }; // no params for this demo }; // @@ END_DEMO RegisterDSPDemo waveshaperDemo ("WaveShaperTanh", BinaryData::WaveShaperTanhDemo_cpp);