diff --git a/plugins/community/repos/VultModules/LICENSE.txt b/plugins/community/repos/VultModules/LICENSE.txt
new file mode 100644
index 00000000..0b8a131c
--- /dev/null
+++ b/plugins/community/repos/VultModules/LICENSE.txt
@@ -0,0 +1,12 @@
+Based on the VCVRack example provided by Andrew Belt
+
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/Makefile b/plugins/community/repos/VultModules/Makefile
new file mode 100644
index 00000000..1e027fc7
--- /dev/null
+++ b/plugins/community/repos/VultModules/Makefile
@@ -0,0 +1,11 @@
+
+SOURCES = $(wildcard src/*.cpp) $(wildcard src/*.c)
+
+include ../../plugin.mk
+
+
+dist: all
+ mkdir -p dist/VultModules
+ cp LICENSE* dist/VultModules/
+ cp $(TARGET) dist/VultModules/
+ cp -R res dist/VultModules/
diff --git a/plugins/community/repos/VultModules/README.md b/plugins/community/repos/VultModules/README.md
new file mode 100644
index 00000000..9ba83e27
--- /dev/null
+++ b/plugins/community/repos/VultModules/README.md
@@ -0,0 +1,52 @@
+# Vult Modules for Rack
+
+A set of modules for [VCVRack](https://vcvrack.com) written in [Vult](http://modlfo.github.io/vult/). Read more about these modules here: http://modlfo.github.io/projects/vult-modules/
+
+I provide precompiled binaries for: [Linux, Mac and Windows](https://github.com/modlfo/VultModules/releases).
+
+
+
+
+
+
+
+
+
+
+*This repository builds against the latest released version of Rack (the latest tag). It may take a day or two for me to catch up when a new version of Rack is released. Let me know if I haven't fixed that.*
+
+## Donate
+
+I’m glad to publish these modules for free so anyone can use them. Behind every module there are many hours of work (and many litters of coffee). If you enjoy these modules you can support the development by making a donation. As a suggestion, you can send me the amount to buy 1 kg of roasted coffee beans in your country. That will make me very happy. Here's the link: [DONATE](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RRMY2QPYEZT2S)
+
+## Use
+
+Download from the [releases page](https://github.com/modlfo/VultModules/releases) the file corresponding to the VCVRack version you have. Place the `VultModules` directory in the plugins folder.
+
+
+## Build
+
+First you need to build the latest release version of [Rack](https://github.com/VCVRack/Rack) following the instructions in its [README](https://github.com/VCVRack/Rack/blob/master/README.md).
+
+Then clone this repository inside the `plugins` folder of Rack and use `make`.
+
+```
+$ cd plugins
+$ git clone https://github.com/modlfo/VultModules.git
+$ make
+```
+
+## Modify
+
+To change the DSP code you need to have Vult installed. Vult can be installed by downloading it from the [Releases](https://github.com/modlfo/vult/releases) page or installed with [npm](https://www.npmjs.com/package/vult).
+
+Once you have Vult installed you can regenerate the code with the following line:
+```
+$ vultc src/VultEngine.vult -ccode -o src/VultEngine
+```
+
+## License
+
+The license is a BSD 3-Clause with the addition that any commercial use requires explicit permission of the author. That applies for the source code.
+
+For the image resources (all SVG files), any use requires explicit permission of the author.
diff --git a/plugins/community/repos/VultModules/images/Debriatus-render.png b/plugins/community/repos/VultModules/images/Debriatus-render.png
new file mode 100644
index 00000000..aaa7fa09
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Debriatus-render.png differ
diff --git a/plugins/community/repos/VultModules/images/Lateralus-render.png b/plugins/community/repos/VultModules/images/Lateralus-render.png
new file mode 100644
index 00000000..5252d88e
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Lateralus-render.png differ
diff --git a/plugins/community/repos/VultModules/images/Rescomb-render.png b/plugins/community/repos/VultModules/images/Rescomb-render.png
new file mode 100644
index 00000000..ad92f676
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Rescomb-render.png differ
diff --git a/plugins/community/repos/VultModules/images/Splie-render.png b/plugins/community/repos/VultModules/images/Splie-render.png
new file mode 100644
index 00000000..adb0fb07
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Splie-render.png differ
diff --git a/plugins/community/repos/VultModules/images/Stabile-render.png b/plugins/community/repos/VultModules/images/Stabile-render.png
new file mode 100644
index 00000000..689d5ec7
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Stabile-render.png differ
diff --git a/plugins/community/repos/VultModules/images/Tangents-render.png b/plugins/community/repos/VultModules/images/Tangents-render.png
new file mode 100644
index 00000000..303e8a7a
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Tangents-render.png differ
diff --git a/plugins/community/repos/VultModules/images/Tohe-render.png b/plugins/community/repos/VultModules/images/Tohe-render.png
new file mode 100644
index 00000000..d3dcdd38
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Tohe-render.png differ
diff --git a/plugins/community/repos/VultModules/images/Trummor-render.png b/plugins/community/repos/VultModules/images/Trummor-render.png
new file mode 100644
index 00000000..753f6fc9
Binary files /dev/null and b/plugins/community/repos/VultModules/images/Trummor-render.png differ
diff --git a/plugins/community/repos/VultModules/make.objects b/plugins/community/repos/VultModules/make.objects
new file mode 100644
index 00000000..1de02cf2
--- /dev/null
+++ b/plugins/community/repos/VultModules/make.objects
@@ -0,0 +1,13 @@
+ALL_OBJ= \
+ src/Debriatus.o \
+ src/Lateralus.o \
+ src/Rescomb.o \
+ src/Splie.o \
+ src/Stabile.o \
+ src/Tangents.o \
+ src/Tohe.o \
+ src/Trummor.o \
+ src/VultEngine.o \
+ src/VultModules.o \
+ src/vultin.o
+
diff --git a/plugins/community/repos/VultModules/makefile.msvc b/plugins/community/repos/VultModules/makefile.msvc
new file mode 100644
index 00000000..297ce534
--- /dev/null
+++ b/plugins/community/repos/VultModules/makefile.msvc
@@ -0,0 +1,7 @@
+SLUG=VultModules
+
+include ../../../../dep/yac/install_msvc.mk
+
+include make.objects
+
+include ../../../build_plugin.mk
diff --git a/plugins/community/repos/VultModules/res/Debriatus.svg b/plugins/community/repos/VultModules/res/Debriatus.svg
new file mode 100644
index 00000000..715f15c3
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Debriatus.svg
@@ -0,0 +1,297 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Jack.svg b/plugins/community/repos/VultModules/res/Jack.svg
new file mode 100644
index 00000000..ffccddcf
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Jack.svg
@@ -0,0 +1,15 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Knob.svg b/plugins/community/repos/VultModules/res/Knob.svg
new file mode 100644
index 00000000..e8d8b467
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Knob.svg
@@ -0,0 +1,18 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/KnobAlt.svg b/plugins/community/repos/VultModules/res/KnobAlt.svg
new file mode 100644
index 00000000..ebf6e5be
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/KnobAlt.svg
@@ -0,0 +1,20 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/KnobBig.svg b/plugins/community/repos/VultModules/res/KnobBig.svg
new file mode 100644
index 00000000..3bc343d4
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/KnobBig.svg
@@ -0,0 +1,18 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/KnobSmall.svg b/plugins/community/repos/VultModules/res/KnobSmall.svg
new file mode 100644
index 00000000..cab75f48
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/KnobSmall.svg
@@ -0,0 +1,15 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Attack.svg b/plugins/community/repos/VultModules/res/LCD-Attack.svg
new file mode 100644
index 00000000..0f422991
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Attack.svg
@@ -0,0 +1,61 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Bend.svg b/plugins/community/repos/VultModules/res/LCD-Bend.svg
new file mode 100644
index 00000000..59ea7fcb
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Bend.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Decimate.svg b/plugins/community/repos/VultModules/res/LCD-Decimate.svg
new file mode 100644
index 00000000..25f22b4a
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Decimate.svg
@@ -0,0 +1,65 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Drive.svg b/plugins/community/repos/VultModules/res/LCD-Drive.svg
new file mode 100644
index 00000000..dcb689df
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Drive.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Hold.svg b/plugins/community/repos/VultModules/res/LCD-Hold.svg
new file mode 100644
index 00000000..c3c813b9
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Hold.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Level.svg b/plugins/community/repos/VultModules/res/LCD-Level.svg
new file mode 100644
index 00000000..7438a44f
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Level.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Release.svg b/plugins/community/repos/VultModules/res/LCD-Release.svg
new file mode 100644
index 00000000..5e683946
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Release.svg
@@ -0,0 +1,63 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Source.svg b/plugins/community/repos/VultModules/res/LCD-Source.svg
new file mode 100644
index 00000000..6c77fc5a
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Source.svg
@@ -0,0 +1,61 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Speed.svg b/plugins/community/repos/VultModules/res/LCD-Speed.svg
new file mode 100644
index 00000000..986cf6c9
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Speed.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Tone.svg b/plugins/community/repos/VultModules/res/LCD-Tone.svg
new file mode 100644
index 00000000..a6ae9399
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Tone.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LCD-Tune.svg b/plugins/community/repos/VultModules/res/LCD-Tune.svg
new file mode 100644
index 00000000..65053a88
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LCD-Tune.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/LICENSE b/plugins/community/repos/VultModules/res/LICENSE
new file mode 100644
index 00000000..2c1397ff
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/LICENSE
@@ -0,0 +1,5 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Theses image files included in this directory cannot be used without explicit permission of the author.
+*/
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Lateralus.svg b/plugins/community/repos/VultModules/res/Lateralus.svg
new file mode 100644
index 00000000..31b8a7c6
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Lateralus.svg
@@ -0,0 +1,213 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Rescomb.svg b/plugins/community/repos/VultModules/res/Rescomb.svg
new file mode 100644
index 00000000..81735d08
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Rescomb.svg
@@ -0,0 +1,223 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Screw.svg b/plugins/community/repos/VultModules/res/Screw.svg
new file mode 100644
index 00000000..ade19b95
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Screw.svg
@@ -0,0 +1,13 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Select2_A.svg b/plugins/community/repos/VultModules/res/Select2_A.svg
new file mode 100644
index 00000000..9e3284f6
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Select2_A.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Select2_B.svg b/plugins/community/repos/VultModules/res/Select2_B.svg
new file mode 100644
index 00000000..3be80cb5
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Select2_B.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Select3_A.svg b/plugins/community/repos/VultModules/res/Select3_A.svg
new file mode 100644
index 00000000..e653f34b
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Select3_A.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Select3_B.svg b/plugins/community/repos/VultModules/res/Select3_B.svg
new file mode 100644
index 00000000..11b7766e
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Select3_B.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Select3_C.svg b/plugins/community/repos/VultModules/res/Select3_C.svg
new file mode 100644
index 00000000..d7d9aeb1
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Select3_C.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Splie.svg b/plugins/community/repos/VultModules/res/Splie.svg
new file mode 100644
index 00000000..f00fb6ce
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Splie.svg
@@ -0,0 +1,131 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Stabile.svg b/plugins/community/repos/VultModules/res/Stabile.svg
new file mode 100644
index 00000000..98613fcc
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Stabile.svg
@@ -0,0 +1,273 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Tangents.svg b/plugins/community/repos/VultModules/res/Tangents.svg
new file mode 100644
index 00000000..6ea97dfc
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Tangents.svg
@@ -0,0 +1,217 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Tohe.svg b/plugins/community/repos/VultModules/res/Tohe.svg
new file mode 100644
index 00000000..afcb28be
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Tohe.svg
@@ -0,0 +1,132 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/res/Trummor.svg b/plugins/community/repos/VultModules/res/Trummor.svg
new file mode 100644
index 00000000..a8b97a29
--- /dev/null
+++ b/plugins/community/repos/VultModules/res/Trummor.svg
@@ -0,0 +1,622 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/Debriatus.cpp b/plugins/community/repos/VultModules/src/Debriatus.cpp
new file mode 100644
index 00000000..1a426574
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Debriatus.cpp
@@ -0,0 +1,132 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Debriatus : Module
+{
+ enum ParamIds
+ {
+ FOLD_PARAM,
+ CRUSH_PARAM,
+ DISTORT_PARAM,
+ SATURATE_PARAM,
+ FOLD_AMT_PARAM,
+ CRUSH_AMT_PARAM,
+ DISTORT_AMT_PARAM,
+ SATURATE_AMT_PARAM,
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ AUDIO_INPUT,
+ FOLD_INPUT,
+ CRUSH_INPUT,
+ DISTORT_INPUT,
+ SATURATE_INPUT,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ AUDIO_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ Debriatus();
+ void step() override;
+};
+
+Debriatus::Debriatus() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+}
+
+void Debriatus::step()
+{
+
+ float audio = inputs[AUDIO_INPUT].value / 5.0;
+
+ float fold_knob = params[FOLD_PARAM].value;
+ float fold_cv = inputs[FOLD_INPUT].value / 5.0;
+ float fold_amt = params[FOLD_AMT_PARAM].value;
+ float fold = fold_knob + fold_amt * fold_cv;
+
+ float crush_knob = params[CRUSH_PARAM].value;
+ float crush_cv = inputs[CRUSH_INPUT].value / 5.0;
+ float crush_amt = params[CRUSH_AMT_PARAM].value;
+ float crush = crush_knob + crush_amt * crush_cv;
+
+ float distort_knob = params[DISTORT_PARAM].value;
+ float distort_cv = inputs[DISTORT_INPUT].value / 5.0;
+ float distort_amt = params[DISTORT_AMT_PARAM].value;
+ float distort = distort_knob + distort_amt * distort_cv;
+
+ float saturate_knob = params[SATURATE_PARAM].value;
+ float saturate_cv = inputs[SATURATE_INPUT].value / 5.0;
+ float saturate_amt = params[SATURATE_AMT_PARAM].value;
+ float saturate = saturate_knob + saturate_amt * saturate_cv;
+
+ float out = VultEngine_debriatus(audio, fold, crush, distort, saturate);
+
+ outputs[AUDIO_OUTPUT].value = out * 5.0;
+}
+
+struct DebriatusWidget : ModuleWidget
+{
+ DebriatusWidget(Debriatus *module);
+};
+
+DebriatusWidget::DebriatusWidget(Debriatus *module) : ModuleWidget(module)
+{
+ // Debriatus *module = new Debriatus();
+ // setModule__deprecated__(module);
+ box.size = Vec(15 * 10, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Debriatus.svg")));
+ addChild(panel);
+ }
+ addChild(createScrew(Vec(15, 0)));
+ addChild(createScrew(Vec(box.size.x - 30, 0)));
+ addChild(createScrew(Vec(15, 365)));
+ addChild(createScrew(Vec(box.size.x - 30, 365)));
+
+ addParam(createParam(Vec(30, 52), module, Debriatus::FOLD_PARAM, 0.0, 1.0, 0.0));
+ addParam(createParam(Vec(30, 118), module, Debriatus::CRUSH_PARAM, 0.0, 1.0, 0.0));
+ addParam(createParam(Vec(30, 185), module, Debriatus::DISTORT_PARAM, 0.0, 1.0, 0.0));
+ addParam(createParam(Vec(30, 252), module, Debriatus::SATURATE_PARAM, 0.0, 1.0, 0.0));
+
+ addParam(createParam(Vec(104, 52), module, Debriatus::FOLD_AMT_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(104, 118), module, Debriatus::CRUSH_AMT_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(104, 185), module, Debriatus::DISTORT_AMT_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(104, 252), module, Debriatus::SATURATE_AMT_PARAM, -1.0, 1.0, 0.0));
+
+ addInput(createInput(Vec(101, 77), module, Debriatus::FOLD_INPUT));
+ addInput(createInput(Vec(101, 143), module, Debriatus::CRUSH_INPUT));
+ addInput(createInput(Vec(101, 210), module, Debriatus::DISTORT_INPUT));
+ addInput(createInput(Vec(101, 277), module, Debriatus::SATURATE_INPUT));
+
+ addInput(createInput(Vec(27, 318), module, Debriatus::AUDIO_INPUT));
+ addOutput(createOutput(Vec(101, 318), module, Debriatus::AUDIO_OUTPUT));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Debriatus) {
+ Model *model = Model::create("VultModules", "Debriatus", "Debriatus", WAVESHAPER_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/Lateralus.cpp b/plugins/community/repos/VultModules/src/Lateralus.cpp
new file mode 100644
index 00000000..f3f6048b
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Lateralus.cpp
@@ -0,0 +1,119 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Lateralus : Module
+{
+ enum ParamIds
+ {
+ CUTOFF_PARAM,
+ RESONANCE_PARAM,
+ CUTOFF_AMT_PARAM,
+ RESONANCE_AMT_PARAM,
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ AUDIO_INPUT,
+ CUTOFF_INPUT,
+ RESONANCE_INPUT,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ DB12_OUTPUT,
+ DB24_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ VultEngine_lateralus_type processor;
+
+ Lateralus();
+ void step() override;
+};
+
+Lateralus::Lateralus() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+ VultEngine_lateralus_init(processor);
+}
+
+void Lateralus::step()
+{
+
+ float audio = inputs[AUDIO_INPUT].value / 7.0;
+
+ float cutoff_knob = params[CUTOFF_PARAM].value;
+ float cutoff_cv = inputs[CUTOFF_INPUT].value / 5.0;
+ float cutoff_amt = params[CUTOFF_AMT_PARAM].value;
+ float cutoff = cutoff_knob + cutoff_amt * cutoff_cv;
+
+ float resonance_knob = params[RESONANCE_PARAM].value;
+ float resonance_cv = inputs[RESONANCE_INPUT].value / 5.0;
+ float resonance_amt = params[RESONANCE_AMT_PARAM].value;
+ float resonance = resonance_knob + resonance_amt * resonance_cv;
+
+ _tuple___real_real__ out;
+ VultEngine_lateralus(processor, audio, cutoff, resonance, out);
+
+ outputs[DB12_OUTPUT].value = out.field_0 * 7.0;
+
+ outputs[DB24_OUTPUT].value = out.field_1 * 7.0;
+}
+
+struct LateralusWidget : ModuleWidget
+{
+ LateralusWidget(Lateralus *module);
+};
+
+LateralusWidget::LateralusWidget(Lateralus *module) : ModuleWidget(module)
+{
+ // Lateralus *module = new Lateralus();
+ // setModule__deprecated__(module);
+ box.size = Vec(15 * 10, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Lateralus.svg")));
+ addChild(panel);
+ }
+ addChild(createScrew(Vec(15, 0)));
+ addChild(createScrew(Vec(box.size.x - 30, 0)));
+ addChild(createScrew(Vec(15, 365)));
+ addChild(createScrew(Vec(box.size.x - 30, 365)));
+
+ addParam(createParam(Vec(25, 75), module, Lateralus::CUTOFF_PARAM, 0.0, 1.0, 0.5));
+ addParam(createParam(Vec(34, 173), module, Lateralus::RESONANCE_PARAM, 0.0, 1.0, 0.0));
+
+ addParam(createParam(Vec(108, 82), module, Lateralus::CUTOFF_AMT_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(108, 173), module, Lateralus::RESONANCE_AMT_PARAM, -1.0, 1.0, 0.0));
+
+ addInput(createInput(Vec(105, 107), module, Lateralus::CUTOFF_INPUT));
+ addInput(createInput(Vec(105, 198), module, Lateralus::RESONANCE_INPUT));
+
+ addInput(createInput(Vec(63, 318), module, Lateralus::AUDIO_INPUT));
+
+ addOutput(createOutput(Vec(27, 253), module, Lateralus::DB12_OUTPUT));
+ addOutput(createOutput(Vec(105, 253), module, Lateralus::DB24_OUTPUT));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Lateralus) {
+ Model *model = Model::create("VultModules", "Lateralus", "Lateralus", FILTER_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/Rescomb.cpp b/plugins/community/repos/VultModules/src/Rescomb.cpp
new file mode 100644
index 00000000..7d222f4e
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Rescomb.cpp
@@ -0,0 +1,122 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Rescomb : Module
+{
+ enum ParamIds
+ {
+ TUNE_PARAM,
+ COMB_PARAM,
+ FEEDBACK_PARAM,
+ COMB_AMT_PARAM,
+ FEEDBACK_AMT_PARAM,
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ PITCH_INPUT,
+ AUDIO_INPUT,
+ COMB_INPUT,
+ FEEDBACK_INPUT,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ AUDIO_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ VultEngine_rescomb_type processor;
+
+ Rescomb();
+ void step() override;
+};
+
+Rescomb::Rescomb() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+ VultEngine_rescomb_init(processor);
+}
+
+void Rescomb::step()
+{
+ float pitch = inputs[PITCH_INPUT].value / 10.0;
+ float tune = params[TUNE_PARAM].value;
+
+ float audio = inputs[AUDIO_INPUT].value / 5.0;
+
+ float comb_cv = inputs[COMB_INPUT].value / 5.0;
+ float comb_p = params[COMB_PARAM].value;
+ float comb_amt = params[COMB_AMT_PARAM].value;
+
+ float feedback_cv = inputs[FEEDBACK_INPUT].value / 5.0;
+ float feedback_p = params[FEEDBACK_PARAM].value;
+ float feedback_amt = params[FEEDBACK_AMT_PARAM].value;
+
+ float comb = comb_p + comb_cv * comb_amt;
+
+ float feedback = feedback_p + feedback_cv * feedback_amt;
+
+ float out = VultEngine_rescomb(processor, audio, pitch + tune, comb, feedback);
+
+ outputs[AUDIO_OUTPUT].value = out * 5.0;
+}
+
+struct RescombWidget : ModuleWidget
+{
+ RescombWidget(Rescomb *module);
+};
+
+RescombWidget::RescombWidget(Rescomb *module) : ModuleWidget(module)
+{
+ // Rescomb *module = new Rescomb();
+ // setModule__deprecated__(module);
+ box.size = Vec(15 * 10, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Rescomb.svg")));
+ addChild(panel);
+ }
+
+ addChild(createScrew(Vec(15, 0)));
+ addChild(createScrew(Vec(box.size.x - 30, 0)));
+ addChild(createScrew(Vec(15, 365)));
+ addChild(createScrew(Vec(box.size.x - 30, 365)));
+
+ addParam(createParam(Vec(30, 78), module, Rescomb::TUNE_PARAM, -0.4, 0.4, 0.0));
+ addParam(createParam(Vec(30, 158), module, Rescomb::COMB_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(30, 238), module, Rescomb::FEEDBACK_PARAM, 0.0, 1.1, 0.0));
+
+ addParam(createParam(Vec(103, 158), module, Rescomb::COMB_AMT_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(103, 238), module, Rescomb::FEEDBACK_AMT_PARAM, -1.0, 1.0, 0.0));
+
+ addInput(createInput(Vec(101, 85), module, Rescomb::PITCH_INPUT));
+ addInput(createInput(Vec(101, 183), module, Rescomb::COMB_INPUT));
+ addInput(createInput(Vec(101, 263), module, Rescomb::FEEDBACK_INPUT));
+
+ addInput(createInput(Vec(27, 318), module, Rescomb::AUDIO_INPUT));
+ addOutput(createOutput(Vec(101, 318), module, Rescomb::AUDIO_OUTPUT));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Rescomb) {
+ Model *model = Model::create("VultModules", "Rescomb", "Rescomb", FILTER_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/Splie.cpp b/plugins/community/repos/VultModules/src/Splie.cpp
new file mode 100644
index 00000000..082640a2
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Splie.cpp
@@ -0,0 +1,101 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Splie : Module
+{
+ enum ParamIds
+ {
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ IN_A,
+ IN_B,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ OUT1_A,
+ OUT2_A,
+ OUT3_A,
+ OUT1_B,
+ OUT2_B,
+ OUT3_B,
+ NUM_OUTPUTS
+ };
+
+ Splie();
+ void step() override;
+};
+
+Splie::Splie() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+}
+
+void Splie::step()
+{
+
+ float in_a = inputs[IN_A].value;
+ float in_b = inputs[IN_B].value;
+
+ outputs[OUT1_A].value = in_a;
+ outputs[OUT2_A].value = in_a;
+ outputs[OUT3_A].value = in_a;
+
+ outputs[OUT1_B].value = in_b;
+ outputs[OUT2_B].value = in_b;
+ outputs[OUT3_B].value = in_b;
+}
+
+struct SplieWidget : ModuleWidget
+{
+ SplieWidget(Splie *module);
+};
+
+SplieWidget::SplieWidget(Splie *module) : ModuleWidget(module)
+{
+ // Splie *module = new Splie();
+ // setModule__deprecated__(module);
+ box.size = Vec(45, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Splie.svg")));
+ addChild(panel);
+ }
+ addChild(createScrew(Vec(15, 0)));
+ addChild(createScrew(Vec(15, 365)));
+
+ addInput(createInput(Vec(11, 43), module, Splie::IN_A));
+ addOutput(createOutput(Vec(11, 80), module, Splie::OUT1_A));
+ addOutput(createOutput(Vec(11, 117), module, Splie::OUT2_A));
+ addOutput(createOutput(Vec(11, 154), module, Splie::OUT3_A));
+
+ addInput(createInput(Vec(11, 186), module, Splie::IN_B));
+ addOutput(createOutput(Vec(11, 223), module, Splie::OUT1_B));
+ addOutput(createOutput(Vec(11, 260), module, Splie::OUT2_B));
+ addOutput(createOutput(Vec(11, 298), module, Splie::OUT3_B));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Splie) {
+ Model *model = Model::create("VultModules", "Splie", "Splie", MULTIPLE_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/Stabile.cpp b/plugins/community/repos/VultModules/src/Stabile.cpp
new file mode 100644
index 00000000..94454f3e
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Stabile.cpp
@@ -0,0 +1,141 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Stabile : Module
+{
+ enum ParamIds
+ {
+ CUTOFF_PARAM,
+ RESONANCE_PARAM,
+ CUTOFF_AMT_PARAM,
+ RESONANCE_AMT_PARAM,
+ SEMBLANCE_PARAM,
+ SEMBLANCE_AMT_PARAM,
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ AUDIO_INPUT,
+ CUTOFF_INPUT,
+ RESONANCE_INPUT,
+ SEMBLANCE_INPUT,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ LP_OUTPUT,
+ BP_OUTPUT,
+ HP_OUTPUT,
+ SEM_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ VultEngine_stabile_type processor;
+
+ Stabile();
+ void step() override;
+};
+
+Stabile::Stabile() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+ VultEngine_stabile_init(processor);
+}
+
+void Stabile::step()
+{
+
+ float audio = inputs[AUDIO_INPUT].value / 5.0;
+
+ float cutoff_knob = params[CUTOFF_PARAM].value;
+ float cutoff_cv = inputs[CUTOFF_INPUT].value / 5.0;
+ float cutoff_amt = params[CUTOFF_AMT_PARAM].value;
+ float cutoff = cutoff_knob + cutoff_amt * cutoff_cv;
+
+ float resonance_knob = params[RESONANCE_PARAM].value;
+ float resonance_cv = inputs[RESONANCE_INPUT].value / 5.0;
+ float resonance_amt = params[RESONANCE_AMT_PARAM].value;
+ float resonance = resonance_knob + resonance_amt * resonance_cv;
+
+ float semblance_knob = params[SEMBLANCE_PARAM].value;
+ float semblance_cv = inputs[SEMBLANCE_INPUT].value / 5.0;
+ float semblance_amt = params[SEMBLANCE_AMT_PARAM].value;
+ float semblance = semblance_knob + semblance_amt * semblance_cv;
+
+ _tuple___real_real_real_real__ out;
+ VultEngine_stabile(processor, audio, cutoff, resonance, semblance, out);
+
+ outputs[LP_OUTPUT].value = out.field_0 * 5.0;
+
+ outputs[BP_OUTPUT].value = out.field_1 * 5.0;
+
+ outputs[HP_OUTPUT].value = out.field_2 * 5.0;
+
+ outputs[SEM_OUTPUT].value = out.field_3 * 5.0;
+}
+
+struct StabileWidget : ModuleWidget
+{
+ StabileWidget(Stabile *module);
+};
+
+StabileWidget::StabileWidget(Stabile *module) : ModuleWidget(module)
+{
+ // Stabile *module = new Stabile();
+ // setModule__deprecated__(module);
+ box.size = Vec(15 * 10, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Stabile.svg")));
+ addChild(panel);
+ }
+
+ addChild(createScrew(Vec(15, 0)));
+ addChild(createScrew(Vec(box.size.x - 30, 0)));
+ addChild(createScrew(Vec(15, 365)));
+ addChild(createScrew(Vec(box.size.x - 30, 365)));
+
+ addParam(createParam(Vec(25, 53), module, Stabile::CUTOFF_PARAM, 0.0, 1.0, 0.5));
+ addParam(createParam(Vec(34, 134), module, Stabile::RESONANCE_PARAM, 0.0, 4.0, 0.0));
+
+ addParam(createParam(Vec(108, 60), module, Stabile::CUTOFF_AMT_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(108, 134), module, Stabile::RESONANCE_AMT_PARAM, -1.0, 1.0, 0.0));
+
+ addParam(createParam(Vec(34, 202), module, Stabile::SEMBLANCE_PARAM, 0.0, 1.0, 0.5));
+ addParam(createParam(Vec(108, 202), module, Stabile::SEMBLANCE_AMT_PARAM, -1.0, 1.0, 0.0));
+
+ addInput(createInput(Vec(105, 85), module, Stabile::CUTOFF_INPUT));
+ addInput(createInput(Vec(105, 159), module, Stabile::RESONANCE_INPUT));
+
+ addInput(createInput(Vec(60, 318), module, Stabile::AUDIO_INPUT));
+
+ addOutput(createOutput(Vec(9, 277), module, Stabile::LP_OUTPUT));
+ addOutput(createOutput(Vec(45, 277), module, Stabile::BP_OUTPUT));
+ addOutput(createOutput(Vec(82, 277), module, Stabile::HP_OUTPUT));
+
+ addInput(createInput(Vec(105, 227), module, Stabile::SEMBLANCE_INPUT));
+ addOutput(createOutput(Vec(118, 277), module, Stabile::SEM_OUTPUT));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Stabile) {
+ Model *model = Model::create("VultModules", "Stabile", "Stabile", FILTER_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/Tangents.cpp b/plugins/community/repos/VultModules/src/Tangents.cpp
new file mode 100644
index 00000000..83e1a8f9
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Tangents.cpp
@@ -0,0 +1,120 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Tangents : Module
+{
+ enum ParamIds
+ {
+ CUTOFF_PARAM,
+ RESONANCE_PARAM,
+ CUTOFF_AMT_PARAM,
+ RESONANCE_AMT_PARAM,
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ LP_INPUT,
+ BP_INPUT,
+ HP_INPUT,
+ CUTOFF_INPUT,
+ RESONANCE_INPUT,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ AUDIO_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ VultEngine_tangents_type processor;
+
+ Tangents();
+ void step() override;
+};
+
+Tangents::Tangents() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+ VultEngine_tangents_init(processor);
+}
+
+void Tangents::step()
+{
+
+ float lp = inputs[LP_INPUT].value / 15.0;
+ float bp = inputs[BP_INPUT].value / 15.0;
+ float hp = inputs[HP_INPUT].value / 15.0;
+
+ float cutoff_knob = params[CUTOFF_PARAM].value;
+ float cutoff_cv = inputs[CUTOFF_INPUT].value / 5.0;
+ float cutoff_amt = params[CUTOFF_AMT_PARAM].value;
+ float cutoff = cutoff_knob + cutoff_amt * cutoff_cv;
+
+ float resonance_knob = params[RESONANCE_PARAM].value;
+ float resonance_cv = inputs[RESONANCE_INPUT].value / 5.0;
+ float resonance_amt = params[RESONANCE_AMT_PARAM].value;
+ float resonance = resonance_knob + resonance_amt * resonance_cv;
+
+ float out = VultEngine_tangents(processor, lp, bp, hp, cutoff, resonance);
+
+ outputs[AUDIO_OUTPUT].value = out * 15.0;
+}
+
+struct TangentsWidget : ModuleWidget
+{
+ TangentsWidget(Tangents *module);
+};
+
+TangentsWidget::TangentsWidget(Tangents *module) : ModuleWidget(module)
+{
+ // Tangents *module = new Tangents();
+ // setModule__deprecated__(module);
+ box.size = Vec(15 * 10, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Tangents.svg")));
+ addChild(panel);
+ }
+ addChild(createScrew(Vec(15, 0)));
+ addChild(createScrew(Vec(box.size.x - 30, 0)));
+ addChild(createScrew(Vec(15, 365)));
+ addChild(createScrew(Vec(box.size.x - 30, 365)));
+
+ addParam(createParam(Vec(25, 75), module, Tangents::CUTOFF_PARAM, 0.0, 0.85, 0.85 / 2.0));
+ addParam(createParam(Vec(34, 173), module, Tangents::RESONANCE_PARAM, 0.0, 1.0, 0.0));
+
+ addParam(createParam(Vec(108, 82), module, Tangents::CUTOFF_AMT_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(108, 173), module, Tangents::RESONANCE_AMT_PARAM, -1.0, 1.0, 0.0));
+
+ addInput(createInput(Vec(105, 107), module, Tangents::CUTOFF_INPUT));
+ addInput(createInput(Vec(105, 198), module, Tangents::RESONANCE_INPUT));
+
+ addInput(createInput(Vec(21, 313), module, Tangents::LP_INPUT));
+ addInput(createInput(Vec(63, 313), module, Tangents::BP_INPUT));
+ addInput(createInput(Vec(105, 313), module, Tangents::HP_INPUT));
+
+ addOutput(createOutput(Vec(63, 248), module, Tangents::AUDIO_OUTPUT));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Tangents) {
+ Model *model = Model::create("VultModules", "Tangents", "Tangents", FILTER_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/Tohe.cpp b/plugins/community/repos/VultModules/src/Tohe.cpp
new file mode 100644
index 00000000..b9a1f7ae
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Tohe.cpp
@@ -0,0 +1,98 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Tohe : Module
+{
+ enum ParamIds
+ {
+ TONE_PARAM,
+ TONE_AMT_PARAM,
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ AUDIO_INPUT,
+ TONE_INPUT,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ AUDIO_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ VultEngine_tohe_type processor;
+
+ Tohe();
+ void step() override;
+};
+
+Tohe::Tohe() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+ VultEngine_tohe_init(processor);
+}
+
+void Tohe::step()
+{
+
+ float audio = inputs[AUDIO_INPUT].value;
+
+ float tone_knob = params[TONE_PARAM].value;
+ float tone_cv = inputs[TONE_INPUT].value / 5.0;
+ float tone_amt = params[TONE_AMT_PARAM].value;
+ float tone = tone_knob + tone_amt * tone_cv;
+
+ float out = VultEngine_tohe(processor, audio, tone);
+
+ outputs[AUDIO_OUTPUT].value = out;
+}
+
+struct ToheWidget : ModuleWidget
+{
+ ToheWidget(Tohe *module);
+};
+
+ToheWidget::ToheWidget(Tohe *module) : ModuleWidget(module)
+{
+ // Tohe *module = new Tohe();
+ // setModule__deprecated__(module);
+ box.size = Vec(15 * 4, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Tohe.svg")));
+ addChild(panel);
+ }
+
+ addChild(createScrew(Vec(23, 0)));
+ addChild(createScrew(Vec(23, 365)));
+
+ addParam(createParam(Vec(10, 88), module, Tohe::TONE_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(21, 158), module, Tohe::TONE_AMT_PARAM, -1.0, 1.0, 0.0));
+ addInput(createInput(Vec(18, 183), module, Tohe::TONE_INPUT));
+ addInput(createInput(Vec(17, 228), module, Tohe::AUDIO_INPUT));
+ addOutput(createOutput(Vec(17, 274), module, Tohe::AUDIO_OUTPUT));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Tohe) {
+ Model *model = Model::create("VultModules", "Tohe", "Tohe", EQUALIZER_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/Trummor.cpp b/plugins/community/repos/VultModules/src/Trummor.cpp
new file mode 100644
index 00000000..69767883
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/Trummor.cpp
@@ -0,0 +1,250 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "VultModules.hpp"
+#include "util/math.hpp"
+#include "VultEngine.h"
+
+struct Trummor : Module
+{
+ enum ParamIds
+ {
+ LEVEL1_PARAM,
+ LEVEL2_PARAM,
+ ENV1_A_PARAM,
+ ENV1_H_PARAM,
+ ENV1_R_PARAM,
+ ENV2_A_PARAM,
+ ENV2_H_PARAM,
+ ENV2_R_PARAM,
+ PITCH_PARAM,
+ BEND_PARAM,
+ DRIVE_PARAM,
+ TONE_PARAM,
+ OSC_BLEND_PARAM,
+ NOISE_BLEND_PARAM,
+ SEL_ENV1_PARAM,
+ SEL_ENV2_PARAM,
+ DECIMATE_PARAM,
+ OSC_MOD_PARAM,
+ NOISE_MOD_PARAM,
+ OSC_SEL_PARAM,
+ NOISE_SEL_PARAM,
+ NUM_PARAMS
+ };
+ enum InputIds
+ {
+ GATE_INPUT,
+ OSC_INPUT,
+ NOISE_INPUT,
+ OSC_MOD_INPUT,
+ NOISE_MOD_INPUT,
+ NUM_INPUTS
+ };
+ enum OutputIds
+ {
+ AUDIO_OUTPUT,
+ PITCH_OUTPUT,
+ ENV1_OUTPUT,
+ ENV2_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ Trummor_do_type processor;
+
+ Trummor();
+ void step();
+};
+
+Trummor::Trummor() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS)
+{
+ params.resize(NUM_PARAMS);
+ inputs.resize(NUM_INPUTS);
+ outputs.resize(NUM_OUTPUTS);
+ Trummor_do_init(processor);
+}
+
+void Trummor::step()
+{
+
+ Trummor_setLevel1(processor, params[LEVEL1_PARAM].value);
+ Trummor_setLevel2(processor, params[LEVEL2_PARAM].value);
+
+ Trummor_setEnv1A(processor, params[ENV1_A_PARAM].value);
+ Trummor_setEnv1H(processor, params[ENV1_H_PARAM].value);
+ Trummor_setEnv1R(processor, params[ENV1_R_PARAM].value);
+
+ Trummor_setEnv2A(processor, params[ENV2_A_PARAM].value);
+ Trummor_setEnv2H(processor, params[ENV2_H_PARAM].value);
+ Trummor_setEnv2R(processor, params[ENV2_R_PARAM].value);
+
+ Trummor_setPitch(processor, params[PITCH_PARAM].value);
+ Trummor_setBend(processor, params[BEND_PARAM].value);
+ Trummor_setDrive(processor, params[DRIVE_PARAM].value);
+
+ Trummor_setTone(processor, params[TONE_PARAM].value);
+
+ Trummor_setOscBlend(processor, params[OSC_BLEND_PARAM].value);
+ Trummor_setNoiseBlend(processor, params[NOISE_BLEND_PARAM].value);
+
+ Trummor_setEnv1Scale(processor, params[SEL_ENV1_PARAM].value);
+ Trummor_setEnv2Scale(processor, params[SEL_ENV2_PARAM].value);
+
+ Trummor_setDecimate(processor, params[DECIMATE_PARAM].value);
+
+ int osc_sel = round(params[OSC_SEL_PARAM].value);
+ float osc_mod = params[OSC_MOD_PARAM].value * inputs[OSC_MOD_INPUT].value / 5.0;
+ switch (osc_sel)
+ {
+ case 0:
+ Trummor_setPitch(processor, osc_mod / 10.0f + params[PITCH_PARAM].value);
+ break;
+ case 1:
+ Trummor_setBend(processor, (osc_mod + params[BEND_PARAM].value));
+ break;
+ case 2:
+ Trummor_setDrive(processor, (osc_mod + params[DRIVE_PARAM].value));
+ break;
+ case 3:
+ Trummor_setEnv1A(processor, (osc_mod + params[ENV1_A_PARAM].value));
+ break;
+ case 4:
+ Trummor_setEnv1H(processor, (osc_mod + params[ENV1_H_PARAM].value));
+ break;
+ case 5:
+ Trummor_setEnv1R(processor, (osc_mod + params[ENV1_R_PARAM].value));
+ break;
+ case 6:
+ Trummor_setEnv1Scale(processor, (osc_mod + params[SEL_ENV1_PARAM].value));
+ break;
+ case 7:
+ Trummor_setOscBlend(processor, (osc_mod + params[OSC_BLEND_PARAM].value));
+ break;
+ case 8:
+ Trummor_setLevel1(processor, (osc_mod + params[LEVEL1_PARAM].value));
+ break;
+ }
+
+ int noise_sel = round(params[NOISE_SEL_PARAM].value);
+ float noise_mod = params[NOISE_MOD_PARAM].value * inputs[NOISE_MOD_INPUT].value / 5.0;
+
+ switch (noise_sel)
+ {
+ case 0:
+ Trummor_setTone(processor, (noise_mod + params[TONE_PARAM].value));
+ break;
+ case 1:
+ Trummor_setDecimate(processor, (noise_mod + params[DECIMATE_PARAM].value));
+ break;
+ case 2:
+ Trummor_setEnv2A(processor, (noise_mod + params[ENV2_A_PARAM].value));
+ break;
+ case 3:
+ Trummor_setEnv2H(processor, (noise_mod + params[ENV2_H_PARAM].value));
+ break;
+ case 4:
+ Trummor_setEnv2R(processor, (noise_mod + params[ENV2_R_PARAM].value));
+ break;
+ case 5:
+ Trummor_setEnv2Scale(processor, (noise_mod + params[SEL_ENV2_PARAM].value));
+ break;
+ case 6:
+ Trummor_setNoiseBlend(processor, (noise_mod + params[NOISE_BLEND_PARAM].value));
+ break;
+ case 7:
+ Trummor_setLevel2(processor, (noise_mod + params[LEVEL2_PARAM].value));
+ break;
+ }
+
+ _tuple___real_real_real_real__ out;
+ Trummor_do(processor, inputs[GATE_INPUT].value / 10.0f, inputs[OSC_INPUT].value / 10.0f, inputs[NOISE_INPUT].value / 10.0f, out);
+
+ outputs[AUDIO_OUTPUT].value = out.field_0 * 10.0f;
+ outputs[PITCH_OUTPUT].value = (out.field_1 - 0.3f) * 10.0f;
+ outputs[ENV1_OUTPUT].value = out.field_2 * 10.0f;
+ outputs[ENV2_OUTPUT].value = out.field_3 * 10.0f;
+}
+
+struct TrummorWidget : ModuleWidget
+{
+ TrummorWidget(Trummor *module);
+};
+
+TrummorWidget::TrummorWidget(Trummor *module) : ModuleWidget(module)
+{
+ // Trummor *module = new Trummor();
+ // setModule__deprecated__(module);
+ box.size = Vec(300, 380);
+
+ {
+ SVGPanel *panel = new SVGPanel();
+ panel->box.size = box.size;
+ panel->setBackground(SVG::load(assetPlugin(plugin, "res/Trummor.svg")));
+ addChild(panel);
+ }
+ addChild(createScrew(Vec(15, 0)));
+ addChild(createScrew(Vec(box.size.x - 30, 0)));
+ addChild(createScrew(Vec(15, 365)));
+ addChild(createScrew(Vec(box.size.x - 30, 365)));
+
+ addParam(createParam(Vec(101, 196), module, Trummor::LEVEL1_PARAM, 0.0, 1.0, 0.7));
+ addParam(createParam(Vec(244, 196), module, Trummor::LEVEL2_PARAM, 0.0, 1.0, 0.1));
+
+ addParam(createParam(Vec(17, 140), module, Trummor::ENV1_A_PARAM, 0.0, 1.0, 0.0));
+ addParam(createParam(Vec(63, 140), module, Trummor::ENV1_H_PARAM, 0.0, 1.0, 0.2));
+ addParam(createParam(Vec(110, 140), module, Trummor::ENV1_R_PARAM, 0.0, 1.0, 0.2));
+
+ addParam(createParam(Vec(160, 140), module, Trummor::ENV2_A_PARAM, 0.0, 1.0, 0.0));
+ addParam(createParam(Vec(206, 140), module, Trummor::ENV2_H_PARAM, 0.0, 1.0, 0.05));
+ addParam(createParam(Vec(252, 140), module, Trummor::ENV2_R_PARAM, 0.0, 1.0, 0.05));
+
+ addParam(createParam(Vec(17, 85), module, Trummor::PITCH_PARAM, -0.1, 0.3, 0.0));
+ addParam(createParam(Vec(63, 85), module, Trummor::BEND_PARAM, -1.0, 1.0, 0.5));
+ addParam(createParam(Vec(110, 85), module, Trummor::DRIVE_PARAM, 0.0, 4.0, 0.0));
+
+ addParam(createParam(Vec(177, 85), module, Trummor::TONE_PARAM, -1.0, 1.0, -0.7));
+
+ addParam(createParam(Vec(53, 205), module, Trummor::OSC_BLEND_PARAM, 0.0, 1.0, 0.0));
+ addParam(createParam(Vec(195, 205), module, Trummor::NOISE_BLEND_PARAM, 0.0, 1.0, 0.0));
+
+ addParam(createParam(Vec(12, 201), module, Trummor::SEL_ENV1_PARAM, 0.0, 1.0, 0.0));
+ addParam(createParam(Vec(155, 201), module, Trummor::SEL_ENV2_PARAM, 0.0, 1.0, 0.0));
+
+ addInput(createInput(Vec(63, 336), module, Trummor::GATE_INPUT));
+
+ addInput(createInput(Vec(20, 295), module, Trummor::OSC_INPUT));
+ addInput(createInput(Vec(188, 295), module, Trummor::NOISE_INPUT));
+
+ addOutput(createOutput(Vec(213, 336), module, Trummor::AUDIO_OUTPUT));
+
+ addOutput(createOutput(Vec(112, 295), module, Trummor::PITCH_OUTPUT));
+
+ addOutput(createOutput(Vec(67, 295), module, Trummor::ENV1_OUTPUT));
+ addOutput(createOutput(Vec(238, 295), module, Trummor::ENV2_OUTPUT));
+
+ addInput(createInput(Vec(14, 257), module, Trummor::OSC_MOD_INPUT));
+ addInput(createInput(Vec(157, 257), module, Trummor::NOISE_MOD_INPUT));
+
+ addParam(createParam(Vec(50, 260), module, Trummor::OSC_MOD_PARAM, -1.0, 1.0, 0.0));
+ addParam(createParam(Vec(193, 260), module, Trummor::NOISE_MOD_PARAM, -1.0, 1.0, 0.0));
+
+ addParam(createParam(Vec(218, 262), module, Trummor::NOISE_SEL_PARAM, 0.0, 7.0, 0.0));
+ addParam(createParam(Vec(75, 262), module, Trummor::OSC_SEL_PARAM, 0.0, 8.0, 0.0));
+
+ addParam(createParam(Vec(237, 85), module, Trummor::DECIMATE_PARAM, 0.0, 1.0, 0.0));
+}
+
+RACK_PLUGIN_MODEL_INIT(VultModules, Trummor) {
+ Model *model = Model::create("VultModules", "Trummor", "Trummor", DRUM_TAG);
+ return model;
+}
diff --git a/plugins/community/repos/VultModules/src/VultEngine.cpp b/plugins/community/repos/VultModules/src/VultEngine.cpp
new file mode 100644
index 00000000..990c0eab
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/VultEngine.cpp
@@ -0,0 +1,1863 @@
+
+/* Code automatically generated by Vult https://github.com/modlfo/vult */
+#include "VultEngine.h"
+
+float Util_sampleRateScale(){
+ return (44100.f / getSampleRate());
+}
+
+void Util__ctx_type_2_init(Util__ctx_type_2 &_output_){
+ Util__ctx_type_2 _ctx;
+ _ctx.pre = 0;
+ _output_ = _ctx;
+ return ;
+}
+
+void Util_edge_init(Util__ctx_type_2 &_output_){
+ Util__ctx_type_2_init(_output_);
+ return ;
+}
+
+uint8_t Util_edge(Util__ctx_type_2 &_ctx, uint8_t x){
+ uint8_t ret;
+ ret = (x && bool_not(_ctx.pre));
+ _ctx.pre = x;
+ return ret;
+}
+
+void Util__ctx_type_3_init(Util__ctx_type_3 &_output_){
+ Util__ctx_type_3 _ctx;
+ _ctx.pre_x = 0.f;
+ _output_ = _ctx;
+ return ;
+}
+
+void Util_change_init(Util__ctx_type_3 &_output_){
+ Util__ctx_type_3_init(_output_);
+ return ;
+}
+
+uint8_t Util_change(Util__ctx_type_3 &_ctx, float x){
+ uint8_t v;
+ v = (_ctx.pre_x != x);
+ _ctx.pre_x = x;
+ return v;
+}
+
+float Util_cubic_clipper(float x){
+ uint8_t _cond_32;
+ _cond_32 = (x <= -0.666666666667f);
+ if(_cond_32){
+ return -0.666666666667f;
+ }
+ else
+ {
+ uint8_t _cond_31;
+ _cond_31 = (x >= 0.666666666667f);
+ if(_cond_31){
+ return 0.666666666667f;
+ }
+ else
+ {
+ return (1.17391304348f * (x + (-0.333333333333f * x * x * x)));
+ }
+ }
+}
+
+float Util_stanh(float x){
+ int index;
+ index = int_clip(float_to_int((5.f * (x + 24.f))),0,240);
+ return (float_wrap_array(Util_stanh_c0)[index] + (x * (float_wrap_array(Util_stanh_c1)[index] + (float_wrap_array(Util_stanh_c2)[index] * x))));
+}
+
+float Util_sine(float x){
+ int index;
+ index = int_clip(float_to_int((100.f * x)),0,100);
+ return (float_wrap_array(Util_sine_c0)[index] + (x * (float_wrap_array(Util_sine_c1)[index] + (float_wrap_array(Util_sine_c2)[index] * x))));
+}
+
+float Util_saturate(float x){
+ int index;
+ index = int_clip(float_to_int((5.f * (x + 24.f))),0,240);
+ return (float_wrap_array(Util_saturate_c0)[index] + (x * (float_wrap_array(Util_saturate_c1)[index] + (float_wrap_array(Util_saturate_c2)[index] * x))));
+}
+
+float Util_map(float x, float x0, float x1, float y0, float y1){
+ return ((((x + (- x0)) * (y1 + (- y0))) / (x1 + (- x0))) + y0);
+}
+
+void Util__ctx_type_9_init(Util__ctx_type_9 &_output_){
+ Util__ctx_type_9 _ctx;
+ _ctx.y1 = 0.f;
+ _ctx.x1 = 0.f;
+ _output_ = _ctx;
+ return ;
+}
+
+void Util_dcblock_init(Util__ctx_type_9 &_output_){
+ Util__ctx_type_9_init(_output_);
+ return ;
+}
+
+float Util_dcblock(Util__ctx_type_9 &_ctx, float x0){
+ float y0;
+ y0 = (x0 + (- _ctx.x1) + (_ctx.y1 * 0.995f));
+ _ctx.x1 = x0;
+ _ctx.y1 = y0;
+ return y0;
+}
+
+void Util__ctx_type_10_init(Util__ctx_type_10 &_output_){
+ Util__ctx_type_10 _ctx;
+ _ctx.x = 0.f;
+ _output_ = _ctx;
+ return ;
+}
+
+void Util_smooth_init(Util__ctx_type_10 &_output_){
+ Util__ctx_type_10_init(_output_);
+ return ;
+}
+
+float Util_smooth(Util__ctx_type_10 &_ctx, float input){
+ _ctx.x = (_ctx.x + ((input + (- _ctx.x)) * 0.005f));
+ return _ctx.x;
+}
+
+float Util_cvToPitch(float cv){
+ return ((cv * 120.f) + 24.f);
+}
+
+float Util_cvToperiodUnit(float cv){
+ int index;
+ index = int_clip(float_to_int((31.f * cv)),0,31);
+ return (float_wrap_array(Util_cvToperiodUnit_c0)[index] + (cv * (float_wrap_array(Util_cvToperiodUnit_c1)[index] + (float_wrap_array(Util_cvToperiodUnit_c2)[index] * cv))));
+}
+
+float Util_cvTokHz(float cv){
+ int index;
+ index = int_clip(float_to_int((31.f * cv)),0,31);
+ return (float_wrap_array(Util_cvTokHz_c0)[index] + (cv * (float_wrap_array(Util_cvTokHz_c1)[index] + (float_wrap_array(Util_cvTokHz_c2)[index] * cv))));
+}
+
+float Util_pitchToRateUnit(float pitch){
+ int index;
+ index = int_clip(float_to_int((0.244094488189f * pitch)),0,31);
+ return (float_wrap_array(Util_pitchToRateUnit_c0)[index] + (pitch * (float_wrap_array(Util_pitchToRateUnit_c1)[index] + (float_wrap_array(Util_pitchToRateUnit_c2)[index] * pitch))));
+}
+
+float Util_cvToRateUnit(float cv){
+ int index;
+ index = int_clip(float_to_int((141.111111111f * cv)),0,127);
+ return (float_wrap_array(Util_cvToRateUnit_c0)[index] + (cv * (float_wrap_array(Util_cvToRateUnit_c1)[index] + (float_wrap_array(Util_cvToRateUnit_c2)[index] * cv))));
+}
+
+void Util__ctx_type_16_init(Util__ctx_type_16 &_output_){
+ Util__ctx_type_16 _ctx;
+ _ctx.rate = 0.f;
+ Util__ctx_type_3_init(_ctx._inst21);
+ Util__ctx_type_3_init(_ctx._inst20);
+ _output_ = _ctx;
+ return ;
+}
+
+void Util_pitchToRate_init(Util__ctx_type_16 &_output_){
+ Util__ctx_type_16_init(_output_);
+ return ;
+}
+
+float Util_pitchToRate(Util__ctx_type_16 &_ctx, float pitch){
+ float fs;
+ fs = getSampleRate();
+ uint8_t _cond_34;
+ _cond_34 = (Util_change(_ctx._inst20,pitch) || Util_change(_ctx._inst21,fs));
+ if(_cond_34){
+ _ctx.rate = (Util_pitchToRateUnit(pitch) / getSampleRate());
+ }
+ return _ctx.rate;
+}
+
+void Util__ctx_type_17_init(Util__ctx_type_17 &_output_){
+ Util__ctx_type_17 _ctx;
+ _ctx.rate = 0.f;
+ Util__ctx_type_3_init(_ctx._inst25);
+ Util__ctx_type_3_init(_ctx._inst24);
+ _output_ = _ctx;
+ return ;
+}
+
+void Util_cvToRate_init(Util__ctx_type_17 &_output_){
+ Util__ctx_type_17_init(_output_);
+ return ;
+}
+
+float Util_cvToRate(Util__ctx_type_17 &_ctx, float cv){
+ float fs;
+ fs = getSampleRate();
+ uint8_t _cond_35;
+ _cond_35 = (Util_change(_ctx._inst24,cv) || Util_change(_ctx._inst25,fs));
+ if(_cond_35){
+ _ctx.rate = (Util_cvToRateUnit(cv) / fs);
+ }
+ return _ctx.rate;
+}
+
+void Util__ctx_type_18_init(Util__ctx_type_18 &_output_){
+ Util__ctx_type_18 _ctx;
+ _ctx.x1 = 0;
+ _output_ = _ctx;
+ return ;
+}
+
+void Util_simple_noise_init(Util__ctx_type_18 &_output_){
+ Util__ctx_type_18_init(_output_);
+ return ;
+}
+
+float Util_simple_noise(Util__ctx_type_18 &_ctx){
+ _ctx.x1 = (((_ctx.x1 * 17389) + 7919) % 32768);
+ float y1;
+ y1 = (int_to_float(_ctx.x1) * 3.0517578125e-05f);
+ return y1;
+}
+
+float Util_polylog(float x){
+ float xx;
+ xx = float_clip(x,0.f,1.f);
+ return ((2.f + (- xx)) * xx);
+}
+
+float Util_fadeA(float x){
+ int index;
+ index = int_clip(float_to_int((31.f * x)),0,31);
+ return (float_wrap_array(Util_fadeA_c0)[index] + (x * (float_wrap_array(Util_fadeA_c1)[index] + (float_wrap_array(Util_fadeA_c2)[index] * x))));
+}
+
+float Util_fadeB(float x){
+ int index;
+ index = int_clip(float_to_int((31.f * x)),0,31);
+ return (float_wrap_array(Util_fadeB_c0)[index] + (x * (float_wrap_array(Util_fadeB_c1)[index] + (float_wrap_array(Util_fadeB_c2)[index] * x))));
+}
+
+float Stabile_calc_g(float cv, float fs){
+ float pitch;
+ pitch = Util_cvToPitch(cv);
+ float f;
+ f = (8.17579891564f * expf((0.0577622650467f * pitch)));
+ float wd;
+ wd = (6.28318530718f * f);
+ float T;
+ T = (1.f / fs);
+ float wa;
+ wa = ((2.f / T) * tanf((wd * T * 0.5f)));
+ float g;
+ g = (wa * T * 0.5f);
+ return g;
+}
+
+float Stabile_calc_g_44100(float cv){
+ int index;
+ index = int_clip(float_to_int((127.f * cv)),0,127);
+ return (float_wrap_array(Stabile_calc_g_44100_c0)[index] + (cv * (float_wrap_array(Stabile_calc_g_44100_c1)[index] + (float_wrap_array(Stabile_calc_g_44100_c2)[index] * cv))));
+}
+
+float Stabile_calc_g_48000(float cv){
+ int index;
+ index = int_clip(float_to_int((127.f * cv)),0,127);
+ return (float_wrap_array(Stabile_calc_g_48000_c0)[index] + (cv * (float_wrap_array(Stabile_calc_g_48000_c1)[index] + (float_wrap_array(Stabile_calc_g_48000_c2)[index] * cv))));
+}
+
+float Stabile_calc_g_88200(float cv){
+ int index;
+ index = int_clip(float_to_int((127.f * cv)),0,127);
+ return (float_wrap_array(Stabile_calc_g_88200_c0)[index] + (cv * (float_wrap_array(Stabile_calc_g_88200_c1)[index] + (float_wrap_array(Stabile_calc_g_88200_c2)[index] * cv))));
+}
+
+float Stabile_calc_g_96000(float cv){
+ int index;
+ index = int_clip(float_to_int((127.f * cv)),0,127);
+ return (float_wrap_array(Stabile_calc_g_96000_c0)[index] + (cv * (float_wrap_array(Stabile_calc_g_96000_c1)[index] + (float_wrap_array(Stabile_calc_g_96000_c2)[index] * cv))));
+}
+
+float Stabile_calc_g_176400(float cv){
+ int index;
+ index = int_clip(float_to_int((127.f * cv)),0,127);
+ return (float_wrap_array(Stabile_calc_g_176400_c0)[index] + (cv * (float_wrap_array(Stabile_calc_g_176400_c1)[index] + (float_wrap_array(Stabile_calc_g_176400_c2)[index] * cv))));
+}
+
+float Stabile_calc_g_192000(float cv){
+ int index;
+ index = int_clip(float_to_int((127.f * cv)),0,127);
+ return (float_wrap_array(Stabile_calc_g_192000_c0)[index] + (cv * (float_wrap_array(Stabile_calc_g_192000_c1)[index] + (float_wrap_array(Stabile_calc_g_192000_c2)[index] * cv))));
+}
+
+float Stabile_tune(float cv){
+ float fs;
+ fs = getSampleRate();
+ float g;
+ g = 0.f;
+ uint8_t _cond_66;
+ _cond_66 = (fs == 44100.f);
+ if(_cond_66){
+ g = Stabile_calc_g_44100(cv);
+ }
+ else
+ {
+ uint8_t _cond_65;
+ _cond_65 = (fs == 48000.f);
+ if(_cond_65){
+ g = Stabile_calc_g_48000(cv);
+ }
+ else
+ {
+ uint8_t _cond_64;
+ _cond_64 = (fs == 88200.f);
+ if(_cond_64){
+ g = Stabile_calc_g_88200(cv);
+ }
+ else
+ {
+ uint8_t _cond_63;
+ _cond_63 = (fs == 96000.f);
+ if(_cond_63){
+ g = Stabile_calc_g_96000(cv);
+ }
+ else
+ {
+ uint8_t _cond_62;
+ _cond_62 = (fs == 176400.f);
+ if(_cond_62){
+ g = Stabile_calc_g_176400(cv);
+ }
+ else
+ {
+ uint8_t _cond_61;
+ _cond_61 = (fs == 192000.f);
+ if(_cond_61){
+ g = Stabile_calc_g_192000(cv);
+ }
+ else
+ {
+ g = Stabile_calc_g(cv,getSampleRate());
+ }
+ }
+ }
+ }
+ }
+ }
+ return g;
+}
+
+void Stabile__ctx_type_8_init(Stabile__ctx_type_8 &_output_){
+ Stabile__ctx_type_8 _ctx;
+ _ctx.z2 = 0.f;
+ _ctx.z1 = 0.f;
+ _ctx.inv_den = 0.f;
+ _ctx.g = 0.f;
+ Util__ctx_type_3_init(_ctx._inst58);
+ Util__ctx_type_3_init(_ctx._inst57);
+ _ctx.R = 0.f;
+ Stabile_default(_ctx);
+ _output_ = _ctx;
+ return ;
+}
+
+void Stabile_process_init(Stabile__ctx_type_8 &_output_){
+ Stabile__ctx_type_8_init(_output_);
+ return ;
+}
+
+void Stabile_process(Stabile__ctx_type_8 &_ctx, float x, float cv, float q, float semblance, _tuple___real_real_real_real__ &_output_){
+ q = (q + 0.5f);
+ uint8_t _cond_67;
+ _cond_67 = (Util_change(_ctx._inst57,cv) || Util_change(_ctx._inst58,q));
+ if(_cond_67){
+ _ctx.g = Stabile_tune(cv);
+ _ctx.R = (1.f / (2.f * (q + 1e-18f)));
+ _ctx.inv_den = (1.f / (1.f + (2.f * _ctx.R * _ctx.g) + (_ctx.g * _ctx.g)));
+ }
+ float high;
+ high = ((x + (- (((2.f * _ctx.R) + _ctx.g) * _ctx.z1)) + (- _ctx.z2)) * _ctx.inv_den);
+ float band;
+ band = ((_ctx.g * high) + _ctx.z1);
+ float low;
+ low = ((_ctx.g * band) + _ctx.z2);
+ _ctx.z1 = ((_ctx.g * high) + band);
+ _ctx.z2 = ((_ctx.g * band) + low);
+ float sem;
+ sem = ((Util_fadeA(semblance) * low) + (Util_fadeB(semblance) * high));
+ _tuple___real_real_real_real__ _tuple_68;
+ {
+ _tuple_68.field_0 = low;
+ _tuple_68.field_1 = band;
+ _tuple_68.field_2 = high;
+ _tuple_68.field_3 = sem;
+ }
+ _output_ = _tuple_68;
+ return ;
+}
+
+void Stabile_default_init(Stabile__ctx_type_8 &_output_){
+ Stabile__ctx_type_8_init(_output_);
+ return ;
+}
+
+void Stabile_default(Stabile__ctx_type_8 &_ctx){
+ _ctx.g = Stabile_calc_g(0.f,getSampleRate());
+ _ctx.R = 1.f;
+ _ctx.inv_den = (1.f / (1.f + (_ctx.g * _ctx.g)));
+}
+
+void Tricore__ctx_type_0_init(Tricore__ctx_type_0 &_output_){
+ Tricore__ctx_type_0 _ctx;
+ _ctx.reset_state = 0;
+ _ctx.reset_phase = 0.f;
+ _ctx.phase = 0.f;
+ Util__ctx_type_2_init(_ctx._inst79);
+ Util__ctx_type_2_init(_ctx._inst78);
+ Util__ctx_type_17_init(_ctx._inst76);
+ _output_ = _ctx;
+ return ;
+}
+
+void Tricore_process_init(Tricore__ctx_type_0 &_output_){
+ Tricore__ctx_type_0_init(_output_);
+ return ;
+}
+
+float Tricore_process(Tricore__ctx_type_0 &_ctx, float cv, float reset, float disable){
+ uint8_t bdisable;
+ bdisable = (disable > 0.5f);
+ uint8_t _cond_85;
+ _cond_85 = bool_not(_ctx.reset_state);
+ if(_cond_85){
+ _ctx.phase = (_ctx.phase + Util_cvToRate(_ctx._inst76,cv));
+ uint8_t _cond_84;
+ _cond_84 = (_ctx.phase > 1.f);
+ if(_cond_84){
+ _ctx.phase = (_ctx.phase + -1.f);
+ }
+ }
+ float sine_out;
+ sine_out = Util_sine(_ctx.phase);
+ uint8_t _cond_86;
+ _cond_86 = (Util_edge(_ctx._inst78,(reset > 0.f)) || Util_edge(_ctx._inst79,bdisable));
+ if(_cond_86){
+ _ctx.reset_phase = 1.f;
+ _ctx.reset_state = 1;
+ }
+ float reset_out;
+ reset_out = 1.f;
+ if(_ctx.reset_state){
+ uint8_t _cond_88;
+ _cond_88 = (fabsf(_ctx.reset_phase) > 0.001f);
+ if(_cond_88){
+ float reset_speed;
+ reset_speed = 0.01f;
+ _ctx.reset_phase = (_ctx.reset_phase + (- (_ctx.reset_phase * reset_speed)));
+ }
+ else
+ {
+ uint8_t _cond_87;
+ _cond_87 = (_ctx.reset_phase > 0.001f);
+ if(bool_not(_cond_87)){ _ctx.reset_phase = 0.f; }
+ _ctx.reset_state = 0;
+ _ctx.phase = 0.f;
+ }
+ reset_out = _ctx.reset_phase;
+ }
+ return (reset_out * sine_out);
+}
+
+float Tohe_tone_k1(float g){
+ int index;
+ index = int_clip(float_to_int((15.5f * (g + 1.f))),0,31);
+ return (float_wrap_array(Tohe_tone_k1_c0)[index] + (g * (float_wrap_array(Tohe_tone_k1_c1)[index] + (float_wrap_array(Tohe_tone_k1_c2)[index] * g))));
+}
+
+float Tohe_tone_k0(float g){
+ int index;
+ index = int_clip(float_to_int((15.5f * (g + 1.f))),0,31);
+ return (float_wrap_array(Tohe_tone_k0_c0)[index] + (g * (float_wrap_array(Tohe_tone_k0_c1)[index] + (float_wrap_array(Tohe_tone_k0_c2)[index] * g))));
+}
+
+void Tohe__ctx_type_2_init(Tohe__ctx_type_2 &_output_){
+ Tohe__ctx_type_2 _ctx;
+ _ctx.w1 = 0.f;
+ _ctx.k1 = 0.f;
+ _ctx.k0 = 0.f;
+ _ctx.comp = 0.f;
+ Util__ctx_type_3_init(_ctx._inst92);
+ Tohe_start(_ctx);
+ _output_ = _ctx;
+ return ;
+}
+
+void Tohe_do_init(Tohe__ctx_type_2 &_output_){
+ Tohe__ctx_type_2_init(_output_);
+ return ;
+}
+
+float Tohe_do(Tohe__ctx_type_2 &_ctx, float x, float gain){
+ uint8_t _cond_95;
+ _cond_95 = Util_change(_ctx._inst92,gain);
+ if(_cond_95){
+ _ctx.k1 = Tohe_tone_k1(gain);
+ _ctx.k0 = Tohe_tone_k0(gain);
+ _ctx.comp = Util_map(fabsf(gain),0.f,1.f,1.f,1.8f);
+ }
+ float w0;
+ w0 = (x + (- (_ctx.k0 * _ctx.w1)));
+ float y0;
+ y0 = ((_ctx.k0 * w0) + _ctx.w1);
+ _ctx.w1 = w0;
+ float sign;
+ uint8_t _cond_96;
+ _cond_96 = (gain < 0.f);
+ if(_cond_96){ sign = -1.f; }
+ else
+ { sign = 1.f; }
+ return (((_ctx.k1 * (x + (sign * y0)) * 0.5f) + x) * _ctx.comp);
+}
+
+void Tohe_start_init(Tohe__ctx_type_2 &_output_){
+ Tohe__ctx_type_2_init(_output_);
+ return ;
+}
+
+void Tohe_start(Tohe__ctx_type_2 &_ctx){
+ _ctx.k1 = 0.f;
+ _ctx.k0 = -0.852723285867f;
+ _ctx.comp = 1.f;
+}
+
+void Swept__ctx_type_0_init(Swept__ctx_type_0 &_output_){
+ Swept__ctx_type_0 _ctx;
+ _ctx.out = 0.f;
+ Util__ctx_type_2_init(_ctx._inst98);
+ _output_ = _ctx;
+ return ;
+}
+
+void Swept_process_init(Swept__ctx_type_0 &_output_){
+ Swept__ctx_type_0_init(_output_);
+ return ;
+}
+
+float Swept_process(Swept__ctx_type_0 &_ctx, float gate, float start, float end, float rate){
+ uint8_t bgate;
+ bgate = (gate > 0.5f);
+ _ctx.out = (_ctx.out + ((end + (- _ctx.out)) * rate * 0.004f * Util_sampleRateScale()));
+ uint8_t _cond_104;
+ _cond_104 = Util_edge(_ctx._inst98,bgate);
+ if(_cond_104){
+ _ctx.out = start;
+ }
+ return _ctx.out;
+}
+
+void Swept_noteOn_init(Swept__ctx_type_0 &_output_){
+ Swept__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Swept_noteOn(Swept__ctx_type_0 &_ctx, int note, int velocity, int channel){
+}
+
+void Swept_noteOff_init(Swept__ctx_type_0 &_output_){
+ Swept__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Swept_noteOff(Swept__ctx_type_0 &_ctx, int note, int channel){
+}
+
+void Swept_controlChange_init(Swept__ctx_type_0 &_output_){
+ Swept__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Swept_controlChange(Swept__ctx_type_0 &_ctx, int control, int value, int channel){
+}
+
+void Swept_default_init(Swept__ctx_type_0 &_output_){
+ Swept__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Swept_default(Swept__ctx_type_0 &_ctx){
+}
+
+void Noise__ctx_type_0_init(Noise__ctx_type_0 &_output_){
+ Noise__ctx_type_0 _ctx;
+ _ctx.x2 = 0;
+ _ctx.x1 = 0;
+ Util__ctx_type_2_init(_ctx._inst106);
+ _output_ = _ctx;
+ return ;
+}
+
+void Noise_process_init(Noise__ctx_type_0 &_output_){
+ Noise__ctx_type_0_init(_output_);
+ return ;
+}
+
+float Noise_process(Noise__ctx_type_0 &_ctx, float gate){
+ _ctx.x1 = (((_ctx.x1 * 17389) + 7919) % 32768);
+ float y1;
+ y1 = (int_to_float(_ctx.x1) * 3.0517578125e-05f);
+ _ctx.x2 = (((_ctx.x2 * 27449) + 12553) % 32768);
+ float y2;
+ y2 = (int_to_float(_ctx.x2) * 3.0517578125e-05f);
+ float out;
+ out = (y1 + (- y2));
+ uint8_t _cond_112;
+ _cond_112 = Util_edge(_ctx._inst106,(gate > 0.1f));
+ if(_cond_112){
+ _ctx.x1 = 0;
+ _ctx.x2 = 0;
+ }
+ return out;
+}
+
+void Noise_noteOn_init(Noise__ctx_type_0 &_output_){
+ Noise__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Noise_noteOn(Noise__ctx_type_0 &_ctx, int note, int velocity, int channel){
+}
+
+void Noise_noteOff_init(Noise__ctx_type_0 &_output_){
+ Noise__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Noise_noteOff(Noise__ctx_type_0 &_ctx, int note, int channel){
+}
+
+void Noise_controlChange_init(Noise__ctx_type_0 &_output_){
+ Noise__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Noise_controlChange(Noise__ctx_type_0 &_ctx, int control, int value, int channel){
+}
+
+void Noise_default_init(Noise__ctx_type_0 &_output_){
+ Noise__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Noise_default(Noise__ctx_type_0 &_ctx){
+}
+
+void Decimate__ctx_type_0_init(Decimate__ctx_type_0 &_output_){
+ Decimate__ctx_type_0 _ctx;
+ _ctx.out = 0.f;
+ _ctx.count = 0;
+ _output_ = _ctx;
+ return ;
+}
+
+void Decimate_decimate_init(Decimate__ctx_type_0 &_output_){
+ Decimate__ctx_type_0_init(_output_);
+ return ;
+}
+
+float Decimate_decimate(Decimate__ctx_type_0 &_ctx, float in, float factor){
+ int n;
+ n = float_to_int((127.f * factor));
+ n = int_clip(n,0,127);
+ _ctx.count = (_ctx.count + 1);
+ uint8_t _cond_115;
+ _cond_115 = (_ctx.count > n);
+ if(_cond_115){
+ _ctx.count = 0;
+ _ctx.out = in;
+ }
+ return _ctx.out;
+}
+
+void Ahr__ctx_type_0_init(Ahr__ctx_type_0 &_output_){
+ Ahr__ctx_type_0 _ctx;
+ _ctx.target = 0.f;
+ _ctx.state = 0;
+ _ctx.rate = 0.f;
+ _ctx.out = 0.f;
+ _ctx.hold_phase = 0.f;
+ Util__ctx_type_2_init(_ctx._inst119);
+ Util__ctx_type_2_init(_ctx._inst117);
+ _output_ = _ctx;
+ return ;
+}
+
+void Ahr_do_init(Ahr__ctx_type_0 &_output_){
+ Ahr__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Ahr_do(Ahr__ctx_type_0 &_ctx, float gate, float a, float h, float r, _tuple___real_real__ &_output_){
+ int release;
+ release = 0;
+ int attack;
+ attack = 1;
+ int hold;
+ hold = 2;
+ int reset;
+ reset = 3;
+ uint8_t bgate;
+ bgate = (gate > 0.f);
+ uint8_t _cond_136;
+ _cond_136 = Util_edge(_ctx._inst117,bgate);
+ if(_cond_136){
+ _ctx.state = reset;
+ }
+ float resetting;
+ uint8_t _cond_145;
+ _cond_145 = (_ctx.state == reset);
+ if(_cond_145){ resetting = 1.f; }
+ else
+ { resetting = 0.f; }
+ uint8_t _cond_137;
+ _cond_137 = Util_edge(_ctx._inst119,(_ctx.out > 1024.f));
+ if(_cond_137){
+ _ctx.hold_phase = 0.f;
+ _ctx.state = hold;
+ }
+ uint8_t _cond_138;
+ _cond_138 = ((_ctx.out < 10.f) && (_ctx.state == reset));
+ if(_cond_138){
+ _ctx.state = attack;
+ }
+ uint8_t _cond_139;
+ _cond_139 = ((_ctx.hold_phase > 100.f) && (_ctx.state == hold));
+ if(_cond_139){
+ _ctx.state = release;
+ }
+ uint8_t _cond_140;
+ _cond_140 = (_ctx.state == reset);
+ if(_cond_140){
+ _ctx.rate = 1.81818181818f;
+ _ctx.target = 0.f;
+ }
+ uint8_t _cond_141;
+ _cond_141 = (_ctx.state == attack);
+ if(_cond_141){
+ _ctx.rate = (1.f / ((100.f * a) + 0.05f));
+ _ctx.target = 1228.8f;
+ }
+ uint8_t _cond_142;
+ _cond_142 = (_ctx.state == hold);
+ if(_cond_142){
+ float hrate;
+ hrate = (1.f / ((100.f * h) + 0.05f));
+ _ctx.hold_phase = (_ctx.hold_phase + hrate);
+ }
+ uint8_t _cond_143;
+ _cond_143 = (_ctx.state == release);
+ if(_cond_143){
+ _ctx.rate = (1.f / ((200.f * r) + 0.01f));
+ _ctx.target = 0.f;
+ }
+ _ctx.out = (_ctx.out + ((_ctx.target + (- _ctx.out)) * _ctx.rate * 0.005f * Util_sampleRateScale()));
+ _tuple___real_real__ _tuple_144;
+ {
+ _tuple_144.field_0 = float_clip((_ctx.out * 0.0009765625f),0.f,1.f);
+ _tuple_144.field_1 = resetting;
+ }
+ _output_ = _tuple_144;
+ return ;
+}
+
+void Ahr__ctx_type_1_init(Ahr__ctx_type_1 &_output_){
+ Ahr__ctx_type_1 _ctx;
+ _ctx.knob3 = 0.f;
+ _ctx.knob2 = 0.f;
+ _ctx.knob1 = 0.f;
+ Ahr__ctx_type_0_init(_ctx._inst128);
+ _output_ = _ctx;
+ return ;
+}
+
+void Ahr_process_init(Ahr__ctx_type_1 &_output_){
+ Ahr__ctx_type_1_init(_output_);
+ return ;
+}
+
+void Ahr_process(Ahr__ctx_type_1 &_ctx, float gate, _tuple___real_real__ &_output_){
+ _tuple___real_real__ _call_147;
+ Ahr_do(_ctx._inst128,gate,_ctx.knob1,_ctx.knob2,_ctx.knob3,_call_147);
+ _output_ = _call_147;
+ return ;
+}
+
+void Ahr_noteOn_init(Ahr__ctx_type_1 &_output_){
+ Ahr__ctx_type_1_init(_output_);
+ return ;
+}
+
+void Ahr_noteOn(Ahr__ctx_type_1 &_ctx, int note, int velocity, int channel){
+}
+
+void Ahr_noteOff_init(Ahr__ctx_type_1 &_output_){
+ Ahr__ctx_type_1_init(_output_);
+ return ;
+}
+
+void Ahr_noteOff(Ahr__ctx_type_1 &_ctx, int note, int channel){
+}
+
+void Ahr_controlChange_init(Ahr__ctx_type_1 &_output_){
+ Ahr__ctx_type_1_init(_output_);
+ return ;
+}
+
+void Ahr_controlChange(Ahr__ctx_type_1 &_ctx, int control, int value, int channel){
+ uint8_t _cond_149;
+ _cond_149 = (control == 1);
+ if(_cond_149){
+ _ctx.knob1 = (int_to_float(value) * 0.00787401574803f);
+ }
+ uint8_t _cond_150;
+ _cond_150 = (control == 2);
+ if(_cond_150){
+ _ctx.knob2 = (int_to_float(value) * 0.00787401574803f);
+ }
+ uint8_t _cond_151;
+ _cond_151 = (control == 3);
+ if(_cond_151){
+ _ctx.knob3 = (int_to_float(value) * 0.00787401574803f);
+ }
+}
+
+void Ahr_default_init(Ahr__ctx_type_1 &_output_){
+ Ahr__ctx_type_1_init(_output_);
+ return ;
+}
+
+void Ahr_default(Ahr__ctx_type_1 &_ctx){
+ _ctx.knob1 = 0.f;
+ _ctx.knob2 = 0.5f;
+ _ctx.knob3 = 0.5f;
+}
+
+void Trummor__ctx_type_0_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0 _ctx;
+ _ctx.tone = 0.f;
+ _ctx.pitch = 0.f;
+ _ctx.level2 = 0.f;
+ _ctx.level1 = 0.f;
+ _ctx.int_osc = 0.f;
+ _ctx.int_noise = 0.f;
+ _ctx.ext_osc = 0.f;
+ _ctx.ext_noise = 0.f;
+ _ctx.env2_scale = 0.f;
+ _ctx.env2_r = 0.f;
+ _ctx.env2_h = 0.f;
+ _ctx.env2_a = 0.f;
+ _ctx.env1_scale = 0.f;
+ _ctx.env1_r = 0.f;
+ _ctx.env1_h = 0.f;
+ _ctx.env1_a = 0.f;
+ _ctx.drive = 0.f;
+ _ctx.decimate = 0.f;
+ _ctx.bend = 0.f;
+ Tohe__ctx_type_2_init(_ctx._inst167);
+ Decimate__ctx_type_0_init(_ctx._inst166);
+ Noise__ctx_type_0_init(_ctx._inst165);
+ Ahr__ctx_type_0_init(_ctx._inst164);
+ Tricore__ctx_type_0_init(_ctx._inst163);
+ Swept__ctx_type_0_init(_ctx._inst162);
+ Ahr__ctx_type_0_init(_ctx._inst161);
+ _output_ = _ctx;
+ return ;
+}
+
+void Trummor_do_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_do(Trummor__ctx_type_0 &_ctx, float gate, float osc_in, float noise_in, _tuple___real_real_real_real__ &_output_){
+ float osc_env;
+ float env_reset;
+ _tuple___real_real__ _call_185;
+ Ahr_do(_ctx._inst161,gate,(_ctx.env1_scale * _ctx.env1_a),(_ctx.env1_scale * _ctx.env1_h),(_ctx.env1_scale * _ctx.env1_r),_call_185);
+ osc_env = _call_185.field_0;env_reset = _call_185.field_1;
+ float cv;
+ cv = Swept_process(_ctx._inst162,(1.f + (- env_reset)),(_ctx.pitch + (_ctx.bend * 0.4f)),_ctx.pitch,0.1f);
+ float osc;
+ osc = ((_ctx.int_osc * Tricore_process(_ctx._inst163,cv,0.f,env_reset)) + (_ctx.ext_osc * osc_in));
+ float osc_sat;
+ osc_sat = Util_saturate(((_ctx.drive + 1.f) * osc));
+ float noise_env;
+ _tuple___real_real__ _call_186;
+ Ahr_do(_ctx._inst164,gate,(_ctx.env2_scale * _ctx.env2_a),(_ctx.env2_scale * _ctx.env2_h),(_ctx.env2_scale * _ctx.env2_r),_call_186);
+ noise_env = _call_186.field_0;
+ float noise_osc;
+ uint8_t _cond_190;
+ _cond_190 = (_ctx.decimate == 0.f);
+ if(_cond_190){ noise_osc = ((_ctx.int_noise * (float_random() + -0.5f)) + (_ctx.ext_noise * noise_in)); }
+ else
+ { noise_osc = Decimate_decimate(_ctx._inst166,((_ctx.int_noise * Noise_process(_ctx._inst165,gate)) + (_ctx.ext_noise * noise_in)),_ctx.decimate); }
+ noise_osc = Tohe_do(_ctx._inst167,noise_osc,_ctx.tone);
+ float output;
+ output = ((_ctx.level1 * osc_env * osc_sat) + (_ctx.level2 * noise_env * noise_osc));
+ _tuple___real_real_real_real__ _tuple_187;
+ {
+ _tuple_187.field_0 = output;
+ _tuple_187.field_1 = cv;
+ _tuple_187.field_2 = osc_env;
+ _tuple_187.field_3 = noise_env;
+ }
+ _output_ = _tuple_187;
+ return ;
+}
+
+void Trummor_setLevel1_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setLevel1(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.level1 = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setLevel2_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setLevel2(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.level2 = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setEnv1A_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv1A(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.env1_a = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setEnv1H_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv1H(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.env1_h = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setEnv1R_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv1R(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.env1_r = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setEnv2A_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv2A(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.env2_a = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setEnv2H_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv2H(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.env2_h = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setEnv2R_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv2R(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.env2_r = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setPitch_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setPitch(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.pitch = float_clip(value,-1.f,1.f);
+}
+
+void Trummor_setBend_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setBend(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.bend = float_clip(value,-1.f,1.f);
+}
+
+void Trummor_setDrive_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setDrive(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.drive = float_clip(value,0.f,1.f);
+}
+
+void Trummor_setTone_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setTone(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.tone = float_clip(value,-1.f,1.f);
+}
+
+void Trummor_setOscBlend_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setOscBlend(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.int_osc = Util_fadeA(value);
+ _ctx.ext_osc = Util_fadeB(value);
+}
+
+void Trummor_setNoiseBlend_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setNoiseBlend(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.int_noise = Util_fadeA(value);
+ _ctx.ext_noise = Util_fadeB(value);
+}
+
+void Trummor_setEnv1Scale_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv1Scale(Trummor__ctx_type_0 &_ctx, float value){
+ uint8_t _cond_192;
+ _cond_192 = (value < 0.5f);
+ if(_cond_192){ _ctx.env1_scale = 1.f; }
+ else
+ { _ctx.env1_scale = 0.2f; }
+}
+
+void Trummor_setEnv2Scale_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setEnv2Scale(Trummor__ctx_type_0 &_ctx, float value){
+ uint8_t _cond_193;
+ _cond_193 = (value < 0.5f);
+ if(_cond_193){ _ctx.env2_scale = 1.f; }
+ else
+ { _ctx.env2_scale = 0.2f; }
+}
+
+void Trummor_setDecimate_init(Trummor__ctx_type_0 &_output_){
+ Trummor__ctx_type_0_init(_output_);
+ return ;
+}
+
+void Trummor_setDecimate(Trummor__ctx_type_0 &_ctx, float value){
+ _ctx.decimate = float_clip(value,0.f,1.f);
+}
+
+float Tangents_tune(float cut, float fs, float oversampling){
+ float f;
+ f = Util_cvTokHz(cut);
+ float fh;
+ fh = ((6.28318530718f * f) / (oversampling * fs));
+ return fh;
+}
+
+float Tangents_tune_44100(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Tangents_tune_44100_c0)[index] + (cut * (float_wrap_array(Tangents_tune_44100_c1)[index] + (float_wrap_array(Tangents_tune_44100_c2)[index] * cut))));
+}
+
+float Tangents_tune_48000(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Tangents_tune_48000_c0)[index] + (cut * (float_wrap_array(Tangents_tune_48000_c1)[index] + (float_wrap_array(Tangents_tune_48000_c2)[index] * cut))));
+}
+
+float Tangents_tune_88200(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Tangents_tune_88200_c0)[index] + (cut * (float_wrap_array(Tangents_tune_88200_c1)[index] + (float_wrap_array(Tangents_tune_88200_c2)[index] * cut))));
+}
+
+float Tangents_tune_96000(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Tangents_tune_96000_c0)[index] + (cut * (float_wrap_array(Tangents_tune_96000_c1)[index] + (float_wrap_array(Tangents_tune_96000_c2)[index] * cut))));
+}
+
+float Tangents_tune_176400(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Tangents_tune_176400_c0)[index] + (cut * (float_wrap_array(Tangents_tune_176400_c1)[index] + (float_wrap_array(Tangents_tune_176400_c2)[index] * cut))));
+}
+
+float Tangents_tune_192000(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Tangents_tune_192000_c0)[index] + (cut * (float_wrap_array(Tangents_tune_192000_c1)[index] + (float_wrap_array(Tangents_tune_192000_c2)[index] * cut))));
+}
+
+float Tangents_getTune(float cut, float fs){
+ uint8_t _cond_238;
+ _cond_238 = (fs == 44100.f);
+ if(_cond_238){
+ return Tangents_tune_44100(cut);
+ }
+ else
+ {
+ uint8_t _cond_237;
+ _cond_237 = (fs == 48000.f);
+ if(_cond_237){
+ return Tangents_tune_48000(cut);
+ }
+ else
+ {
+ uint8_t _cond_236;
+ _cond_236 = (fs == 88200.f);
+ if(_cond_236){
+ return Tangents_tune_88200(cut);
+ }
+ else
+ {
+ uint8_t _cond_235;
+ _cond_235 = (fs == 96000.f);
+ if(_cond_235){
+ return Tangents_tune_96000(cut);
+ }
+ else
+ {
+ uint8_t _cond_234;
+ _cond_234 = (fs == 176400.f);
+ if(_cond_234){
+ return Tangents_tune_176400(cut);
+ }
+ else
+ {
+ uint8_t _cond_233;
+ _cond_233 = (fs == 192000.f);
+ if(_cond_233){
+ return Tangents_tune_192000(cut);
+ }
+ else
+ {
+ return Tangents_tune(cut,fs,4.f);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void Tangents__ctx_type_8_init(Tangents__ctx_type_8 &_output_){
+ Tangents__ctx_type_8 _ctx;
+ _ctx.p1 = 0.f;
+ _ctx.p0 = 0.f;
+ _output_ = _ctx;
+ return ;
+}
+
+void Tangents_heun_init(Tangents__ctx_type_8 &_output_){
+ Tangents__ctx_type_8_init(_output_);
+ return ;
+}
+
+float Tangents_heun(Tangents__ctx_type_8 &_ctx, float lp, float bp, float hp, float wh, float cut, float res){
+ float resfactor;
+ resfactor = 3.f;
+ float yt;
+ yt = Util_cubic_clipper((hp + _ctx.p0));
+ float feedt;
+ feedt = (resfactor * res * yt);
+ float dpt0;
+ dpt0 = ((bp + (- hp) + feedt + (- _ctx.p0) + _ctx.p1) * wh);
+ float dpt1;
+ dpt1 = (((-2.f * bp) + hp + lp + (-2.f * feedt) + _ctx.p0 + (-2.f * _ctx.p1)) * wh);
+ float pt0;
+ pt0 = (_ctx.p0 + dpt0);
+ float pt1;
+ pt1 = (_ctx.p1 + dpt1);
+ float yn;
+ yn = Util_cubic_clipper((hp + pt0));
+ float feed;
+ feed = (resfactor * res * yn);
+ float dp0;
+ dp0 = ((bp + (- hp) + feed + (- pt0) + pt1) * wh);
+ float dp1;
+ dp1 = (((-2.f * bp) + hp + lp + (-2.f * feed) + pt0 + (-2.f * pt1)) * wh);
+ _ctx.p0 = (_ctx.p0 + ((dp0 + dpt0) * 0.5f));
+ _ctx.p1 = (_ctx.p1 + ((dp1 + dpt1) * 0.5f));
+ return Util_cubic_clipper((hp + _ctx.p0));
+}
+
+void Tangents__ctx_type_9_init(Tangents__ctx_type_9 &_output_){
+ Tangents__ctx_type_9 _ctx;
+ Tangents__ctx_type_8_init(_ctx.h);
+ _ctx.fh = 0.f;
+ Util__ctx_type_3_init(_ctx._inst223);
+ Util__ctx_type_3_init(_ctx._inst222);
+ _output_ = _ctx;
+ return ;
+}
+
+void Tangents_process_heun_init(Tangents__ctx_type_9 &_output_){
+ Tangents__ctx_type_9_init(_output_);
+ return ;
+}
+
+float Tangents_process_heun(Tangents__ctx_type_9 &_ctx, float lp, float bp, float hp, float cut, float res){
+ float fs;
+ fs = getSampleRate();
+ uint8_t _cond_239;
+ _cond_239 = (Util_change(_ctx._inst222,cut) || Util_change(_ctx._inst223,fs));
+ if(_cond_239){
+ _ctx.fh = Tangents_getTune(cut,fs);
+ }
+ float out;
+ out = 0.f;
+ uint8_t _cond_241;
+ _cond_241 = ((fs == 176400.f) || (fs == 192000.f));
+ if(_cond_241){
+ out = Tangents_heun(_ctx.h,lp,bp,hp,_ctx.fh,cut,res);
+ }
+ else
+ {
+ uint8_t _cond_240;
+ _cond_240 = ((fs == 88200.f) || (fs == 96000.f));
+ if(_cond_240){
+ out = Tangents_heun(_ctx.h,lp,bp,hp,_ctx.fh,cut,res);
+ out = Tangents_heun(_ctx.h,lp,bp,hp,_ctx.fh,cut,res);
+ }
+ else
+ {
+ out = Tangents_heun(_ctx.h,lp,bp,hp,_ctx.fh,cut,res);
+ out = Tangents_heun(_ctx.h,lp,bp,hp,_ctx.fh,cut,res);
+ out = Tangents_heun(_ctx.h,lp,bp,hp,_ctx.fh,cut,res);
+ out = Tangents_heun(_ctx.h,lp,bp,hp,_ctx.fh,cut,res);
+ }
+ }
+ return out;
+}
+
+void Tangents__ctx_type_10_init(Tangents__ctx_type_10 &_output_){
+ Tangents__ctx_type_10 _ctx;
+ _ctx.x1 = 0;
+ _output_ = _ctx;
+ return ;
+}
+
+void Tangents_simple_noise_init(Tangents__ctx_type_10 &_output_){
+ Tangents__ctx_type_10_init(_output_);
+ return ;
+}
+
+float Tangents_simple_noise(Tangents__ctx_type_10 &_ctx){
+ _ctx.x1 = (((_ctx.x1 * 17389) + 7919) % 32768);
+ float y1;
+ y1 = (int_to_float(_ctx.x1) * 3.0517578125e-05f);
+ return y1;
+}
+
+void Tangents__ctx_type_11_init(Tangents__ctx_type_11 &_output_){
+ Tangents__ctx_type_11 _ctx;
+ Tangents__ctx_type_9_init(_ctx._inst232);
+ Util__ctx_type_18_init(_ctx._inst231);
+ _output_ = _ctx;
+ return ;
+}
+
+void Tangents_process_init(Tangents__ctx_type_11 &_output_){
+ Tangents__ctx_type_11_init(_output_);
+ return ;
+}
+
+float Tangents_process(Tangents__ctx_type_11 &_ctx, float lp, float bp, float hp, float cut_in, float res_in){
+ float res;
+ res = Util_polylog(res_in);
+ float comp;
+ comp = Util_map(res,0.9f,1.f,0.f,0.25f);
+ float limit;
+ uint8_t _cond_242;
+ _cond_242 = (comp > 0.f);
+ if(_cond_242){ limit = (0.9f + (- comp)); }
+ else
+ { limit = 0.9f; }
+ float cut;
+ cut = float_clip(cut_in,0.f,limit);
+ float noise;
+ noise = (Util_simple_noise(_ctx._inst231) * 0.005f);
+ return Tangents_process_heun(_ctx._inst232,(lp + noise),bp,hp,cut,res);
+}
+
+void Rescomb__ctx_type_0_init(Rescomb__ctx_type_0 &_output_){
+ Rescomb__ctx_type_0 _ctx;
+ _ctx.write_pos = 0;
+ float_init_array(3000,0.f,_ctx.buffer);
+ _output_ = _ctx;
+ return ;
+}
+
+void Rescomb_delay_init(Rescomb__ctx_type_0 &_output_){
+ Rescomb__ctx_type_0_init(_output_);
+ return ;
+}
+
+float Rescomb_delay(Rescomb__ctx_type_0 &_ctx, float x, float cv){
+ _ctx.write_pos = ((_ctx.write_pos + 1) % 3000);
+ float_set(_ctx.buffer,_ctx.write_pos,x);
+ float r_size;
+ r_size = 3000.f;
+ float r_index;
+ r_index = fmodf((int_to_float(_ctx.write_pos) + (- (Util_cvToperiodUnit(cv) * getSampleRate()))),r_size);
+ uint8_t _cond_250;
+ _cond_250 = (r_index < 0.f);
+ if(_cond_250){ r_index = (r_size + r_index); }
+ int t1;
+ t1 = (float_to_int(floorf(r_index)) % 3000);
+ int t2;
+ t2 = ((t1 + 1) % 3000);
+ float decimal;
+ decimal = (r_index + (- int_to_float(t1)));
+ float x1;
+ x1 = float_get(_ctx.buffer,t1);
+ float x2;
+ x2 = float_get(_ctx.buffer,t2);
+ float ret;
+ ret = (((x2 + (- x1)) * decimal) + x1);
+ return ret;
+}
+
+float Rescomb_toneCurve(float tone){
+ int index;
+ index = int_clip(float_to_int((26.25f * (tone + 1.2f))),0,63);
+ return (float_wrap_array(Rescomb_toneCurve_c0)[index] + (tone * (float_wrap_array(Rescomb_toneCurve_c1)[index] + (float_wrap_array(Rescomb_toneCurve_c2)[index] * tone))));
+}
+
+void Rescomb__ctx_type_2_init(Rescomb__ctx_type_2 &_output_){
+ Rescomb__ctx_type_2 _ctx;
+ _ctx.stone = 0.f;
+ _ctx.output = 0.f;
+ Rescomb__ctx_type_0_init(_ctx._inst249);
+ Util__ctx_type_9_init(_ctx._inst248);
+ Util__ctx_type_3_init(_ctx._inst246);
+ _output_ = _ctx;
+ return ;
+}
+
+void Rescomb_do_init(Rescomb__ctx_type_2 &_output_){
+ Rescomb__ctx_type_2_init(_output_);
+ return ;
+}
+
+float Rescomb_do(Rescomb__ctx_type_2 &_ctx, float in, float cv, float tone, float res){
+ uint8_t _cond_252;
+ _cond_252 = Util_change(_ctx._inst246,tone);
+ if(_cond_252){
+ _ctx.stone = Rescomb_toneCurve(tone);
+ }
+ float feedback;
+ feedback = Util_dcblock(_ctx._inst248,(_ctx.output * res));
+ float saturated_input;
+ saturated_input = Util_stanh((in + feedback));
+ _ctx.output = ((_ctx.stone * Rescomb_delay(_ctx._inst249,saturated_input,cv)) + in);
+ return Util_stanh(_ctx.output);
+}
+
+float Lateralus_tune(float cut, float fs, float oversampling){
+ float f;
+ f = Util_cvTokHz(cut);
+ float fh;
+ fh = ((6.28318530718f * f) / (oversampling * fs));
+ return fh;
+}
+
+float Lateralus_tune_44100(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Lateralus_tune_44100_c0)[index] + (cut * (float_wrap_array(Lateralus_tune_44100_c1)[index] + (float_wrap_array(Lateralus_tune_44100_c2)[index] * cut))));
+}
+
+float Lateralus_tune_48000(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Lateralus_tune_48000_c0)[index] + (cut * (float_wrap_array(Lateralus_tune_48000_c1)[index] + (float_wrap_array(Lateralus_tune_48000_c2)[index] * cut))));
+}
+
+float Lateralus_tune_88200(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Lateralus_tune_88200_c0)[index] + (cut * (float_wrap_array(Lateralus_tune_88200_c1)[index] + (float_wrap_array(Lateralus_tune_88200_c2)[index] * cut))));
+}
+
+float Lateralus_tune_96000(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Lateralus_tune_96000_c0)[index] + (cut * (float_wrap_array(Lateralus_tune_96000_c1)[index] + (float_wrap_array(Lateralus_tune_96000_c2)[index] * cut))));
+}
+
+float Lateralus_tune_176400(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Lateralus_tune_176400_c0)[index] + (cut * (float_wrap_array(Lateralus_tune_176400_c1)[index] + (float_wrap_array(Lateralus_tune_176400_c2)[index] * cut))));
+}
+
+float Lateralus_tune_192000(float cut){
+ int index;
+ index = int_clip(float_to_int((127.f * cut)),0,127);
+ return (float_wrap_array(Lateralus_tune_192000_c0)[index] + (cut * (float_wrap_array(Lateralus_tune_192000_c1)[index] + (float_wrap_array(Lateralus_tune_192000_c2)[index] * cut))));
+}
+
+float Lateralus_getTune(float cut, float fs){
+ uint8_t _cond_290;
+ _cond_290 = (fs == 44100.f);
+ if(_cond_290){
+ return Lateralus_tune_44100(cut);
+ }
+ else
+ {
+ uint8_t _cond_289;
+ _cond_289 = (fs == 48000.f);
+ if(_cond_289){
+ return Lateralus_tune_48000(cut);
+ }
+ else
+ {
+ uint8_t _cond_288;
+ _cond_288 = (fs == 88200.f);
+ if(_cond_288){
+ return Lateralus_tune_88200(cut);
+ }
+ else
+ {
+ uint8_t _cond_287;
+ _cond_287 = (fs == 96000.f);
+ if(_cond_287){
+ return Lateralus_tune_96000(cut);
+ }
+ else
+ {
+ uint8_t _cond_286;
+ _cond_286 = (fs == 176400.f);
+ if(_cond_286){
+ return Lateralus_tune_176400(cut);
+ }
+ else
+ {
+ uint8_t _cond_285;
+ _cond_285 = (fs == 192000.f);
+ if(_cond_285){
+ return Lateralus_tune_192000(cut);
+ }
+ else
+ {
+ return Lateralus_tune(cut,fs,4.f);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void Lateralus__ctx_type_8_init(Lateralus__ctx_type_8 &_output_){
+ Lateralus__ctx_type_8 _ctx;
+ _ctx.p3 = 0.f;
+ _ctx.p2 = 0.f;
+ _ctx.p1 = 0.f;
+ _ctx.p0 = 0.f;
+ _output_ = _ctx;
+ return ;
+}
+
+void Lateralus_heun_init(Lateralus__ctx_type_8 &_output_){
+ Lateralus__ctx_type_8_init(_output_);
+ return ;
+}
+
+void Lateralus_heun(Lateralus__ctx_type_8 &_ctx, float input, float fh, float res, _tuple___real_real__ &_output_){
+ float wt0;
+ wt0 = Util_cubic_clipper((input + (-4.f * res * _ctx.p3)));
+ float wt1;
+ wt1 = Util_cubic_clipper(_ctx.p0);
+ float dpt0;
+ dpt0 = ((wt0 + (- wt1)) * fh);
+ float wt3;
+ wt3 = Util_cubic_clipper(_ctx.p1);
+ float dpt1;
+ dpt1 = ((wt1 + (- wt3)) * fh);
+ float wt5;
+ wt5 = Util_cubic_clipper(_ctx.p2);
+ float dpt2;
+ dpt2 = ((wt3 + (- wt5)) * fh);
+ float wt7;
+ wt7 = Util_cubic_clipper(_ctx.p3);
+ float dpt3;
+ dpt3 = ((wt5 + (- wt7)) * fh);
+ float pt0;
+ pt0 = (_ctx.p0 + dpt0);
+ float pt1;
+ pt1 = (_ctx.p1 + dpt1);
+ float pt2;
+ pt2 = (_ctx.p2 + dpt2);
+ float pt3;
+ pt3 = (_ctx.p3 + dpt3);
+ float w0;
+ w0 = Util_cubic_clipper((input + (-4.f * res * pt3)));
+ float w1;
+ w1 = Util_cubic_clipper(pt0);
+ float dp0;
+ dp0 = ((w0 + (- w1)) * fh);
+ float w3;
+ w3 = Util_cubic_clipper(pt1);
+ float dp1;
+ dp1 = ((w1 + (- w3)) * fh);
+ float w5;
+ w5 = Util_cubic_clipper(pt2);
+ float dp2;
+ dp2 = ((w3 + (- w5)) * fh);
+ float w7;
+ w7 = Util_cubic_clipper(pt3);
+ float dp3;
+ dp3 = ((w5 + (- w7)) * fh);
+ _ctx.p0 = (_ctx.p0 + ((dp0 + dpt0) * 0.5f));
+ _ctx.p1 = (_ctx.p1 + ((dp1 + dpt1) * 0.5f));
+ _ctx.p2 = (_ctx.p2 + ((dp2 + dpt2) * 0.5f));
+ _ctx.p3 = (_ctx.p3 + ((dp3 + dpt3) * 0.5f));
+ _tuple___real_real__ _tuple_291;
+ {
+ _tuple_291.field_0 = _ctx.p1;
+ _tuple_291.field_1 = _ctx.p3;
+ }
+ _output_ = _tuple_291;
+ return ;
+}
+
+void Lateralus__ctx_type_9_init(Lateralus__ctx_type_9 &_output_){
+ Lateralus__ctx_type_9 _ctx;
+ Lateralus__ctx_type_8_init(_ctx.h);
+ _ctx.fh = 0.f;
+ Util__ctx_type_3_init(_ctx._inst276);
+ Util__ctx_type_3_init(_ctx._inst275);
+ _output_ = _ctx;
+ return ;
+}
+
+void Lateralus_process_heun_init(Lateralus__ctx_type_9 &_output_){
+ Lateralus__ctx_type_9_init(_output_);
+ return ;
+}
+
+void Lateralus_process_heun(Lateralus__ctx_type_9 &_ctx, float input, float cut, float res, _tuple___real_real__ &_output_){
+ float fs;
+ fs = getSampleRate();
+ uint8_t _cond_293;
+ _cond_293 = (Util_change(_ctx._inst275,cut) || Util_change(_ctx._inst276,fs));
+ if(_cond_293){
+ _ctx.fh = Lateralus_getTune(cut,fs);
+ }
+ float db12;
+ float db24;
+ db12 = 0.f;
+ db24 = 0.f;
+ uint8_t _cond_310;
+ _cond_310 = ((fs == 176400.f) || (fs == 192000.f));
+ if(_cond_310){
+ _tuple___real_real__ _call_295;
+ Lateralus_heun(_ctx.h,input,_ctx.fh,res,_call_295);
+ db12 = _call_295.field_0;db24 = _call_295.field_1;
+ }
+ else
+ {
+ uint8_t _cond_309;
+ _cond_309 = ((fs == 88200.f) || (fs == 96000.f));
+ if(_cond_309){
+ _tuple___real_real__ _call_297;
+ Lateralus_heun(_ctx.h,input,_ctx.fh,res,_call_297);
+ db12 = _call_297.field_0;db24 = _call_297.field_1;
+ _tuple___real_real__ _call_298;
+ Lateralus_heun(_ctx.h,input,_ctx.fh,res,_call_298);
+ db12 = _call_298.field_0;db24 = _call_298.field_1;
+ }
+ else
+ {
+ _tuple___real_real__ _call_301;
+ Lateralus_heun(_ctx.h,input,_ctx.fh,res,_call_301);
+ db12 = _call_301.field_0;db24 = _call_301.field_1;
+ _tuple___real_real__ _call_302;
+ Lateralus_heun(_ctx.h,input,_ctx.fh,res,_call_302);
+ db12 = _call_302.field_0;db24 = _call_302.field_1;
+ _tuple___real_real__ _call_303;
+ Lateralus_heun(_ctx.h,input,_ctx.fh,res,_call_303);
+ db12 = _call_303.field_0;db24 = _call_303.field_1;
+ _tuple___real_real__ _call_304;
+ Lateralus_heun(_ctx.h,input,_ctx.fh,res,_call_304);
+ db12 = _call_304.field_0;db24 = _call_304.field_1;
+ }
+ }
+ _tuple___real_real__ _tuple_311;
+ {
+ _tuple_311.field_0 = (db12 * (1.f + (res * 0.5f)));
+ _tuple_311.field_1 = (db24 * (1.f + res));
+ }
+ _output_ = _tuple_311;
+ return ;
+}
+
+void Lateralus__ctx_type_10_init(Lateralus__ctx_type_10 &_output_){
+ Lateralus__ctx_type_10 _ctx;
+ Lateralus__ctx_type_9_init(_ctx._inst284);
+ Util__ctx_type_18_init(_ctx._inst283);
+ _output_ = _ctx;
+ return ;
+}
+
+void Lateralus_process_init(Lateralus__ctx_type_10 &_output_){
+ Lateralus__ctx_type_10_init(_output_);
+ return ;
+}
+
+void Lateralus_process(Lateralus__ctx_type_10 &_ctx, float input, float cut_in, float res_in, _tuple___real_real__ &_output_){
+ float res;
+ res = Util_polylog(res_in);
+ float comp;
+ comp = Util_map(res,0.9f,1.f,0.f,0.25f);
+ float limit;
+ uint8_t _cond_314;
+ _cond_314 = (comp > 0.f);
+ if(_cond_314){ limit = (0.9f + (- comp)); }
+ else
+ { limit = 0.9f; }
+ float cut;
+ cut = float_clip(cut_in,0.f,limit);
+ float noise;
+ noise = (Util_simple_noise(_ctx._inst283) * 0.005f);
+ _tuple___real_real__ _call_313;
+ Lateralus_process_heun(_ctx._inst284,(input + noise),cut,(res * 1.1f),_call_313);
+ _output_ = _call_313;
+ return ;
+}
+
+float Debriatus_saturate(float x){
+ int index;
+ index = int_clip(float_to_int((5.f * (x + 24.f))),0,240);
+ return (float_wrap_array(Debriatus_saturate_c0)[index] + (x * (float_wrap_array(Debriatus_saturate_c1)[index] + (float_wrap_array(Debriatus_saturate_c2)[index] * x))));
+}
+
+float Debriatus_factor(float cv){
+ int index;
+ index = int_clip(float_to_int((127.f * cv)),0,127);
+ return (float_wrap_array(Debriatus_factor_c0)[index] + (cv * (float_wrap_array(Debriatus_factor_c1)[index] + (float_wrap_array(Debriatus_factor_c2)[index] * cv))));
+}
+
+float Debriatus_crush(float i, float cv){
+ float out;
+ out = i;
+ uint8_t _cond_383;
+ _cond_383 = (cv == 0.f);
+ if(_cond_383){
+ out = i;
+ }
+ else
+ {
+ float b;
+ b = Debriatus_factor(cv);
+ int x;
+ x = float_to_int((i * b));
+ out = (int_to_float(x) / b);
+ }
+ return out;
+}
+
+float Debriatus_fold(float signal, float level){
+ float sign;
+ uint8_t _cond_384;
+ _cond_384 = (signal > 0.f);
+ if(_cond_384){ sign = 1.f; }
+ else
+ { sign = -1.f; }
+ float amp;
+ amp = (fabsf(signal) * ((8.f * level) + 1.f));
+ float base;
+ base = floorf(amp);
+ float delta;
+ delta = (amp + (- base));
+ float out;
+ uint8_t _cond_385;
+ _cond_385 = ((float_to_int(base) % 2) != 0);
+ if(_cond_385){ out = (1.f + (- delta)); }
+ else
+ { out = delta; }
+ return (sign * out);
+}
+
+float Debriatus_process(float input, float fold, float crush, float distort, float saturate){
+ float x;
+ x = Debriatus_fold(input,fold);
+ float y;
+ y = Debriatus_crush(x,crush);
+ float z;
+ z = ((y * (1.f + (-2.f * distort))) + (y * y * y * distort * 8.f) + (- distort));
+ float out;
+ out = Debriatus_saturate((z * (1.f + (saturate * 8.f))));
+ return out;
+}
+
+void VultEngine__ctx_type_0_init(VultEngine__ctx_type_0 &_output_){
+ VultEngine__ctx_type_0 _ctx;
+ Rescomb__ctx_type_2_init(_ctx.inst);
+ _output_ = _ctx;
+ return ;
+}
+
+void VultEngine_rescomb_init(VultEngine__ctx_type_0 &_output_){
+ VultEngine__ctx_type_0_init(_output_);
+ return ;
+}
+
+float VultEngine_rescomb(VultEngine__ctx_type_0 &_ctx, float in, float cv_in, float tone_in, float res_in){
+ float i;
+ i = float_clip(in,-10.f,10.f);
+ float cv;
+ cv = float_clip(cv_in,0.f,1.f);
+ float tone;
+ tone = float_clip(tone_in,-1.05f,1.05f);
+ float res;
+ res = float_clip(res_in,-1.1f,1.1f);
+ return Rescomb_do(_ctx.inst,i,cv,tone,res);
+}
+
+void VultEngine__ctx_type_1_init(VultEngine__ctx_type_1 &_output_){
+ VultEngine__ctx_type_1 _ctx;
+ Stabile__ctx_type_8_init(_ctx._inst388);
+ _output_ = _ctx;
+ return ;
+}
+
+void VultEngine_stabile_init(VultEngine__ctx_type_1 &_output_){
+ VultEngine__ctx_type_1_init(_output_);
+ return ;
+}
+
+void VultEngine_stabile(VultEngine__ctx_type_1 &_ctx, float in, float cut_in, float res_in, float semblance_in, _tuple___real_real_real_real__ &_output_){
+ float cut;
+ cut = float_clip(cut_in,0.f,0.92f);
+ float res;
+ res = float_clip(res_in,0.f,4.f);
+ float semblance;
+ semblance = float_clip(semblance_in,0.f,1.f);
+ _tuple___real_real_real_real__ _call_397;
+ Stabile_process(_ctx._inst388,in,cut,res,semblance,_call_397);
+ _output_ = _call_397;
+ return ;
+}
+
+void VultEngine__ctx_type_2_init(VultEngine__ctx_type_2 &_output_){
+ VultEngine__ctx_type_2 _ctx;
+ Lateralus__ctx_type_10_init(_ctx._inst390);
+ _output_ = _ctx;
+ return ;
+}
+
+void VultEngine_lateralus_init(VultEngine__ctx_type_2 &_output_){
+ VultEngine__ctx_type_2_init(_output_);
+ return ;
+}
+
+void VultEngine_lateralus(VultEngine__ctx_type_2 &_ctx, float in, float cut, float res, _tuple___real_real__ &_output_){
+ _tuple___real_real__ _call_399;
+ Lateralus_process(_ctx._inst390,in,cut,res,_call_399);
+ _output_ = _call_399;
+ return ;
+}
+
+void VultEngine__ctx_type_3_init(VultEngine__ctx_type_3 &_output_){
+ VultEngine__ctx_type_3 _ctx;
+ Tangents__ctx_type_11_init(_ctx._inst392);
+ _output_ = _ctx;
+ return ;
+}
+
+void VultEngine_tangents_init(VultEngine__ctx_type_3 &_output_){
+ VultEngine__ctx_type_3_init(_output_);
+ return ;
+}
+
+float VultEngine_tangents(VultEngine__ctx_type_3 &_ctx, float lp, float bp, float hp, float cut, float res){
+ return Tangents_process(_ctx._inst392,lp,bp,hp,cut,res);
+}
+
+float VultEngine_debriatus(float in, float fold_in, float crush_in, float distort_in, float saturate_in){
+ float fold;
+ fold = float_clip(fold_in,0.f,1.f);
+ float crush;
+ crush = float_clip(crush_in,0.f,1.f);
+ float distort;
+ distort = float_clip(distort_in,0.f,1.f);
+ float saturate;
+ saturate = float_clip(saturate_in,0.f,1.f);
+ return Debriatus_process(in,fold,crush,distort,saturate);
+}
+
+void VultEngine__ctx_type_5_init(VultEngine__ctx_type_5 &_output_){
+ VultEngine__ctx_type_5 _ctx;
+ Trummor__ctx_type_0_init(_ctx.processor);
+ _output_ = _ctx;
+ return ;
+}
+
+void VultEngine_trummor_init(VultEngine__ctx_type_5 &_output_){
+ VultEngine__ctx_type_5_init(_output_);
+ return ;
+}
+
+void VultEngine_trummor(VultEngine__ctx_type_5 &_ctx, float gate, float osc_in, float noise_in, _tuple___real_real_real_real__ &_output_){
+ _tuple___real_real_real_real__ _call_401;
+ Trummor_do(_ctx.processor,gate,osc_in,noise_in,_call_401);
+ _output_ = _call_401;
+ return ;
+}
+
+void VultEngine__ctx_type_6_init(VultEngine__ctx_type_6 &_output_){
+ VultEngine__ctx_type_6 _ctx;
+ Tohe__ctx_type_2_init(_ctx._inst396);
+ _output_ = _ctx;
+ return ;
+}
+
+void VultEngine_tohe_init(VultEngine__ctx_type_6 &_output_){
+ VultEngine__ctx_type_6_init(_output_);
+ return ;
+}
+
+float VultEngine_tohe(VultEngine__ctx_type_6 &_ctx, float x, float tone_in){
+ float tone;
+ tone = float_clip(tone_in,-1.f,1.f);
+ return Tohe_do(_ctx._inst396,x,tone);
+}
+
+
diff --git a/plugins/community/repos/VultModules/src/VultEngine.h b/plugins/community/repos/VultModules/src/VultEngine.h
new file mode 100644
index 00000000..e4a1ac31
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/VultEngine.h
@@ -0,0 +1,847 @@
+
+/* Code automatically generated by Vult https://github.com/modlfo/vult */
+#ifndef VULTENGINE_H
+#define VULTENGINE_H
+#include
+#include
+#include "vultin.h"
+
+typedef struct _tuple___real_real_real_real__ {
+ float field_0;
+ float field_1;
+ float field_2;
+ float field_3;
+} _tuple___real_real_real_real__;
+
+typedef struct _tuple___real_real__ {
+ float field_0;
+ float field_1;
+} _tuple___real_real__;
+
+extern float getSampleRate();
+float Util_sampleRateScale();
+
+typedef struct Util__ctx_type_2 {
+ uint8_t pre;
+} Util__ctx_type_2;
+
+typedef Util__ctx_type_2 Util_edge_type;
+
+void Util__ctx_type_2_init(Util__ctx_type_2 &_output_);
+
+void Util_edge_init(Util__ctx_type_2 &_output_);
+
+uint8_t Util_edge(Util__ctx_type_2 &_ctx, uint8_t x);
+
+typedef struct Util__ctx_type_3 {
+ float pre_x;
+} Util__ctx_type_3;
+
+typedef Util__ctx_type_3 Util_change_type;
+
+void Util__ctx_type_3_init(Util__ctx_type_3 &_output_);
+
+void Util_change_init(Util__ctx_type_3 &_output_);
+
+uint8_t Util_change(Util__ctx_type_3 &_ctx, float x);
+
+float Util_cubic_clipper(float x);
+
+static const float Util_stanh_c0[242] = {-4.19791679945f,-4.08017302261f,-3.96279424106f,-3.84583261307f,-3.72934117572f,-3.61337380651f,-3.49798517984f,-3.38323071976f,-3.26916654951f,-3.15584943749f,-3.04333673905f,-2.93168633327f,-2.8209565579f,-2.71120613855f,-2.60249411481f,-2.49487976124f,-2.38842250494f,-2.28318183958f,-2.17921723303f,-2.07658803333f,-1.97535336982f,-1.87557204879f,-1.77730244797f,-1.68060240416f,-1.58552909956f,-1.49213894305f,-1.40048744891f,-1.31062911149f,-1.22261727758f,-1.13650401594f,-1.05233998397f,-0.970174292201f,-0.890054367414f,-0.812025813862f,-0.736132273424f,-0.66241528522f,-0.590914144487f,-0.521665762914f,-0.454704528144f,-0.390062165585f,-0.327767601938f,-0.267846831262f,-0.210322783432f,-0.155215197624f,-0.102540498802f,-0.0523116805546f,-0.00453819273811f,0.0407741631544f,0.0836233325132f,0.12401109743f,0.161943157596f,0.197429201768f,0.230482968987f,0.26112229859f,0.289369167985f,0.315249718764f,0.338794268666f,0.360037309684f,0.379017492418f,0.395777593966f,0.41036447122f,0.422828997569f,0.433225982674f,0.441614075748f,0.448055651318f,0.452616677673f,0.455366567646f,0.456378011979f,0.455726795108f,0.453491593768f,0.449753758617f,0.444597079316f,0.438107533738f,0.430373021614f,0.421483084138f,0.411528609482f,0.40060152601f,0.388794484115f,0.376200528006f,0.362912758685f,0.349023989925f,0.33462639871f,0.319811171864f,0.304668150845f,0.289285476455f,0.273749235602f,0.258143112065f,0.242548043434f,0.227041886306f,0.211699092012f,0.19659039482f,0.181782515032f,0.167337878883f,0.153314357402f,0.139765026212f,0.126737948216f,0.114275980938f,0.10241661022f,0.0911918118538f,0.080627942498f,0.0707456611365f,0.0615598820902f,0.0530797604115f,0.045308710299f,0.0382444569168f,0.0318791217629f,0.0261993415378f,0.0211864201802f,0.0168165134925f,0.0130608455624f,0.00988595590594f,0.00725397604977f,0.00512293401641f,0.00344708496865f,0.00217726604862f,0.00126127325837f,0.000644258043125f,0.000269141079302f,7.70406239209e-05f,7.71266353338e-06f,-0.f,-7.71266353338e-06f,-7.70406239209e-05f,-0.000269141079302f,-0.000644258043132f,-0.00126127325836f,-0.00217726604861f,-0.00344708496868f,-0.00512293401644f,-0.00725397604983f,-0.00988595590594f,-0.0130608455624f,-0.0168165134928f,-0.0211864201802f,-0.0261993415376f,-0.0318791217631f,-0.0382444569168f,-0.045308710299f,-0.0530797604115f,-0.0615598820902f,-0.0707456611365f,-0.0806279424975f,-0.0911918118547f,-0.10241661022f,-0.114275980938f,-0.126737948216f,-0.139765026209f,-0.153314357402f,-0.167337878883f,-0.181782515032f,-0.19659039482f,-0.211699092014f,-0.227041886307f,-0.242548043434f,-0.258143112065f,-0.273749235602f,-0.289285476455f,-0.304668150845f,-0.319811171864f,-0.33462639871f,-0.349023989925f,-0.362912758688f,-0.376200528006f,-0.388794484115f,-0.40060152601f,-0.411528609496f,-0.421483084138f,-0.430373021607f,-0.438107533709f,-0.444597079294f,-0.449753758624f,-0.453491593783f,-0.455726795108f,-0.456378011972f,-0.455366567646f,-0.452616677637f,-0.448055651282f,-0.441614075733f,-0.43322598266f,-0.422828997569f,-0.41036447122f,-0.395777593966f,-0.379017492403f,-0.360037309756f,-0.33879426868f,-0.315249718822f,-0.28936916797f,-0.261122298547f,-0.230482969016f,-0.197429201739f,-0.161943157596f,-0.12401109743f,-0.0836233325132f,-0.0407741631112f,0.00453819276689f,0.0523116804682f,0.102540498802f,0.155215197624f,0.210322783403f,0.267846831176f,0.327767601938f,0.390062165585f,0.454704528116f,0.521665762914f,0.590914144459f,0.662415285163f,0.736132273395f,0.812025813862f,0.890054367414f,0.970174292172f,1.05233998397f,1.13650401591f,1.22261727761f,1.31062911149f,1.40048744891f,1.49213894308f,1.58552909956f,1.68060240419f,1.77730244792f,1.87557204879f,1.97535336976f,2.07658803339f,2.17921723309f,2.28318183958f,2.38842250499f,2.49487976118f,2.60249411481f,2.71120613866f,2.82095655796f,2.93168633333f,3.04333673899f,3.15584943754f,3.26916654945f,3.38323071953f,3.49798517984f,3.61337380674f,3.72934117572f,3.84583261313f,3.96279424124f,4.08017302255f,4.1979167995f,4.31597433117f};
+static const float Util_stanh_c1[242] = {0.676338139193f,0.686232300945f,0.696179026834f,0.706174754036f,0.716215752147f,0.726298120826f,0.73641778764f,0.746570506216f,0.75675185448f,0.766957233316f,0.777181865425f,0.787420794532f,0.797668884911f,0.807920821276f,0.818171109006f,0.828414074859f,0.838643868049f,0.84885446183f,0.8590396555f,0.86919307694f,0.87930818575f,0.889378276835f,0.899396484673f,0.909355788129f,0.919249015953f,0.929068852909f,0.938807846633f,0.948458415161f,0.958012855195f,0.967463351159f,0.976801985008f,0.986020746821f,0.995111546206f,1.00406622459f,1.0128765682f,1.02153432208f,1.03003120483f,1.03835892419f,1.04650919358f,1.05447374941f,1.06224436928f,1.06981289092f,1.07717123212f,1.08431141127f,1.09122556875f,1.09790598906f,1.10434512367f,1.11053561444f,1.1164703177f,1.12214232892f,1.12754500776f,1.13267200365f,1.13751728167f,1.14207514863f,1.14634027947f,1.15030774359f,1.15397303125f,1.15733207984f,1.16038129984f,1.16311760048f,1.1655384149f,1.16764172468f,1.1694260836f,1.17089064053f,1.1720351613f,1.17286004928f,1.17336636477f,1.17355584277f,1.17343090919f,1.17299469521f,1.17225104976f,1.1712045498f,1.16986050853f,1.16822498097f,1.16630476729f,1.1641074133f,1.16164120827f,1.15891517979f,1.15593908575f,1.15272340318f,1.14927931393f,1.14561868724f,1.14175405894f,1.13769860742f,1.13346612637f,1.12907099408f,1.12452813968f,1.11985300596f,1.11506150925f,1.11016999608f,1.105195197f,1.10015417755f,1.09506428661f,1.0899431022f,1.08480837512f,1.07967797039f,1.07456980698f,1.06950179595f,1.0644917772f,1.05955745538f,1.05471633495f,1.04998565496f,1.04538232372f,1.04092285377f,1.03662329748f,1.03249918358f,1.0285654551f,1.02483640881f,1.02132563688f,1.01804597065f,1.01500942725f,1.01222715914f,1.00970940688f,1.00746545553f,1.00550359491f,1.00383108383f,1.00245411872f,1.0013778067f,1.00060614335f,1.00014199519f,0.999987087199f,1.00014199519f,1.00060614335f,1.0013778067f,1.00245411872f,1.00383108383f,1.00550359491f,1.00746545553f,1.00970940688f,1.01222715914f,1.01500942725f,1.01804597065f,1.02132563688f,1.02483640881f,1.0285654551f,1.03249918358f,1.03662329748f,1.04092285377f,1.04538232372f,1.04998565496f,1.05471633495f,1.05955745538f,1.0644917772f,1.06950179595f,1.07456980698f,1.07967797039f,1.08480837512f,1.0899431022f,1.09506428661f,1.10015417755f,1.105195197f,1.11016999608f,1.11506150925f,1.11985300596f,1.12452813968f,1.12907099408f,1.13346612637f,1.13769860742f,1.14175405894f,1.14561868724f,1.14927931393f,1.15272340318f,1.15593908575f,1.15891517979f,1.16164120827f,1.1641074133f,1.16630476729f,1.16822498096f,1.16986050852f,1.1712045498f,1.17225104976f,1.17299469521f,1.17343090919f,1.17355584277f,1.17336636477f,1.17286004928f,1.17203516129f,1.17089064053f,1.16942608359f,1.16764172468f,1.1655384149f,1.16311760048f,1.16038129985f,1.15733207985f,1.15397303126f,1.15030774359f,1.14634027947f,1.14207514863f,1.13751728167f,1.13267200365f,1.12754500776f,1.12214232892f,1.1164703177f,1.11053561444f,1.10434512367f,1.09790598907f,1.09122556874f,1.08431141127f,1.07717123213f,1.06981289092f,1.06224436928f,1.05447374941f,1.04650919358f,1.03835892419f,1.03003120483f,1.02153432209f,1.0128765682f,1.00406622458f,0.995111546206f,0.986020746821f,0.976801985008f,0.967463351159f,0.958012855195f,0.948458415161f,0.938807846637f,0.929068852911f,0.919249015951f,0.909355788132f,0.899396484673f,0.889378276835f,0.87930818575f,0.86919307694f,0.8590396555f,0.848854461832f,0.838643868054f,0.828414074852f,0.818171108996f,0.80792082127f,0.797668884911f,0.787420794532f,0.777181865425f,0.766957233316f,0.75675185448f,0.746570506218f,0.736417787643f,0.726298120815f,0.716215752142f,0.706174754038f,0.696179026834f,0.686232300945f,0.676338139193f,0.666499939327f};
+static const float Util_stanh_c2[242] = {0.0103257987532f,0.0105336535528f,0.0107443759568f,0.0109579386525f,0.0111743100128f,0.0113934538953f,0.0116153294376f,0.0118398908497f,0.0120670871995f,0.0122968621988f,0.0125291539825f,0.0127638948877f,0.0130010112283f,0.0132404230677f,0.0134820439916f,0.0137257808769f,0.0139715336621f,0.0142191951172f,0.0144686506132f,0.0147197778931f,0.0149724468471f,0.0152265192866f,0.0154818487259f,0.0157382801641f,0.0159956498778f,0.0162537852144f,0.0165125043973f,0.0167716163381f,0.0170309204577f,0.0172902065199f,0.0175492544769f,0.0178078343278f,0.0180657059925f,0.018322619203f,0.0185783134101f,0.0188325177125f,0.0190849508057f,0.019335320952f,0.019583325978f,0.0198286532956f,0.0200709799513f,0.0203099727047f,0.0205452881395f,0.020776572805f,0.021003463393f,0.0212255869522f,0.0214425611386f,0.0216539945058f,0.0218594868367f,0.0220586295179f,0.0222510059569f,0.0224361920454f,0.0226137566693f,0.0227832622652f,0.0229442654257f,0.0230963175554f,0.0232389655748f,0.023371752676f,0.0234942191279f,0.0236059031341f,0.0237063417382f,0.0237950717829f,0.0238716309158f,0.0239355586433f,0.0239863974348f,0.0240236938687f,0.0240469998238f,0.024055873713f,0.024049881754f,0.0240285992769f,0.0239916120646f,0.0239385177225f,0.0238689270724f,0.0237824655677f,0.0236787747262f,0.0235575135722f,0.0234183600855f,0.0232610126496f,0.0230851914973f,0.0228906401403f,0.0226771267847f,0.0224444457179f,0.0221924186673f,0.0219208961171f,0.0216297585814f,0.021318917823f,0.0209883180128f,0.0206379368198f,0.0202677864288f,0.0198779144736f,0.0194684048823f,0.0190393786276f,0.0185909943739f,0.0181234490157f,0.0176369781031f,0.0171318561465f,0.0166083967971f,0.0160669528988f,0.0155079164061f,0.0149317181674f,0.014338827569f,0.0137297520379f,0.0131050364039f,0.0124652621194f,0.0118110463372f,0.0111430408482f,0.01046193088f,0.00976843376073f,0.00906329745005f,0.00834729894291f,0.00762124255103f,0.00688595806783f,0.0061422988241f,0.00539113964124f,0.00463337469087f,0.00386991526903f,0.00310168749471f,0.00232962994232f,0.00155469121843f,0.000777827493592f,-0.f,-0.000777827493592f,-0.00155469121843f,-0.00232962994232f,-0.00310168749471f,-0.00386991526903f,-0.00463337469087f,-0.00539113964124f,-0.0061422988241f,-0.00688595806783f,-0.00762124255103f,-0.00834729894291f,-0.00906329745005f,-0.00976843376073f,-0.01046193088f,-0.0111430408482f,-0.0118110463372f,-0.0124652621194f,-0.0131050364039f,-0.0137297520379f,-0.014338827569f,-0.0149317181674f,-0.0155079164061f,-0.0160669528988f,-0.0166083967971f,-0.0171318561465f,-0.0176369781031f,-0.0181234490157f,-0.0185909943739f,-0.0190393786276f,-0.0194684048823f,-0.0198779144736f,-0.0202677864288f,-0.0206379368198f,-0.0209883180128f,-0.021318917823f,-0.0216297585814f,-0.0219208961171f,-0.0221924186673f,-0.0224444457179f,-0.0226771267847f,-0.0228906401403f,-0.0230851914972f,-0.0232610126496f,-0.0234183600855f,-0.0235575135723f,-0.0236787747262f,-0.0237824655675f,-0.0238689270722f,-0.0239385177224f,-0.0239916120646f,-0.0240285992768f,-0.0240498817539f,-0.024055873713f,-0.0240469998238f,-0.0240236938685f,-0.0239863974347f,-0.0239355586433f,-0.0238716309156f,-0.023795071783f,-0.0237063417382f,-0.0236059031341f,-0.0234942191281f,-0.0233717526762f,-0.023238965575f,-0.0230963175555f,-0.0229442654256f,-0.0227832622652f,-0.0226137566695f,-0.0224361920454f,-0.0222510059569f,-0.0220586295179f,-0.0218594868368f,-0.0216539945057f,-0.0214425611386f,-0.0212255869523f,-0.0210034633929f,-0.020776572805f,-0.0205452881397f,-0.0203099727048f,-0.0200709799513f,-0.0198286532956f,-0.019583325978f,-0.0193353209519f,-0.0190849508057f,-0.0188325177128f,-0.0185783134102f,-0.0183226192029f,-0.0180657059925f,-0.0178078343278f,-0.0175492544769f,-0.0172902065199f,-0.0170309204577f,-0.0167716163381f,-0.0165125043974f,-0.0162537852144f,-0.0159956498776f,-0.0157382801642f,-0.0154818487259f,-0.0152265192866f,-0.0149724468471f,-0.0147197778931f,-0.0144686506132f,-0.0142191951172f,-0.0139715336622f,-0.0137257808768f,-0.0134820439914f,-0.0132404230676f,-0.0130010112282f,-0.0127638948877f,-0.0125291539825f,-0.0122968621988f,-0.0120670871995f,-0.0118398908497f,-0.0116153294377f,-0.0113934538951f,-0.0111743100127f,-0.0109579386526f,-0.0107443759568f,-0.0105336535528f,-0.0103257987532f,-0.0101208347512f};
+float Util_stanh(float x);
+
+static const float Util_sine_c0[102] = {-0.f,-0.000120057443911f,-0.00059749764421f,-0.00166130417337f,-0.00352664746242f,-0.0063895473564f,-0.0104217218519f,-0.0157656728946f,-0.0225300583964f,-0.0307853975546f,-0.0405601541299f,-0.051837239585f,-0.0645509749128f,-0.0785845466174f,-0.0937679886732f,-0.109876718391f,-0.126630650005f,-0.143693905473f,-0.160675137491f,-0.177128475087f,-0.192555097397f,-0.206405436406f,-0.218082004519f,-0.226942837943f,-0.232305541934f,-0.233451919101f,-0.229633157199f,-0.220075548108f,-0.203986705213f,-0.180562241953f,-0.148992870181f,-0.108471872993f,-0.0582029029888f,0.00259194649612f,0.0746638527569f,0.158728816038f,0.25545911362f,0.365474718516f,0.489334747338f,0.627529003131f,0.780469679899f,0.948483295874f,1.13180292269f,1.33056077716f,1.54478124132f,1.77437437538f,2.01912998613f,2.27871231131f,2.55265537784f,2.84035908863f,3.14108608925f,3.45395946207f,3.77796129081f,4.11193213442f,4.45457144377f,4.80443894972f,5.15995704547f,5.51941418042f,5.88096927665f,6.24265717313f,6.60239509623f,6.95799014883f,7.30714780355f,7.64748137938f,7.97652247383f,8.29173231688f,8.59051400575f,8.8702255735f,9.12819383838f,9.36172897408f,9.56813973606f,9.74474927277f,9.88891144569f,9.99802757704f,10.0695635393f,10.1010670964f,10.0901854036f,10.0346825672f,9.9324571662f,9.78155963187f,9.58020938212f,9.32681160473f,9.01997358358f,8.65852046161f,8.24151033469f,7.76824857187f,7.23830125893f,6.65150766456f,6.00799163142f,5.30817179766f,4.55277055884f,3.74282168457f,2.87967650964f,1.96500862497f,1.00081700041f,-0.0105725222836f,-1.06650742023f,-2.1640104106f,-3.29978313999f,-4.47021167221f,-5.67137379507f,-6.89904815779f};
+static const float Util_sine_c1[102] = {6.28521097643f,6.30946845694f,6.35770164811f,6.4293488274f,6.52357194401f,6.63926203103f,6.77504637588f,6.92929741021f,7.10014327103f,7.28547997568f,7.48298514446f,7.69013319626f,7.90421193433f,8.12234043165f,8.34148811824f,8.55849496559f,8.77009265764f,8.97292663164f,9.16357886736f,9.3385912984f,9.49448971582f,9.62780803063f,9.73511275961f,9.81302759685f,9.85825793217f,9.86761517731f,9.83804076102f,9.76662965503f,9.6506532947f,9.48758176044f,9.27510508913f,9.01115358854f,8.69391703207f,8.32186261632f,7.89375156958f,7.40865430583f,6.86596402525f,6.2654086702f,5.60706115313f,4.89134778128f,4.119054812f,3.29133308158f,2.40970065991f,1.47604349334f,0.492614007887f,-0.537972344505f,-1.61274260356f,-2.72837387906f,-3.881202975f,-5.06723803582f,-6.28217217851f,-7.52139906557f,-8.7800303623f,-10.0529150124f,-11.3346602562f,-12.6196543057f,-13.9020905815f,-15.1759934085f,-16.4352450586f,-17.6736140196f,-18.8847843642f,-20.0623860852f,-21.2000262549f,-22.291320866f,-23.3299272001f,-24.3095765717f,-25.2241072866f,-26.0674976563f,-26.8338989028f,-27.5176677907f,-28.1133988209f,-28.6159558221f,-29.0205027757f,-29.3225337129f,-29.5179015251f,-29.6028455319f,-29.5740176555f,-29.4285070554f,-29.163863083f,-28.7781164216f,-28.2697982853f,-27.6379575577f,-26.8821757596f,-26.0025797439f,-24.999852027f,-23.8752386726f,-22.6305546588f,-21.2681866676f,-19.7910932474f,-18.2028023124f,-16.5074059539f,-14.7095525497f,-12.8144361735f,-10.8277833143f,-8.75583693299f,-6.60533789174f,-4.38350380861f,-2.09800539785f,0.243059627163f,2.63119500238f,5.05753661369f,7.51288533918f};
+static const float Util_sine_c2[102] = {-0.61383718136f,-1.83913672727f,-3.05732101047f,-4.26367711262f,-5.45353787631f,-6.6222999614f,-7.76544165444f,-8.87854036228f,-9.95728972228f,-10.9975162627f,-11.9951955492f,-12.9464677543f,-13.8476525908f,-14.6952635496f,-15.4860213885f,-16.2168668191f,-16.8849723423f,-17.4877531878f,-18.0228773135f,-18.488274428f,-18.8821440005f,-19.2029622261f,-19.4494879213f,-19.6207673261f,-19.7161377938f,-19.7352303546f,-19.6779711431f,-19.544581684f,-19.3355780352f,-19.0517687913f,-18.694251955f,-18.2644106896f,-17.7639079675f,-17.1946801363f,-16.5589294281f,-15.8591154388f,-15.0979456127f,-14.2783647681f,-13.403543704f,-12.4768669332f,-11.5019195881f,-10.4824735506f,-9.42247285927f,-8.32601845093f,-7.19735229468f,-6.04084098061f,-4.86095882633f,-3.66227056666f,-2.44941369364f,-1.22708051488f,7.14914932809e-12f,1.22708051488f,2.44941369365f,3.66227056667f,4.86095882635f,6.0408409806f,7.19735229467f,8.32601845091f,9.42247285927f,10.4824735506f,11.5019195881f,12.4768669332f,13.403543704f,14.2783647681f,15.0979456127f,15.8591154388f,16.5589294281f,17.1946801363f,17.7639079675f,18.2644106896f,18.694251955f,19.0517687913f,19.3355780352f,19.544581684f,19.6779711431f,19.7352303546f,19.7161377938f,19.6207673261f,19.4494879213f,19.2029622261f,18.8821440005f,18.488274428f,18.0228773134f,17.4877531878f,16.8849723423f,16.2168668191f,15.4860213885f,14.6952635496f,13.8476525908f,12.9464677544f,11.9951955492f,10.9975162627f,9.95728972226f,8.87854036228f,7.76544165442f,6.62229996137f,5.4535378763f,4.26367711261f,3.05732101048f,1.83913672731f,0.613837181385f,-0.613837181399f};
+float Util_sine(float x);
+
+static const float Util_saturate_c0[242] = {-0.999999999997f,-1.00000000001f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-1.f,-1.f,-1.f,-0.999999999997f,-1.f,-0.999999999994f,-1.f,-1.f,-1.f,-1.f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-1.f,-0.999999999997f,-1.f,-0.999999999997f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-0.999999999997f,-0.999999999997f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-0.999999999995f,-1.f,-0.999999999999f,-0.999999999997f,-0.999999999997f,-0.999999999994f,-0.999999999988f,-0.999999999977f,-0.999999999965f,-0.999999999956f,-0.999999999927f,-0.999999999902f,-0.999999999851f,-0.999999999785f,-0.99999999969f,-0.999999999555f,-0.999999999346f,-0.999999999056f,-0.999999998636f,-0.999999998022f,-0.999999997141f,-0.999999995866f,-0.999999994018f,-0.999999991363f,-0.999999987522f,-0.999999981986f,-0.999999974009f,-0.999999962514f,-0.99999994597f,-0.99999992216f,-0.999999887929f,-0.999999838733f,-0.99999976808f,-0.999999666681f,-0.999999521258f,-0.999999312852f,-0.9999990144f,-0.999998587338f,-0.999997976745f,-0.999997104493f,-0.999995859554f,-0.999994084334f,-0.999991555413f,-0.999987956431f,-0.999982840035f,-0.999975574507f,-0.999965269101f,-0.999950669783f,-0.999930013967f,-0.999900828606f,-0.999859650259f,-0.999801638058f,-0.999720040171f,-0.999605460715f,-0.999444856034f,-0.999220165743f,-0.998906453716f,-0.998469395542f,-0.997861900902f,-0.997019600469f,-0.995854857304f,-0.994248884102f,-0.992041465289f,-0.989017708666f,-0.984891207544f,-0.979283022499f,-0.971696063447f,-0.961484889131f,-0.947821842616f,-0.929662129669f,-0.90571342178f,-0.874420561407f,-0.833983940339f,-0.782442143682f,-0.717865836239f,-0.63872814745f,-0.544526816711f,-0.436707847777f,-0.319822453429f,-0.202551570965f,-0.0977039508554f,-0.019758230215f,0.0211020337687f,0.0266706341736f,0.0132847925228f,0.00178842066124f,-0.f,-0.00178842066124f,-0.0132847925228f,-0.0266706341736f,-0.0211020337687f,0.019758230215f,0.0977039508554f,0.202551570965f,0.319822453429f,0.436707847777f,0.544526816711f,0.63872814745f,0.717865836239f,0.782442143682f,0.833983940339f,0.874420561407f,0.90571342178f,0.929662129669f,0.947821842616f,0.961484889131f,0.971696063447f,0.979283022499f,0.984891207544f,0.989017708666f,0.992041465289f,0.994248884102f,0.995854857305f,0.997019600469f,0.997861900902f,0.998469395542f,0.998906453716f,0.999220165743f,0.999444856034f,0.999605460715f,0.999720040171f,0.999801638058f,0.999859650259f,0.999900828606f,0.999930013967f,0.999950669783f,0.999965269101f,0.999975574507f,0.999982840035f,0.999987956431f,0.999991555414f,0.999994084334f,0.999995859556f,0.999997104492f,0.999997976747f,0.999998587339f,0.999999014399f,0.99999931285f,0.999999521258f,0.999999666681f,0.999999768081f,0.999999838734f,0.99999988793f,0.999999922162f,0.999999945968f,0.999999962516f,0.999999974009f,0.999999981985f,0.999999987524f,0.999999991361f,0.99999999402f,0.999999995864f,0.999999997141f,0.999999998024f,0.999999998634f,0.99999999906f,0.999999999346f,0.999999999555f,0.99999999969f,0.999999999787f,0.999999999853f,0.999999999898f,0.999999999931f,0.99999999995f,0.999999999963f,0.999999999976f,0.999999999988f,0.999999999994f,0.999999999995f,0.999999999995f,0.999999999994f,1.f,0.999999999997f,0.999999999995f,1.f,0.999999999997f,0.999999999999f,0.999999999997f,1.f,1.f,1.f,1.f,0.999999999997f,1.f,0.999999999997f,0.999999999997f,1.f,1.f,1.00000000001f,0.999999999997f,1.f,1.f,1.f,1.f,0.999999999997f,0.999999999997f,0.999999999997f,1.f,1.f,0.999999999997f,1.f,1.00000000001f,0.999999999994f,1.f,1.f,1.f,1.f,1.f};
+static const float Util_saturate_c1[242] = {-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,2.14608423625e-13f,-0.f,-0.f,2.07919329901e-13f,2.05689631994e-13f,2.03459934086e-13f,1.1148489539e-15f,2.00115387224e-13f,2.22969790779e-15f,1.97885689316e-13f,1.96770840362e-13f,7.80394267726e-15f,3.86852587001e-13f,5.72474937825e-13f,9.4037509261e-13f,1.12265289657e-12f,1.66391206369e-12f,2.90529637385e-12f,4.12884310075e-12f,5.85797382824e-12f,8.75936823075e-12f,1.31362652237e-11f,1.94451954538e-11f,2.8291521903e-11f,4.17048270918e-11f,6.11489076966e-11f,9.02191515939e-11f,1.32198231528e-10f,1.94338239945e-10f,2.85207348479e-10f,4.1845799742e-10f,6.14375978332e-10f,9.01463519572e-10f,1.32209157048e-09f,1.93919614163e-09f,2.84345291525e-09f,4.16813427985e-09f,6.10850881683e-09f,8.94979390829e-09f,1.31092323663e-08f,1.9196204531e-08f,2.81013492961e-08f,4.11248765343e-08f,6.01657530625e-08f,8.79940546678e-08f,1.28650026289e-07f,1.88024632924e-07f,2.74702547642e-07f,4.01186990429e-07f,5.85680750671e-07f,8.54668831744e-07f,1.24666649572e-06f,1.81764986988e-06f,2.64892375631e-06f,3.85850464773e-06f,5.61758149518e-06f,8.1742958983e-06f,1.1888060402e-05f,1.72790390729e-05f,2.50994083945e-05f,3.64358664387e-05f,5.28569071684e-05f,7.66241236978e-05f,0.000110994935749f,0.000160655609716f,0.000232339582388f,0.000335708717038f,0.000484606688928f,0.000698837523793f,0.00100668279495f,0.00144845384436f,0.00208148781465f,0.00298714697674f,0.00428057945633f,0.00612425507066f,0.00874660722177f,0.0124674825401f,0.0177324863575f,0.025158612767f,0.0355935336301f,0.05019011422f,0.0704951858152f,0.0985455818471f,0.136951834283f,0.188925705597f,0.258164950663f,0.348441184889f,0.462649955551f,0.601023389603f,0.758326606895f,0.92048941242f,1.06269068911f,1.15321373675f,1.16781524601f,1.11212351166f,1.03336916564f,0.996707332772f,1.03336916564f,1.11212351166f,1.16781524601f,1.15321373675f,1.06269068911f,0.92048941242f,0.758326606895f,0.601023389603f,0.462649955551f,0.348441184889f,0.258164950663f,0.188925705597f,0.136951834283f,0.0985455818471f,0.0704951858152f,0.05019011422f,0.0355935336301f,0.025158612767f,0.0177324863575f,0.0124674825401f,0.00874660722177f,0.00612425507066f,0.00428057945633f,0.00298714697674f,0.00208148781465f,0.00144845384436f,0.00100668279495f,0.000698837523793f,0.000484606688928f,0.000335708717038f,0.000232339582388f,0.000160655609716f,0.000110994935749f,7.66241236978e-05f,5.28569071684e-05f,3.64358664387e-05f,2.50994083945e-05f,1.72790390729e-05f,1.1888060402e-05f,8.1742958983e-06f,5.61758149518e-06f,3.85850464773e-06f,2.64892375631e-06f,1.81764986988e-06f,1.24666649572e-06f,8.54668831744e-07f,5.85680750671e-07f,4.0118699043e-07f,2.74702547642e-07f,1.88024632924e-07f,1.28650026289e-07f,8.79940546678e-08f,6.01657530625e-08f,4.11248765343e-08f,2.81013492962e-08f,1.9196204531e-08f,1.31092323663e-08f,8.94979390829e-09f,6.10850881683e-09f,4.16813427985e-09f,2.84345291525e-09f,1.93919614163e-09f,1.32209157048e-09f,9.01463519572e-10f,6.14375978333e-10f,4.1845799742e-10f,2.85207348479e-10f,1.94338239945e-10f,1.32198231528e-10f,9.02191515939e-11f,6.11489076966e-11f,4.17048270918e-11f,2.8291521903e-11f,1.94451954538e-11f,1.31362652237e-11f,8.75936823075e-12f,5.85797382824e-12f,4.12884310075e-12f,2.90529637385e-12f,1.66391206369e-12f,1.12265289657e-12f,9.4037509261e-13f,5.72474937825e-13f,3.86852587001e-13f,7.80394267738e-15f,1.96770840362e-13f,1.97885689316e-13f,2.22969790779e-15f,2.00115387224e-13f,1.1148489539e-15f,2.03459934086e-13f,2.05689631994e-13f,2.07919329901e-13f,-0.f,-0.f,2.14608423625e-13f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f};
+static const float Util_saturate_c2[242] = {0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,5.59747078934e-15f,0.f,0.f,5.59747078934e-15f,5.59747078934e-15f,5.59747078934e-15f,-0.f,5.59747078934e-15f,-0.f,5.59747078935e-15f,5.59747078934e-15f,-0.f,1.11949415787e-14f,1.6792412368e-14f,2.79873539467e-14f,3.35848247361e-14f,5.03772371041e-14f,8.95595326295e-14f,1.28741828155e-13f,1.84716536048e-13f,2.79873539467e-13f,4.2540777999e-13f,6.38111669985e-13f,9.4037509261e-13f,1.40496516813e-12f,2.08785660443e-12f,3.12338870045e-12f,4.64030328437e-12f,6.91847389563e-12f,1.02993462524e-11f,1.5331472492e-11f,2.28432782913e-11f,3.40214274576e-11f,5.06571106436e-11f,7.54539062404e-11f,1.12380421038e-10f,1.67369974072e-10f,2.49272166662e-10f,3.71252250103e-10f,5.52929359513e-10f,8.23505499999e-10f,1.22648981201e-09f,1.82666182498e-09f,2.72054432522e-09f,4.05185237522e-09f,6.03462206305e-09f,8.9876573375e-09f,1.33857748532e-08f,1.99361086925e-08f,2.96918621667e-08f,4.42215977226e-08f,6.58614757689e-08f,9.80908225761e-08f,1.46091625469e-07f,2.17581649185e-07f,3.24055333575e-07f,4.82631960911e-07f,7.18808083405e-07f,1.07055694289e-06f,1.59443387851e-06f,2.37466933403e-06f,3.53671128912e-06f,5.26739423965e-06f,7.84497691072e-06f,1.16838766444e-05f,1.74012896348e-05f,2.59164006462e-05f,3.85981165108e-05f,5.74850385979e-05f,8.56129576976e-05f,0.000127502340411f,0.000189883771609f,0.000282777072037f,0.000421095554734f,0.000627028834216f,0.000933577280689f,0.00138978420091f,0.00206845786871f,0.00307751640704f,0.00457654006323f,0.00680066519634f,0.0100945068507f,0.014959048568f,0.0221136089886f,0.0325712903199f,0.047715952507f,0.0693445311141f,0.0995887097365f,0.140541482915f,0.193291614148f,0.255993897283f,0.320850540815f,0.370984773824f,0.380471594512f,0.322614518926f,0.187810383488f,-0.f,-0.187810383488f,-0.322614518926f,-0.380471594512f,-0.370984773824f,-0.320850540815f,-0.255993897283f,-0.193291614148f,-0.140541482915f,-0.0995887097365f,-0.0693445311141f,-0.047715952507f,-0.0325712903199f,-0.0221136089886f,-0.014959048568f,-0.0100945068507f,-0.00680066519634f,-0.00457654006323f,-0.00307751640704f,-0.00206845786871f,-0.00138978420091f,-0.000933577280689f,-0.000627028834216f,-0.000421095554734f,-0.000282777072037f,-0.000189883771609f,-0.000127502340411f,-8.56129576976e-05f,-5.74850385979e-05f,-3.85981165108e-05f,-2.59164006462e-05f,-1.74012896348e-05f,-1.16838766444e-05f,-7.84497691072e-06f,-5.26739423965e-06f,-3.53671128912e-06f,-2.37466933403e-06f,-1.59443387851e-06f,-1.07055694289e-06f,-7.18808083405e-07f,-4.82631960911e-07f,-3.24055333575e-07f,-2.17581649185e-07f,-1.46091625469e-07f,-9.80908225761e-08f,-6.58614757689e-08f,-4.42215977226e-08f,-2.96918621667e-08f,-1.99361086925e-08f,-1.33857748532e-08f,-8.9876573375e-09f,-6.03462206305e-09f,-4.05185237522e-09f,-2.72054432522e-09f,-1.82666182498e-09f,-1.22648981201e-09f,-8.23505499999e-10f,-5.52929359513e-10f,-3.71252250103e-10f,-2.49272166662e-10f,-1.67369974072e-10f,-1.12380421038e-10f,-7.54539062404e-11f,-5.06571106436e-11f,-3.40214274576e-11f,-2.28432782913e-11f,-1.5331472492e-11f,-1.02993462524e-11f,-6.91847389563e-12f,-4.64030328437e-12f,-3.12338870045e-12f,-2.08785660443e-12f,-1.40496516813e-12f,-9.4037509261e-13f,-6.38111669985e-13f,-4.2540777999e-13f,-2.79873539467e-13f,-1.84716536048e-13f,-1.28741828155e-13f,-8.95595326295e-14f,-5.03772371041e-14f,-3.35848247361e-14f,-2.79873539467e-14f,-1.6792412368e-14f,-1.11949415787e-14f,-3.19505124043e-27f,-5.59747078934e-15f,-5.59747078934e-15f,-0.f,-5.59747078934e-15f,-0.f,-5.59747078934e-15f,-5.59747078934e-15f,-5.59747078934e-15f,-0.f,-0.f,-5.59747078934e-15f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f};
+float Util_saturate(float x);
+
+float Util_map(float x, float x0, float x1, float y0, float y1);
+
+typedef struct Util__ctx_type_9 {
+ float y1;
+ float x1;
+} Util__ctx_type_9;
+
+typedef Util__ctx_type_9 Util_dcblock_type;
+
+void Util__ctx_type_9_init(Util__ctx_type_9 &_output_);
+
+void Util_dcblock_init(Util__ctx_type_9 &_output_);
+
+float Util_dcblock(Util__ctx_type_9 &_ctx, float x0);
+
+typedef struct Util__ctx_type_10 {
+ float x;
+} Util__ctx_type_10;
+
+typedef Util__ctx_type_10 Util_smooth_type;
+
+void Util__ctx_type_10_init(Util__ctx_type_10 &_output_);
+
+void Util_smooth_init(Util__ctx_type_10 &_output_);
+
+float Util_smooth(Util__ctx_type_10 &_ctx, float input);
+
+float Util_cvToPitch(float cv);
+
+static const float Util_cvToperiodUnit_c0[33] = {0.0152890257319f,0.0152279781798f,0.015028611834f,0.0146657487959f,0.0141451117395f,0.0134891565077f,0.0127278520833f,0.0118929011824f,0.0110143167625f,0.0101185800979f,0.0092278331143f,0.0083597227746f,0.0075276345357f,0.0067411373182f,0.00600652304861f,0.00532736636593f,0.00470505951014f,0.00413929741193f,0.0036285012875f,0.00317017759171f,0.00276121443489f,0.00239812056546f,0.00207721350356f,0.00179476390916f,0.00154710315025f,0.00133070055715f,0.00114221618045f,0.000978534125823f,0.000836780791565f,0.000714331627804f,0.000608809393371f,0.000518076319058f,0.00044022209617f};
+static const float Util_cvToperiodUnit_c1[33] = {-0.105593113625f,-0.101631759162f,-0.0952083023254f,-0.0874320077715f,-0.0790734570255f,-0.070654395043f,-0.0625154267297f,-0.054866783245f,-0.0478261848818f,-0.0414469009918f,-0.0357383891852f,-0.0306813399502f,-0.0262385230037f,-0.0223625000035f,-0.0190010128104f,-0.0161006601557f,-0.0136093250233f,-0.0114776999014f,-0.00966016922309f,-0.0081152415245f,-0.00680567324007f,-0.00569838785328f,-0.00476426541853f,-0.00397785601244f,-0.00331705472812f,-0.00276276406037f,-0.00229856092049f,-0.00191037928302f,-0.00158621500543f,-0.00131585622133f,-0.00109064054208f,-0.000903238850624f,-0.000747464538933f};
+static const float Util_cvToperiodUnit_c2[33] = {0.329905287121f,0.265654637684f,0.213917112814f,0.172255721012f,0.138708086657f,0.111694016262f,0.0899410666632f,0.0724246091531f,0.0583195664181f,0.0469615489399f,0.0378155602706f,0.0304507971065f,0.0245203571701f,0.0197448990792f,0.0158994845362f,0.0128029830642f,0.0103095402225f,0.00830170742761f,0.00668490977542f,0.00538299128164f,0.00433462770802f,0.00349043800818f,0.00281065833322f,0.00226326903603f,0.00182248645057f,0.00146754840437f,0.00118173625846f,0.000951587409578f,0.000766261161565f,0.000617028096224f,0.000496858891755f,0.000400093220757f,0.000322173131954f};
+float Util_cvToperiodUnit(float cv);
+
+static const float Util_cvTokHz_c0[33] = {0.0327031956626f,0.0329157760149f,0.0339578485366f,0.0368566350801f,0.0432421259378f,0.0556159052222f,0.0777237842587f,0.115068916026f,0.175614259054f,0.270739336253f,0.416537388042f,0.635566803598f,0.959207146572f,1.43081778941f,2.109959525f,3.07802092665f,4.44569735701f,6.36290872359f,9.03192182114f,12.7246766192f,17.8056189134f,24.7617346776f,34.2419903781f,47.1090421017f,64.5069278521f,87.9495573939f,119.436233946f,161.602273483f,217.915147899f,292.929618558f,392.619239761f,524.806644821f,699.721497115f};
+static const float Util_cvTokHz_c1[33] = {0.225719191888f,0.212293210117f,0.179169381636f,0.117604905736f,0.0157801819103f,-0.142178074384f,-0.377466272128f,-0.718250312221f,-1.20179695141f,-1.87722845841f,-2.80907738384f,-4.08186733736f,-5.80600813072f,-8.12537311265f,-11.2270275603f,-15.3537053894f,-20.8197945237f,-28.0317982882f,-37.5145028842f,-49.9444141699f,-66.1924493549f,-87.3784044617f,-114.940396419f,-150.723337164f,-197.091583804f,-257.072283866f,-334.537673833f,-434.436788276f,-563.089816652f,-728.561857581f,-941.137257915f,-1213.92132821f,-1563.60330201f};
+static const float Util_cvTokHz_c2[33] = {0.876337770753f,1.08828690662f,1.35149759677f,1.67836784855f,2.08429422425f,2.58839706504f,3.21442111597f,3.99185397416f,4.95731504247f,6.1562804124f,7.64522492346f,9.49428229626f,11.7905486396f,14.6421849368f,18.1835117495f,22.5813361171f,28.0428086641f,34.825181012f,43.2479230966f,53.7077711534f,66.697415176f,82.8287060814f,102.861475711f,127.739327173f,158.634081359f,197.000973197f,244.647197551f,303.81703348f,377.297556468f,468.549917976f,581.872375985f,722.602755747f,897.369877251f};
+float Util_cvTokHz(float cv);
+
+static const float Util_pitchToRateUnit_c0[33] = {8.17579891564f,8.23971883164f,8.55680000913f,9.44982766692f,11.4417592424f,15.350494472f,22.4225543767f,34.5202939504f,54.382449777f,85.9847542937f,135.036608034f,209.662148681f,321.330491081f,486.121751726f,726.444445421f,1073.35822422f,1569.70670258f,2274.33218915f,3267.73264729f,4659.6378385f,6599.13513064f,9288.17733348f,12999.5701107f,18100.8845247f,25086.196538f,34618.1529645f,47583.6456035f,65167.3982411f,88949.1079253f,121031.527315f,164209.152297f,222190.148553f,299888.020065f};
+static const float Util_pitchToRateUnit_c1[33] = {0.469996772699f,0.438233347787f,0.358902538857f,0.209601531179f,-0.040458946655f,-0.43328898011f,-1.02585764637f,-1.89501259586f,-3.14394166105f,-4.91064451964f,-7.37902124767f,-10.7933638665f,-15.4772683473f,-21.8582829345f,-30.4999932643f,-42.1437402146f,-57.7628043075f,-78.6327112944f,-106.422369216f,-143.312104255f,-192.146406325f,-256.631434668f,-341.590208516f,-453.292096756f,-599.877952439f,-791.908305195f,-1043.06980133f,-1371.08504567f,-1798.88376201f,-2356.10953114f,-3081.05728367f,-4023.16349291f,-5246.20525658f};
+static const float Util_pitchToRateUnit_c2[33] = {0.0153124178191f,0.0192576447309f,0.0242193548376f,0.03045944387f,0.038307284694f,0.0481771127172f,0.0605898906254f,0.0762008065437f,0.0958338570672f,0.12052534057f,0.151578556515f,0.190632597978f,0.239748868492f,0.301519889844f,0.379206144093f,0.476908172766f,0.599783017215f,0.754316424593f,0.948665187375f,1.19308768628f,1.50048536205f,1.88708369688f,2.37328864987f,2.98476375208f,3.75378471397f,4.72094304584f,5.93728861411f,7.4670242248f,9.39089446338f,11.8104476653f,14.8533959782f,18.6803564386f,23.493328878f};
+float Util_pitchToRateUnit(float pitch);
+
+static const float Util_cvToRateUnit_c0[129] = {32.7031956626f,32.7051955358f,32.7135691282f,32.7333306634f,32.7701982109f,32.8306624155f,32.922060884f,33.0526586468f,33.2317351469f,33.469678236f,33.7780856937f,34.1698748176f,34.6594006753f,35.2625836436f,35.997046908f,36.8822646382f,37.9397216066f,39.1930850671f,40.6683897659f,42.3942370191f,44.4020088492f,46.7260982447f,49.4041566728f,52.477360057f,55.9906945066f,59.9932631739f,64.5386157061f,69.6851018559f,75.496250916f,82.041178757f,89.3950243626f,97.6394178814f,106.862982342f,117.161871335f,128.640345087f,141.411387547f,155.597367241f,171.330744852f,188.754830671f,208.024595252f,229.307536858f,252.784609452f,278.651215311f,307.118266534f,338.413320019f,372.781790762f,410.488248705f,451.817804565f,497.07759056f,546.598342246f,600.736088071f,659.873953744f,724.424088854f,794.829723769f,871.567365236f,955.149139729f,1046.1252941f,1145.08686375f,1252.66851906f,1369.55160169f,1496.46736285f,1634.20041667f,1783.59242232f,1945.54600959f,2121.02896364f,2311.07868516f,2516.80694392f,2739.40494393f,2980.14872041f,3240.40488948f,3521.63677278f,3825.41092106f,4153.4040617f,4507.41049707f,4889.34998197f,5301.27611064f,5745.38524479f,6224.02601739f,6739.7094476f,7295.11970545f,7893.1255669f,8536.79260241f,9229.39614446f,9974.43508281f,10775.6465392f,11637.0214758f,12562.8212951f,13557.5954937f,14626.2004336f,15773.8193028f,17005.9833348f,18328.5943688f,19747.9488301f,21270.7632196f,22904.2012055f,24655.9024145f,26534.0130268f,28547.2182877f,30704.7770499f,33016.5584726f,35493.08101f,38145.5538266f,40985.9207893f,44026.9071916f,47282.0693786f,50765.8474475f,54493.6212084f,58481.7696098f,62747.7338298f,67310.0842624f,72188.591635f,77404.3024964f,82979.6193539f,88938.3857306f,95305.9764398f,102109.393398f,109377.367301f,117140.465521f,125431.206595f,134284.181707f,143736.183578f,153826.343205f,164596.274926f,176090.230303f,188355.261361f,201441.393729f,215401.810272f,230293.045864f,246175.193942f};
+static const float Util_cvToRateUnit_c1[129] = {226.635579817f,226.06844918f,224.879346456f,223.00755865f,220.387859708f,216.950211164f,212.619444135f,207.314921559f,200.950179491f,193.432546208f,184.662737802f,174.534428861f,162.933796764f,149.739038014f,134.819854967f,118.036911196f,99.2412536327f,78.2736995484f,54.9641862775f,29.1310815143f,0.580451839612f,-30.8947129436f,-65.5153222723f,-103.517056833f,-145.151292991f,-190.686082714f,-240.407192244f,-294.619202897f,-353.646677662f,-417.835397362f,-487.553670498f,-563.193720963f,-645.173158181f,-733.93653448f,-829.95699467f,-933.738023177f,-1045.81529442f,-1166.75863232f,-1297.17408519f,-1437.70612281f,-1589.03996249f,-1751.90403175f,-1927.0725752f,-2115.36841426f,-2317.66586802f,-2534.89384482f,-2768.03911416f,-3018.1497693f,-3286.33889131f,-3573.78842624f,-3881.75328743f,-4211.56569586f,-4564.63977186f,-4942.476393f,-5346.66833253f,-5778.90569488f,-6240.98166497f,-6734.79858882f,-7262.37440461f,-7825.84944358f,-8427.49362217f,-9069.71404726f,-9755.06305765f,-10486.2467267f,-11266.133852f,-12097.7654598f,-12984.3648521f,-13929.3482289f,-14936.3359157f,-16009.1642322f,-17151.8980364f,-18368.8439843f,-19664.5645425f,-21043.8927988f,-22511.9481126f,-24074.1526551f,-25736.248886f,-27504.3180223f,-29384.7995513f,-31384.5118492f,-33510.6739641f,-35770.9286315f,-38173.3665878f,-40726.5522555f,-43439.5508789f,-46321.9571858f,-49383.9256638f,-52636.2025428f,-56090.1595703f,-59757.8296903f,-63651.944722f,-67785.9751543f,-72174.1721715f,-76831.6120357f,-81774.2429522f,-87018.9345614f,-92583.5301971f,-98486.9020675f,-104749.009519f,-111390.960553f,-118435.076775f,-125904.961971f,-133825.574501f,-142223.303723f,-151126.050682f,-160563.313283f,-170566.276201f,-181167.905787f,-192403.050253f,-204308.545411f,-216923.326292f,-230288.544943f,-244447.694763f,-259446.741729f,-275334.262879f,-292161.59248f,-309982.976257f,-328855.73418f,-348840.432221f,-370001.063614f,-392405.24013f,-416124.393891f,-441233.990329f,-467813.752883f,-495947.900089f,-525725.395722f,-557240.212696f,-590591.611535f,-625884.434115f};
+static const float Util_cvToRateUnit_c2[129] = {805.036730667f,845.243554215f,887.45847081f,931.78177282f,978.31876163f,1027.1799978f,1078.48156374f,1132.3453395f,1188.89929229f,1248.27778055f,1310.62187313f,1376.07968441f,1444.80672624f,1516.96627734f,1592.72977125f,1672.27720361f,1755.79755974f,1843.48926371f,1935.56064968f,2032.23045683f,2133.72834914f,2240.29546088f,2352.1849696f,2469.66269754f,2593.00774321f,2722.51314441f,2858.48657449f,3001.25107323f,3151.14581434f,3308.52691126f,3473.76826319f,3647.26244338f,3829.42163179f,4020.67859433f,4221.48771103f,4432.32605547f,4653.69452828f,4886.11904709f,5130.15179601f,5386.37253748f,5655.38998965f,5937.84327254f,6234.4034264f,6545.77500603f,6872.69775458f,7215.94836092f,7576.342305f,7954.73579514f,8352.0278022f,8769.16219537f,9207.12998445f,9666.97167438f,10149.7797371f,10656.7012071f,11188.9404066f,11747.7618063f,12334.4930299f,12950.5280081f,13597.3302901f,14276.4365208f,14989.4600913f,15738.0949722f,16524.1197378f,17349.4017918f,18215.9018035f,19125.6783661f,20080.8928874f,21083.8147247f,22136.8265763f,23242.4301422f,24403.2520675f,25622.0501825f,26901.7200552f,28245.3018698f,29655.9876498f,31137.1288416f,32692.2442761f,34325.0285292f,36039.3606992f,37839.3136222f,39729.1635483f,41713.4003013f,43796.7379451f,45984.1259828f,48280.7611163f,50692.0995922f,53223.8701634f,55882.0877015f,58673.0674845f,61603.4402011f,64680.167704f,67910.5595495f,71302.2903623f,74863.4180701f,78602.4030454f,82528.1282073f,86649.9201234f,90977.5711687f,95521.3627894f,100292.089928f,105301.086673f,110560.25318f,116082.083951f,121879.697512f,127966.867582f,134358.055796f,141068.446063f,148113.980637f,155511.397994f,163278.272598f,171433.056654f,179995.123945f,188984.815859f,198423.489717f,208333.569513f,218738.599184f,229663.298548f,241133.622037f,253176.820346f,265821.505184f,279097.717246f,293036.997583f,307672.462535f,323038.882401f,339172.764061f,356112.43769f,373898.147833f,392572.149007f,412178.806101f};
+float Util_cvToRateUnit(float cv);
+
+typedef struct Util__ctx_type_16 {
+ float rate;
+ Util__ctx_type_3 _inst21;
+ Util__ctx_type_3 _inst20;
+} Util__ctx_type_16;
+
+typedef Util__ctx_type_16 Util_pitchToRate_type;
+
+void Util__ctx_type_16_init(Util__ctx_type_16 &_output_);
+
+void Util_pitchToRate_init(Util__ctx_type_16 &_output_);
+
+float Util_pitchToRate(Util__ctx_type_16 &_ctx, float pitch);
+
+typedef struct Util__ctx_type_17 {
+ float rate;
+ Util__ctx_type_3 _inst25;
+ Util__ctx_type_3 _inst24;
+} Util__ctx_type_17;
+
+typedef Util__ctx_type_17 Util_cvToRate_type;
+
+void Util__ctx_type_17_init(Util__ctx_type_17 &_output_);
+
+void Util_cvToRate_init(Util__ctx_type_17 &_output_);
+
+float Util_cvToRate(Util__ctx_type_17 &_ctx, float cv);
+
+typedef struct Util__ctx_type_18 {
+ int x1;
+} Util__ctx_type_18;
+
+typedef Util__ctx_type_18 Util_simple_noise_type;
+
+void Util__ctx_type_18_init(Util__ctx_type_18 &_output_);
+
+void Util_simple_noise_init(Util__ctx_type_18 &_output_);
+
+float Util_simple_noise(Util__ctx_type_18 &_ctx);
+
+float Util_polylog(float x);
+
+static const float Util_fadeA_c0[33] = {1.f,1.00000326382f,1.00002716936f,1.00010633281f,1.00029233007f,1.00065328066f,1.00127329628f,1.00225179667f,1.0037026964f,1.00575346664f,1.00854407669f,1.01222582077f,1.01696003593f,1.02291671784f,1.03027304146f,1.0392117944f,1.04991973095f,1.06258585557f,1.07739964471f,1.0945492165f,1.114219458f,1.13659012002f,1.16183388996f,1.190114453f,1.22158455251f,1.25638406041f,1.29463806832f,1.3364550106f,1.38192482996f,1.4311171966f,1.48407979161f,1.54083666516f,1.60138667975f};
+static const float Util_fadeA_c1[33] = {-5.80545137296e-06f,-0.000203092893088f,-0.000956515295872f,-0.00263385034741f,-0.00559841861111f,-0.0102073232494f,-0.016809712232f,-0.0257450693319f,-0.0373415401145f,-0.0519142990164f,-0.0697639634772f,-0.0911750609366f,-0.116414554337f,-0.145730431586f,-0.179350364222f,-0.217480440317f,-0.260303976386f,-0.307980412835f,-0.360644297225f,-0.418404359287f,-0.481342681408f,-0.549513967911f,-0.622944916216f,-0.701633692547f,-0.785549514609f,-0.874632343216f,-0.968792684535f,-1.06791150429f,-1.17184025478f,-1.28040101541f,-1.39338674671f,-1.51056165786f,-1.63166168705f};
+static const float Util_fadeA_c2[33] = {-1.23326707146f,-1.23029602306f,-1.22436108379f,-1.21547655142f,-1.20366382957f,-1.18895137613f,-1.17137463469f,-1.15097594915f,-1.12780446173f,-1.10191599459f,-1.07337291529f,-1.04224398663f,-1.00860420091f,-0.972534599333f,-0.934122076719f,-0.893459172203f,-0.850643846283f,-0.80577924483f,-0.758973450598f,-0.710339222846f,-0.659993725687f,-0.608058245834f,-0.554657900407f,-0.499921335516f,-0.443980416341f,-0.386969909454f,-0.32902715816f,-0.270291751624f,-0.210905188583f,-0.151010536469f,-0.0907520867445f,-0.0302750072965f,0.0302750072965f};
+float Util_fadeA(float x);
+
+static const float Util_fadeB_c0[33] = {-0.f,-5.90418441495e-05f,-0.000294355284162f,-0.000820613405635f,-0.00174824530631f,-0.00318177437696f,-0.00521819226454f,-0.0079453784365f,-0.01144057506f,-0.0157689266592f,-0.020982093723f,-0.0271169490987f,-0.0341943656348f,-0.042218103117f,-0.0511738020973f,-0.0610280917185f,-0.0717278181245f,-0.0831993994843f,-0.0953483130839f,-0.108058719318f,-0.121193226793f,-0.134592802077f,-0.148076826967f,-0.161443305451f,-0.174469221815f,-0.186911050643f,-0.198505418722f,-0.208969918115f,-0.218004068951f,-0.22529042972f,-0.230495852138f,-0.233272876911f,-0.233261266008f};
+static const float Util_fadeB_c1[33] = {1.57111167246f,1.5748909202f,1.58242208835f,1.59365063195f,1.60849500753f,1.62684700086f,1.64857216212f,1.67351034729f,1.70147636358f,1.73226071703f,1.76563045958f,1.80133013278f,1.83908280498f,1.87859119842f,1.9195389025f,1.96159166895f,2.00439878472f,2.04759451766f,2.09079963025f,2.13362295616f,2.1756630342f,2.21650979406f,2.25574628819f,2.29295046358f,2.32769696763f,2.35955898161f,2.38811007551f,2.41292607775f,2.43358695318f,2.44967868287f,2.46079513902f,2.46653994837f,2.46652833747f};
+static const float Util_fadeB_c2[33] = {-0.0302750072966f,-0.0907520867456f,-0.151010536469f,-0.210905188582f,-0.270291751624f,-0.32902715816f,-0.386969909454f,-0.443980416341f,-0.499921335517f,-0.554657900408f,-0.608058245834f,-0.659993725687f,-0.710339222846f,-0.758973450598f,-0.80577924483f,-0.850643846283f,-0.893459172203f,-0.934122076719f,-0.972534599333f,-1.00860420091f,-1.04224398663f,-1.07337291529f,-1.10191599459f,-1.12780446173f,-1.15097594915f,-1.17137463469f,-1.18895137613f,-1.20366382957f,-1.21547655142f,-1.22436108379f,-1.23029602306f,-1.23326707146f,-1.23326707146f};
+float Util_fadeB(float x);
+
+float Stabile_calc_g(float cv, float fs);
+
+static const float Stabile_calc_g_44100_c0[129] = {0.0023297121342f,0.00232990877298f,0.00233073630983f,0.00233269968028f,0.00233638229726f,0.00234245457359f,0.00235168322608f,0.00236494142632f,0.00238321986834f,0.00240763882889f,0.00243946130176f,0.00248010729458f,0.00253116938262f,0.00259442962235f,0.00267187793507f,0.00276573207984f,0.00287845934428f,0.00301280009195f,0.00317179331621f,0.00335880436225f,0.00357755499186f,0.00383215597998f,0.00412714244708f,0.00446751214818f,0.00485876695787f,0.00530695781034f,0.00581873337572f,0.00640139277766f,0.00706294268463f,0.00781215913512f,0.00865865449151f,0.009612949952f,0.0106865540907f,0.0118920479415f,0.0132431771918f,0.0147549521087f,0.0164437558847f,0.0183274621643f,0.0204255625945f,0.022759305337f,0.0253518455914f,0.0282284093001f,0.0314164713533f,0.0349459497795f,0.0388494175998f,0.043162334253f,0.0479232987633f,0.0531743271336f,0.0589611568109f,0.0653335815059f,0.0723458201533f,0.0800569244031f,0.0885312297538f,0.0978388562821f,0.108056265945f,0.119266884639f,0.131561798648f,0.145040536861f,0.159811952209f,0.175995218308f,0.193720960296f,0.213132542527f,0.234387540206f,0.257659427412f,0.28313952047f,0.311039223598f,0.341592633412f,0.375059570744f,0.411729122804f,0.451923796555f,0.496004406314f,0.544375845921f,0.597493929733f,0.655873529108f,0.720098283963f,0.790832235656f,0.868833811375f,0.954972696995f,1.05025027098f,1.15582444622f,1.27303999064f,1.40346568838f,1.54894008179f,1.7116280323f,1.8940909949f,2.0993747759f,2.33111971677f,2.59369983247f,2.89239959505f,3.23364002708f,3.62526989908f,4.0769436159f,4.60061558471f,5.21119262107f,5.92740301372f,6.77296594099f,7.77818227812f,8.98212429377f,10.435688453f,12.205911059f,14.3821622302f,17.0851843167f,20.4805234393f,24.7988948969f,30.3677589398f,37.6615131884f,47.383544519f,60.604687882f,79.0054977487f,105.31829363f,144.174148124f,203.822646897f,299.876648122f,464.200161855f,768.436151272f,1395.90540879f,2909.77223601f,7604.60964187f,31131.4055538f,585739.484048f,3886427.45042f,-117085.944353f,-17366.3754804f,-5654.03027988f,-2534.62900488f,-1353.02065547f,-803.751969365f,-510.259188932f,-335.387892325f};
+static const float Stabile_calc_g_44100_c1[129] = {0.0161443648634f,0.0160941945724f,0.0159884485134f,0.0158210961715f,0.0155856077872f,0.0152749174259f,0.0148813834757f,0.0143967463966f,0.013812083539f,0.0131177608305f,0.0123033811217f,0.011357728963f,0.0102687115719f,0.00902329573178f,0.00760744034592f,0.00600602435104f,0.00420276967251f,0.00218015888277f,-8.0652802275e-05f,-0.00259993158042f,-0.00539946559238f,-0.00850267237759f,-0.0119347137416f,-0.0157226185606f,-0.0198954140902f,-0.0244842663914f,-0.0295226305368f,-0.0350464113183f,-0.0410941352416f,-0.0477071346557f,-0.0549297449552f,-0.0628095158743f,-0.0713974379879f,-0.0807481856579f,-0.0909203777811f,-0.101976857842f,-0.11398499494f,-0.12701700766f,-0.141150312844f,-0.15646790161f,-0.173058745226f,-0.191018233797f,-0.210448651098f,-0.231459689356f,-0.254169008308f,-0.278702843462f,-0.305196669242f,-0.33379592353f,-0.364656801106f,-0.397947124706f,-0.433847303749f,-0.472551392485f,-0.514268261221f,-0.559222896599f,-0.607657849655f,-0.659834853615f,-0.716036637303f,-0.776568964617f,-0.841762936135f,-0.911977595437f,-0.987602890797f,-1.06906305231f,-1.15682045611f,-1.25138006106f,-1.3532945202f,-1.46317008931f,-1.5816734797f,-1.70953983211f,-1.8475820254f,-1.99670157813f,-2.15790145636f,-2.33230116858f,-2.52115461216f,-2.7258712401f,-2.94804124583f,-3.18946562639f,-3.45219218777f,-3.73855881424f,-4.05124565018f,-4.3933382614f,-4.76840437899f,-5.18058752236f,-5.63472169937f,-6.13647256129f,-6.6925119439f,-7.31073478998f,-8.00053020713f,-8.77312213481f,-9.64200015266f,-10.6234678997f,-11.7373461815f,-13.0078812784f,-14.4649279586f,-16.1455038433f,-18.095851039f,-20.3741984846f,-23.0545039235f,-26.2315832565f,-30.0282323823f,-34.6052541852f,-40.1757916572f,-47.0261594787f,-55.5466776841f,-66.2782379122f,-79.9842183664f,-97.7643507825f,-121.240137287f,-152.866515643f,-196.475087885f,-258.261456664f,-348.669731158f,-486.204182391f,-705.697184813f,-1077.85708452f,-1760.81564877f,-3157.04284682f,-6496.31149033f,-16762.1004288f,-67756.0130715f,-1258915.62799f,-8249348.87485f,245453.464593f,35955.4810069f,11560.306338f,5116.75866975f,2695.80179035f,1579.44425939f,987.66871599f,637.844409966f};
+static const float Stabile_calc_g_44100_c2[129] = {0.0575062949172f,0.0607063623705f,0.0640845192128f,0.0676506789759f,0.0714153074868f,0.0753894537173f,0.0795847823676f,0.0840136082895f,0.0886889328527f,0.0936244823673f,0.0988347486833f,0.104335032097f,0.110141486697f,0.116271168296f,0.122742085111f,0.129573251343f,0.136784743847f,0.144397762078f,0.15243469151f,0.160919170763f,0.169876162651f,0.179332029429f,0.189314612495f,0.199853316851f,0.210979200645f,0.222725070144f,0.235125580518f,0.248217342849f,0.26203903783f,0.276631536641f,0.292038029565f,0.308304162949f,0.325478185185f,0.343611102454f,0.362756845086f,0.382972445439f,0.404318228375f,0.426858015488f,0.450659344411f,0.475793704716f,0.502336792083f,0.530368782696f,0.559974630048f,0.591244386694f,0.624273553828f,0.659163461994f,0.696021686785f,0.734962503886f,0.776107388607f,0.819585565788f,0.865534616939f,0.914101152596f,0.965441559194f,1.01972283131f,1.07712350195f,1.13783468582f,1.20206125289f,1.27002315293f,1.34195691496f,1.41811735026f,1.49877949238f,1.58424081403f,1.67482376787f,1.77087870723f,1.87278725328f,1.98096618794f,2.09587196748f,2.21800596993f,2.34792061297f,2.48622650563f,2.63360083189f,2.79079720526f,2.95865728452f,3.1381245045f,3.33026035379f,3.53626372958f,3.75749402262f,3.99549873985f,4.25204666848f,4.52916783458f,4.829201829f,5.1548564851f,5.50927942685f,5.89614570292f,6.3197656381f,6.78521824675f,7.29851717059f,7.86681827919f,8.49868102233f,9.20439966085f,9.99642607856f,10.8899136565f,11.9034226557f,13.0598431861f,14.3876143932f,15.92235145f,17.7090407692f,19.8050372634f,22.2842096343f,25.2427539777f,28.8074720228f,33.1477564393f,38.4932629276f,45.1604975478f,53.5937208585f,64.4294678029f,78.6012113038f,97.5146242745f,123.351904265f,159.62280482f,212.212406874f,291.492374345f,416.883232656f,627.600151784f,1010.8818476f,1787.59323061f,3629.02208923f,9240.84465374f,36872.9210925f,676449.539718f,4377462.25019f,-128646.292488f,-18614.372624f,-5911.44670541f,-2583.94162603f,-1343.8879381f,-776.654623281f,-478.352340507f,-303.39933109f};
+float Stabile_calc_g_44100(float cv);
+
+static const float Stabile_calc_g_48000_c0[129] = {0.00214042241959f,0.00214060307992f,0.00214136337215f,0.00214316719962f,0.00214655056405f,0.00215212939461f,0.00216060809497f,0.0021727888678f,0.0021895818813f,0.00221201634716f,0.0022412525847f,0.00227859515212f,0.00232550713182f,0.00238362566357f,0.00245477882691f,0.00254100398172f,0.00264456768479f,0.00276798730923f,0.00291405450369f,0.00308586063917f,0.00328682440284f,0.00352072171115f,0.00379171812831f,0.00410440399105f,0.00446383245727f,0.00487556071392f,0.00534569459887f,0.00588093691307f,0.006488639723f,0.00717686097883f,0.00795442580266f,0.00883099283293f,0.00981712604537f,0.010924372511f,0.0121653465949f,0.0135538211473f,0.0151048262953f,0.0168347565048f,0.0187614866507f,0.0209044979163f,0.0232850144313f,0.0259261516629f,0.0288530776933f,0.0320931886557f,0.0356762997593f,0.0396348535184f,0.0440041470171f,0.0488225802889f,0.054131928188f,0.0599776384735f,0.0664091592273f,0.0734802992152f,0.0812496253617f,0.089780902176f,0.0991435787758f,0.109413330093f,0.120672659984f,0.13301157532f,0.146528341752f,0.161330333788f,0.177534994159f,0.195270920261f,0.214679098843f,0.235914314239f,0.259146760357f,0.284563892732f,0.312372564198f,0.342801496718f,0.376104152805f,0.412562083307f,0.452488844758f,0.496234599705f,0.54419153837f,0.59680029096f,0.65455753845f,0.7180250777f,0.787840657032f,0.86473097428f,0.949527325168f,1.0431845119f,1.14680377739f,1.26166073071f,1.38923948719f,1.53127458262f,1.68980265898f,1.86722649691f,2.0663947351f,2.29070163849f,2.54421265197f,2.83182334167f,3.15946187801f,3.53434873995f,3.96533223414f,4.46332534599f,5.04187929791f,5.71794339153f,6.51288142172f,7.45384555776f,8.57565446239f,9.92339223762f,11.5560528069f,13.551724477f,16.0150826409f,19.088406735f,22.9680899359f,27.9299059432f,34.3685932944f,42.8615165999f,54.2741195387f,69.940572361f,91.9853958481f,123.922274707f,171.829136478f,246.803406f,370.499101608f,588.860415732f,1010.61761869f,1934.45927999f,4380.61285867f,13326.6724556f,79888.7906006f,-3859378.14497f,-1555619.16008f,-44376.7635195f,-10338.8471174f,-3975.13318843f,-1944.06729891f,-1093.51226163f,-671.203310803f};
+static const float Stabile_calc_g_48000_c1[129] = {0.0148326226939f,0.0147865291334f,0.0146893758649f,0.0145356225272f,0.0143192701229f,0.0140338270998f,0.0136722730697f,0.0132270200073f,0.0126898707578f,0.0120519746726f,0.0113037801792f,0.0104349840793f,0.00943447735289f,0.00829028723385f,0.00698951530379f,0.00551827133465f,0.00386160259155f,0.00200341828663f,-7.35911469647e-05f,-0.00238804031684f,-0.00495994104799f,-0.00781080088511f,-0.0109637283598f,-0.0144435454954f,-0.0182769080592f,-0.0224924341146f,-0.0271208414638f,-0.0321950946274f,-0.0377505620585f,-0.0438251843461f,-0.0504596542356f,-0.057697609365f,-0.0655858386974f,-0.0741745037311f,-0.0835173756711f,-0.093672089862f,-0.104700418929f,-0.116668566226f,-0.129647481355f,-0.143713199757f,-0.158947208571f,-0.175436841261f,-0.193275703804f,-0.212564135613f,-0.233409708771f,-0.255927769666f,-0.280242027681f,-0.306485196265f,-0.334799692497f,-0.365338402213f,-0.398265518802f,-0.433757465105f,-0.47200390939f,-0.513208888075f,-0.557592050146f,-0.605390040606f,-0.656858043378f,-0.712271507624f,-0.771928085712f,-0.836149816115f,-0.9052855907f,-0.979713952971f,-1.05984628278f,-1.14613043332f,-1.23905489903f,-1.33915360819f,-1.4470114525f,-1.56327068824f,-1.68863837098f,-1.82389501877f,-1.96990473922f,-2.12762710576f,-2.29813112914f,-2.48261174567f,-2.68240933694f,-2.89903291192f,-3.13418772674f,-3.38980829986f,-3.66809800826f,-3.97157674107f,-4.30313845543f,-4.66612095216f,-5.06439079652f,-5.50244709794f,-5.98554888858f,-6.51987218978f,-7.11270463617f,-7.77268790087f,-8.51012134834f,-9.33734465042f,-10.26922298f,-11.3237664952f,-12.5229270864f,-13.8936311778f,-15.4691298405f,-17.2907797476f,-19.4104154432f,-21.8935425751f,-24.8236851536f,-28.3083768435f,-32.487528465f,-37.5452842602f,-43.727088676f,-51.3646819579f,-60.9134113692f,-73.0091108925f,-88.5568669163f,-108.873224393f,-135.920841817f,-172.70892985f,-224.003467683f,-297.644478614f,-407.121158281f,-576.932035477f,-854.627400241f,-1340.56466319f,-2270.99669814f,-4291.50411977f,-9595.49562133f,-28826.6265942f,-170666.105263f,8143446.64f,3242282.62039f,91362.7278804f,21024.9413f,7983.77844915f,3855.19826586f,2140.0422109f,1295.1608629f};
+static const float Stabile_calc_g_48000_c2[129] = {0.0528337668084f,0.0557738037948f,0.0588774559999f,0.0621538307033f,0.0656125424691f,0.0692637414639f,0.0731181433653f,0.0771870609543f,0.0814824374876f,0.0860168819513f,0.0908037063086f,0.0958569648542f,0.101191495802f,0.106822965233f,0.112767913552f,0.119043804593f,0.125669077542f,0.132663201835f,0.140046735233f,0.147841385254f,0.156070074173f,0.16475700783f,0.17392774847f,0.183609291896f,0.193830149197f,0.20462043339f,0.21601195127f,0.228038300869f,0.240734974893f,0.254139470584f,0.268291406475f,0.283232646568f,0.299007432499f,0.315662524334f,0.333247350712f,0.351814169087f,0.371418236986f,0.392117995236f,0.413975264265f,0.437055454724f,0.461427793816f,0.487165568921f,0.514346390322f,0.543052475052f,0.573370954238f,0.605394206566f,0.639220220987f,0.674952992139f,0.712702952585f,0.752587446556f,0.79473125061f,0.839267147539f,0.886336560844f,0.936090258272f,0.988689134411f,1.04430508392f,1.10312197898f,1.165336767f,1.2311607071f,1.30082076757f,1.37456121015f,1.45264539166f,1.53535781919f,1.62300650171f,1.71592564866f,1.8144787761f,1.91906229203f,2.03010964673f,2.14809615047f,2.27354458146f,2.40703173158f,2.54919606763f,2.7007467228f,2.86247407848f,3.03526225264f,3.22010388049f,3.41811765937f,3.63056923821f,3.85889616715f,4.1047377949f,4.36997121821f,4.65675466631f,4.96758005897f,5.30533693844f,5.67339057365f,6.07567782021f,6.51682535338f,7.00229626507f,7.53857285434f,8.13338592305f,8.79600426596f,9.53760268636f,10.3717333046f,11.3149339474f,12.3875201811f,13.614625861f,15.0275836236f,16.6657757869f,18.5791443221f,20.8316366582f,23.5059996569f,26.7105464933f,30.5888604393f,35.3339530844f,41.209318872f,48.5809114462f,57.9668584174f,70.1168083308f,86.1423721786f,107.738891091f,137.577296436f,180.028206272f,242.572183987f,338.724278584f,494.579963856f,764.928904496f,1278.08176134f,2382.82990712f,5257.98843962f,15593.1587343f,91155.7037805f,-4295705.07938f,-1689430.54821f,-47029.3741542f,-10691.956993f,-4010.64393048f,-1912.58663253f,-1047.9277511f,-625.355353927f};
+float Stabile_calc_g_48000(float cv);
+
+static const float Stabile_calc_g_88200_c0[129] = {0.00116485448652f,0.00116495280184f,0.00116536655128f,0.00116634818644f,0.0011681893904f,0.00117122533662f,0.00117583933791f,0.00118246791797f,0.00119160634019f,0.00120381463148f,0.0012197241415f,0.00124004468089f,0.00126557228558f,0.00129719765758f,0.00133591533691f,0.00138283366315f,0.00143918558973f,0.00150634041902f,0.00158581653114f,0.00167929518533f,0.00178863547842f,0.00191589055173f,0.00206332514419f,0.00223343459748f,0.00242896542661f,0.00265293757839f,0.00290866850926f,0.00319979922439f,0.00353032243068f,0.00390461296807f,0.00432746069655f,0.00480410603002f,0.00534027832291f,0.00594223733227f,0.00661681799559f,0.00737147878354f,0.00821435390907f,0.00915430969603f,0.010201005437f,0.0113649590972f,0.0126576182528f,0.0140914366847f,0.0156799570876f,0.0174379003958f,0.019381262273f,0.0215274173658f,0.0238952319803f,0.0265051859041f,0.0293795041735f,0.0325422996676f,0.036019727508f,0.0398401523511f,0.0440343297861f,0.0486356031952f,0.0536801175995f,0.0592070522026f,0.0652588735702f,0.0718816116417f,0.0791251610713f,0.0870436107485f,0.0956956047719f,0.10514473862f,0.11545999486f,0.126716223397f,0.138994672087f,0.152383574478f,0.166978802598f,0.182884594033f,0.200214364198f,0.219091616586f,0.239650966136f,0.262039293616f,0.286417052258f,0.312959751905f,0.341859650791f,0.373327690921f,0.407595720146f,0.444919052657f,0.485579430076f,0.529888458226f,0.578191610199f,0.630872905644f,0.688360399757f,0.751132644605f,0.819726321384f,0.894745287102f,0.976871334787f,1.06687703627f,1.16564112421f,1.27416698097f,1.39360494205f,1.52527930138f,1.67072113491f,1.83170835505f,2.01031479193f,2.20897059842f,2.43053693268f,2.67839874219f,2.956580631f,3.26989234724f,3.62411253251f,4.02622224731f,4.48470374268f,5.0099254495f,5.61464188247f,6.31464812326f,7.12964429514f,8.08438832804f,9.21024901046f,10.547321636f,12.1473448006f,14.0777743493f,16.4275545567f,19.3154207149f,22.9020469768f,27.4081536684f,33.1420575567f,40.5425568282f,50.2474105556f,63.2058726101f,80.8697441817f,105.530055125f,140.936542696f,193.496567469f,274.739192814f,406.761754566f,635.404157175f,1065.99615034f,1976.33895453f};
+static const float Stabile_calc_g_88200_c1[129] = {0.00807214964131f,0.00804706552832f,0.00799419491595f,0.00791052300303f,0.00779278548406f,0.00763745011144f,0.0074406969774f,0.00719839742971f,0.00690609152999f,0.00655896395752f,0.00615181825475f,0.00567904930422f,0.00513461391917f,0.00451199942263f,0.00380419008106f,0.00300363125044f,0.00210219108266f,0.00109111963071f,-3.89948202724e-05f,-0.00129827238028f,-0.00269759133568f,-0.00424864129502f,-0.00596397992251f,-0.00785709349763f,-0.00994246155679f,-0.0122356258889f,-0.014753264177f,-0.0175132685958f,-0.0205348297026f,-0.0238385259735f,-0.027446419373f,-0.0313821573651f,-0.0356710818075f,-0.0403403452032f,-0.0454190348214f,-0.0509383052341f,-0.0569315198659f,-0.0634344021956f,-0.0704851973026f,-0.0781248445143f,-0.0863971619682f,-0.095349043979f,-0.105030672184f,-0.115495741525f,-0.126801702231f,-0.139010019082f,-0.152186449362f,-0.166401341059f,-0.181729953034f,-0.198252799091f,-0.216056018077f,-0.235231772411f,-0.255878677734f,-0.278102266708f,-0.302015490395f,-0.327739261068f,-0.355403040911f,-0.38514548159f,-0.417115120504f,-0.451471140285f,-0.488384199195f,-0.52803734117f,-0.570626995711f,-0.616364079402f,-0.665475212798f,-0.71820406872f,-0.774812870646f,-0.835584063159f,-0.900822180245f,-0.970855941702f,-1.04604061346f,-1.12676067403f,-1.2134328371f,-1.30650948954f,-1.40648261536f,-1.51388828947f,-1.62931184142f,-1.75339380891f,-1.88683682428f,-2.03041360645f,-2.18497626536f,-2.35146716905f,-2.53093167573f,-2.72453309757f,-2.93357034198f,-3.1594987747f,-3.40395497009f,-3.66878616646f,-3.95608543395f,-4.2682338021f,-4.60795089651f,-4.97835601877f,-5.38304209529f,-5.82616555211f,-6.31255599063f,-6.84785060139f,-7.43865964637f,-8.09277117839f,-8.81940560725f,-9.62953399325f,-10.5362783636f,-11.5554183596f,-12.7060367808f,-14.0113480511f,-15.4997696802f,-17.2063195261f,-19.1744542205f,-21.4585113179f,-24.1269870563f,-27.2669848584f,-30.9903257981f,-35.4420520719f,-40.8124295044f,-47.3541527002f,-55.4074287539f,-65.4372337797f,-78.0897984338f,-94.2802243555f,-115.331901022f,-143.204811948f,-180.881786758f,-233.046805951f,-307.328723355f,-416.699988371f,-584.389593716f,-854.705073167f,-1319.11850042f,-2186.80303265f,-4006.78998886f};
+static const float Stabile_calc_g_88200_c2[129] = {0.0287527766096f,0.0303527449192f,0.0320417463839f,0.0338247357338f,0.035706943488f,0.0376938913151f,0.0397914082514f,0.042005647824f,0.0443431061314f,0.0468106409333f,0.0494154918075f,0.0521653014349f,0.0550681380757f,0.058132519303f,0.0613674370677f,0.0647823841688f,0.0683873822096f,0.0721930111241f,0.0762104403652f,0.0804514618495f,0.0849285247587f,0.089654772309f,0.0946440805984f,0.099911099658f,0.105471296834f,0.111341002639f,0.117537459223f,0.124078871617f,0.130984461916f,0.138274526593f,0.145970497116f,0.154095004097f,0.162671945181f,0.171726556911f,0.181285490847f,0.191376894193f,0.202030495248f,0.213277694006f,0.225151658259f,0.237687425591f,0.25092201169f,0.264894525435f,0.279646291279f,0.295220979483f,0.311664744824f,0.329026374465f,0.347357445753f,0.366712494807f,0.387149196824f,0.408728559213f,0.431515128722f,0.455577213943f,0.480987124718f,0.507821430189f,0.5361612375f,0.56609249337f,0.597706311171f,0.631099326447f,0.666374084309f,0.703639462613f,0.743011135486f,0.78461208243f,0.828573149081f,0.875033666724f,0.924142138758f,0.976057003726f,1.03094748608f,1.08899454782f,1.15039195628f,1.21534748623f,1.28408427722f,1.35684237146f,1.43388046121f,1.51547788088f,1.60193688461f,1.69358525828f,1.79077932382f,1.89390740474f,2.00339383502f,2.11970360975f,2.24334779495f,2.37488983806f,2.5149529491f,2.66422875779f,2.82348749525f,2.99359000233f,3.17550193224f,3.37031059782f,3.5792450157f,3.80369982858f,4.04526394873f,4.30575497168f,4.58726067066f,4.89218921908f,5.22333022118f,5.5839291944f,5.97777888234f,6.40933174605f,6.88383926473f,7.40752539355f,7.98780383607f,8.63355192943f,9.35545824309f,10.1664669473f,11.082350332f,12.1224526159f,13.3106649916f,14.6767161551f,16.2578981841f,18.1014005357f,20.2675047425f,22.8340146988f,25.9024882282f,29.607138958f,34.127769883f,39.7089175537f,46.6887777407f,55.5439197189f,66.9601938433f,81.9484529293f,102.039665516f,129.626393387f,168.586789103f,225.483989878f,312.014312613f,450.38167386f,686.208244176f,1123.32527188f,2032.96942391f};
+float Stabile_calc_g_88200(float cv);
+
+static const float Stabile_calc_g_96000_c0[129] = {0.00107020998403f,0.00107030031103f,0.00107068044243f,0.00107158231734f,0.00107327391849f,0.00107606318491f,0.00108030228308f,0.00108639226618f,0.00109478815346f,0.00110600446432f,0.00112062124422f,0.00113929062249f,0.00116274394509f,0.00119179952894f,0.0012273710876f,0.00127047688227f,0.00132224965597f,0.00138394741326f,0.00145696511258f,0.00154284734337f,0.00164330206569f,0.0017602154959f,0.00189566822821f,0.00205195268901f,0.00223159202787f,0.00243736055741f,0.00267230586242f,0.00293977270801f,0.00324342888637f,0.00358729315273f,0.00397576541203f,0.00441365933126f,0.00490623756503f,0.00545924979736f,0.00607897381846f,0.00677225987199f,0.00754657852861f,0.00841007236047f,0.00937161171548f,0.0104408549136f,0.0116283132153f,0.0129454209422f,0.0144046111615f,0.0160193973847f,0.017804461769f,0.0197757503556f,0.0219505759311f,0.0243477291506f,0.0269875986281f,0.0298923007693f,0.0330858202023f,0.0365941617528f,0.0404455150178f,0.0446704327059f,0.0493020240553f,0.0543761647902f,0.0599317252672f,0.0660108186655f,0.0726590713257f,0.0799259176214f,0.0878649220896f,0.0965341319227f,0.105996463399f,0.116320126354f,0.127579091442f,0.139853605693f,0.153230762742f,0.167805135198f,0.18367947787f,0.200965512046f,0.219784802871f,0.240269743981f,0.262564666117f,0.286827089584f,0.313229144104f,0.341959184107f,0.373223632916f,0.40724909589f,0.444284790414f,0.48460535045f,0.528514074958f,0.576346703988f,0.628475823723f,0.685316023415f,0.747329953634f,0.815035468117f,0.889014072123f,0.969920950772f,1.05849691393f,1.15558267343f,1.26213596781f,1.3792521761f,1.50818922199f,1.65039777466f,1.80755801521f,1.98162457768f,2.17488171481f,2.39001131712f,2.63017717452f,2.89912987967f,3.20133812194f,3.54215393837f,3.92802195743f,4.36674605429f,4.86783151397f,5.44292733111f,6.10640249017f,6.87610321547f,7.77435715109f,8.8293181544f,10.0767864464f,11.5627005532f,13.3465916071f,15.5064366452f,18.1455783382f,21.4027505332f,25.4668615008f,30.5992195868f,37.1676735732f,45.7003249657f,56.9723300862f,72.1504925249f,93.0425778873f,122.544599509f,165.481180579f,230.272699234f,332.465321156f,502.824936267f,807.842488352f};
+static const float Stabile_calc_g_96000_c1[129] = {0.00741628591742f,0.00739323993791f,0.00734466517818f,0.00726779181149f,0.00715962078453f,0.0070169068792f,0.00683614059813f,0.00661352879541f,0.00634497396888f,0.00602605212451f,0.00565198911802f,0.00521763537219f,0.00471743886221f,0.00414541625377f,0.00349512207155f,0.00275961576743f,0.00193142654919f,0.00100251582151f,-3.57629189587e-05f,-0.00119270690314f,-0.00247830980323f,-0.00390331053237f,-0.00547924533524f,-0.00721850338702f,-0.00913438613445f,-0.0112411706277f,-0.0135541771083f,-0.0160898411379f,-0.018865790571f,-0.0219009276976f,-0.0252155169015f,-0.0288312782108f,-0.0327714871358f,-0.0370610812272f,-0.0417267738131f,-0.0467971754111f,-0.0523029233492f,-0.0582768201713f,-0.0647539814468f,-0.0717719936586f,-0.079371082895f,-0.087594295136f,-0.0964876889932f,-0.106100541837f,-0.116485570336f,-0.127699166526f,-0.139801650631f,-0.152857542001f,-0.16693584964f,-0.182110383988f,-0.198460091789f,-0.216069416065f,-0.235028683512f,-0.255434521828f,-0.27739030988f,-0.301006663929f,-0.326401963583f,-0.353702921635f,-0.383045202531f,-0.414574094866f,-0.448445244138f,-0.484825452852f,-0.523893556224f,-0.565841382951f,-0.610874812082f,-0.659214938768f,-0.711099363763f,-0.766783624118f,-0.826542785363f,-0.89067321908f,-0.959494593905f,-1.03335211303f,-1.1126190371f,-1.19769953876f,-1.28903194329f,-1.38709242028f,-1.49239920341f,-1.60551743027f,-1.72706471182f,-1.85771756298f,-1.99821885153f,-2.14938645482f,-2.31212335199f,-2.48742942703f,-2.67641531598f,-2.88031870275f,-3.10052355629f,-3.3385829109f,-3.59624592702f,-3.87549013976f,-4.17856001483f,-4.50801320008f,-4.8667762008f,-5.25821163998f,-5.68619982007f,-6.15523801758f,-6.67056186933f,-7.23829441966f,-7.86562998783f,-8.56106211949f,-9.33466769196f,-10.1984630136f,-11.1668528661f,-12.2572004226f,-13.4905556059f,-14.8925928716f,-16.4948282845f,-18.336212633f,-20.4652360124f,-22.9427357149f,-25.8456825908f,-29.2723459447f,-33.3494271469f,-38.2420464247f,-44.1679311529f,-51.4178996928f,-60.3859598759f,-71.6144018967f,-85.8628234067f,-104.216348503f,-128.259911092f,-160.367570447f,-204.199651089f,-265.591583207f,-354.2181447f,-486.883773378f,-694.465732943f,-1037.77960841f,-1647.63581097f};
+static const float Stabile_calc_g_96000_c2[129] = {0.0264165958044f,0.0278865635656f,0.0294383299871f,0.0310764471301f,0.0328057204195f,0.0346312227541f,0.0365583094024f,0.0385926337316f,0.0407401638133f,0.0430071999563f,0.0454003932199f,0.0479267649608f,0.0505937274735f,0.053409105785f,0.0563811606698f,0.0595186129544f,0.0628306691835f,0.0663270487265f,0.0700180124069f,0.0739143927403f,0.0780276258744f,0.0823697853289f,0.0869536176401f,0.0917925800197f,0.0969008801452f,0.10229351821f,0.107986331361f,0.113996040672f,0.120340300803f,0.127037752495f,0.134108078103f,0.141572060311f,0.149451644271f,0.157770003341f,0.166551608681f,0.175822302932f,0.185609378263f,0.195941659058f,0.206849589565f,0.218365326845f,0.230522839392f,0.243358011816f,0.256908756046f,0.271215129529f,0.286319460953f,0.302266484088f,0.319103480394f,0.336880431111f,0.355650179641f,0.37546860511f,0.396394808122f,0.41849130982f,0.441824265528f,0.46646369441f,0.492483726765f,0.5199628708f,0.548984300986f,0.579636170395f,0.612011949761f,0.646210796416f,0.68233795675f,0.720505206343f,0.760831332631f,0.803442665683f,0.848473663591f,0.896067560047f,0.94637708284f,0.999565253583f,1.05580628065f,1.1152865593f,1.17820579553f,1.24477827294f,1.31523428529f,1.38982176163f,1.46880811562f,1.55248235627f,1.64115750464f,1.7351733688f,1.8348997396f,1.94074008174f,2.05313580867f,2.17257124793f,2.29957942385f,2.43474881121f,2.57873124392f,2.73225120223f,2.89611674844f,3.0712324405f,3.25861462452f,3.45940959838f,3.67491525094f,3.90660692408f,4.15616842414f,4.42552933766f,4.71691009837f,5.03287662715f,5.37640685237f,5.75097204957f,6.16063676839f,6.61018220775f,7.10525935638f,7.65258016625f,8.26015766434f,8.93760950539f,9.69654441929f,10.5510578871f,11.5183730418f,12.6196765052f,13.8812185761f,15.3357758332f,17.0246164544f,19.0001717021f,21.3297129241f,24.1004815144f,27.4269521556f,31.4612831701f,36.4086199348f,42.549944562f,50.2769345342f,60.1464306042f,72.9678604293f,89.9478764586f,112.938056836f,144.876285207f,190.610405898f,258.5211782f,363.935509661f,536.89963798f,841.738288453f};
+float Stabile_calc_g_96000(float cv);
+
+static const float Stabile_calc_g_176400_c0[129] = {0.00058242704569f,0.000582476202839f,0.000582683075189f,0.000583173886509f,0.000584094475422f,0.000585612424536f,0.000587919384567f,0.00059123360959f,0.000595802720852f,0.000601906717879f,0.000609861257092f,0.000620021219671f,0.000632784592112f,0.000648596684652f,0.000667954714725f,0.000691412784626f,0.000719587284792f,0.000753162756488f,0.000792898250216f,0.000839634218951f,0.000894299988147f,0.00095792184773f,0.00103163181458f,0.00111667711764f,0.00121443046177f,0.00132640113054f,0.0014542469926f,0.00159978748131f,0.00176501762223f,0.00195212318862f,0.00216349707132f,0.00240175695551f,0.00266976440372f,0.00297064545209f,0.00330781283471f,0.00368498995907f,0.00410623676555f,0.00457597761319f,0.00509903134486f,0.00568064369649f,0.00632652222749f,0.00704287396281f,0.00783644595152f,0.00871456896294f,0.00968520455799f,0.0107569957917f,0.0119393218243f,0.013242356738f,0.0146771328828f,0.0162556090998f,0.017990744198f,0.0198965760953f,0.0219883070656f,0.0242823955741f,0.0267966552261f,0.0295503613989f,0.0325643661828f,0.0358612223111f,0.0394653168313f,0.043403015335f,0.0477028176576f,0.0523955260434f,0.0575144268875f,0.0630954872824f,0.0691775677399f,0.0758026526222f,0.0830160999938f,0.0908669128267f,0.0994080337368f,0.108696665714f,0.118794621647f,0.129768705838f,0.14169113115f,0.154639975981f,0.168699685884f,0.183961625392f,0.200524686519f,0.218495961413f,0.237991487898f,0.259137078123f,0.282069242278f,0.306936221418f,0.333899145984f,0.363133339548f,0.394829790938f,0.429196822211f,0.466461985118f,0.506874224991f,0.550706358534f,0.598257921199f,0.64985845088f,0.705871288265f,0.766697990629f,0.832783475992f,0.904622039325f,0.982764412827f,1.06782607972f,1.16049709739f,1.26155374327f,1.37187236848f,1.49244593419f,1.62440381834f,1.76903562302f,1.92781989356f,2.10245889105f,2.29492085582f,2.50749158097f,2.74283761002f,3.00408401911f,3.29491059418f,3.6196713382f,3.98354374396f,4.39271628387f,4.85462530055f,5.37825621524f,5.9745291213f,6.65679600027f,7.4414868864f,8.34895665057f,9.40460471261f,10.6403700455f,12.0967481875f,13.8255433582f,15.8936696473f,18.3884710669f,21.4252753003f,25.1582888261f,29.7965843907f,35.6280098451f};
+static const float Stabile_calc_g_176400_c1[129] = {0.00403607072187f,0.00402352879444f,0.00399709379039f,0.00395525836618f,0.00389639044083f,0.0038187239805f,0.00372034914359f,0.00359920174367f,0.00345305198488f,0.00327949242126f,0.00307592508867f,0.00283954775428f,0.00256733922525f,0.00225604365448f,0.00190215377697f,0.00150189300662f,0.00105119631792f,0.000545689833062f,-1.93309709147e-05f,-0.00064892452562f,-0.00134852800161f,-0.0021239838085f,-0.00298156787415f,-0.00392801981938f,-0.00497057515211f,-0.00611699961323f,-0.00737562581464f,-0.00875539231907f,-0.010265885322f,-0.0119173831045f,-0.0137209034394f,-0.0156882541427f,-0.0178320869775f,-0.0201659551279f,-0.0227043744792f,-0.0254628889526f,-0.0284581401615f,-0.0317079416751f,-0.035231358191f,-0.0390487899451f,-0.0431820627046f,-0.0476545237166f,-0.0524911440119f,-0.0577186274899f,-0.0633655272465f,-0.069462369632f,-0.0760417865763f,-0.0831386567435f,-0.0907902561385f,-0.0990364188239f,-0.107919708467f,-0.117485601496f,-0.127782682705f,-0.138862854227f,-0.150781558886f,-0.163598018992f,-0.17737549181f,-0.192181542984f,-0.208088339385f,-0.225172962953f,-0.243517747324f,-0.263210639175f,-0.284345586484f,-0.307022956134f,-0.331349983593f,-0.357441257737f,-0.385419244283f,-0.415414851738f,-0.447568044317f,-0.482028506885f,-0.518956367708f,-0.558522985636f,-0.600911809312f,-0.646319317194f,-0.694956048489f,-0.747047736748f,-0.802836559734f,-0.862582521434f,-0.926564984684f,-0.995084376086f,-1.06846408854f,-1.14705261118f,-1.2312259218f,-1.32139018309f,-1.41798479144f,-1.52148583624f,-1.63241003817f,-1.75131924802f,-1.87882560292f,-2.01559745593f,-2.16236621724f,-2.31993427271f,-2.489184179f,-2.67108937449f,-2.8667266954f,-3.07729104621f,-3.30411264862f,-3.54867738432f,-3.81265086093f,-4.09790697102f,-4.40656189006f,-4.74101468016f,-5.10399594296f,-5.49862631755f,-5.92848706518f,-6.39770555482f,-6.91105919848f,-7.47410233814f,-8.09332182542f,-8.77632866266f,-9.53209522262f,-10.3712504235f,-11.3064490694f,-12.3528367524f,-13.5286387791f,-14.8559113177f,-16.3615064754f,-18.0783219945f,-20.0469331796f,-22.3177433125f,-24.9538449743f,-28.0348673797f,-31.6622083059f,-35.9662364268f,-41.1163384245f,-47.335138027f,-54.9189383931f,-64.2676226188f,-75.92922583f};
+static const float Stabile_calc_g_176400_c2[129] = {0.014376341949f,0.0151763179267f,0.0160208090396f,0.0169122923983f,0.0178533829629f,0.0188468412157f,0.0198955812605f,0.0210026793737f,0.0221713830313f,0.0234051204385f,0.0247075105911f,0.0260823738962f,0.0275337433859f,0.0290658765552f,0.0306832678601f,0.0323906619127f,0.0341930674116f,0.0360957718503f,0.0381043570451f,0.0402247155307f,0.0424630678708f,0.0448259809354f,0.0473203872f,0.0499536051233f,0.0527333606646f,0.0556678100063f,0.0587655635482f,0.0620357112468f,0.0654878493765f,0.0691321087926f,0.0729791847832f,0.0770403686004f,0.0813275807684f,0.0858534062693f,0.0906311317192f,0.095674784646f,0.100999174996f,0.106619938999f,0.112553585532f,0.118817545129f,0.125430221802f,0.132411047834f,0.139780541737f,0.147560369559f,0.155773409766f,0.164443821898f,0.173597119275f,0.183260245984f,0.193461658452f,0.204231411898f,0.215601252006f,0.22760471217f,0.240277216721f,0.25365619055f,0.267781175619f,0.282693954863f,0.298438684066f,0.315062032346f,0.332613331948f,0.351144738124f,0.370711399989f,0.391371643305f,0.413187166305f,0.436223249791f,0.460548982877f,0.486237505995f,0.513366272893f,0.542017333725f,0.572277641513f,0.604239384654f,0.638000348525f,0.673664309712f,0.711341466865f,0.751148912902f,0.793211153915f,0.837660681096f,0.884638602925f,0.934295346163f,0.986791435441f,1.04229836311f,1.1009995628f,1.16309150251f,1.228784916f,1.29830619407f,1.37189896183f,1.44982587215f,1.5323706512f,1.61984043886f,1.71256847418f,1.81091718606f,1.91528176038f,2.02609426883f,2.14382846127f,2.26900534357f,2.40219968757f,2.54404764972f,2.6952557118f,2.85661120174f,3.02899470909f,3.21339477759f,3.41092534392f,3.62284649836f,3.85058927799f,4.09578537281f,4.36030284117f,4.64628920578f,4.95622365543f,5.29298053384f,5.65990689064f,6.06091764622f,6.50061294657f,6.98442364357f,7.51879265618f,8.11140242335f,8.77146200077f,9.51007194222f,10.3406914692f,11.2797413441f,12.3473884802f,13.5685763973f,14.9743918357f,16.603896346f,18.506609046f,20.7459135352f,23.4037954581f,26.5875262152f,30.4392419307f,35.149910679f,40.9800884358f};
+float Stabile_calc_g_176400(float cv);
+
+static const float Stabile_calc_g_192000_c0[129] = {0.000535104838795f,0.000535150001901f,0.00053534006576f,0.000535790998361f,0.000536636788801f,0.000538031403404f,0.000540150920993f,0.000543195862129f,0.000547393728334f,0.000553001768508f,0.000560309991106f,0.000569644442063f,0.000581370769968f,0.000595898101655f,0.000613683253132f,0.000635235302659f,0.000661120554833f,0.00069196792669f,0.000728474789219f,0.000771413300155f,0.000821637266616f,0.000880089579069f,0.000947810261182f,0.00102594518346f,0.00111575549211f,0.00121862780847f,0.00133608525832f,0.00146979939504f,0.00162160308494f,0.0017935044286f,0.00198770179715f,0.00220660006844f,0.00245282815435f,0.00272925791719f,0.00303902458037f,0.00338554874633f,0.00377256014323f,0.00420412323075f,0.0046846648051f,0.00521900375389f,0.00581238312278f,0.00647050466779f,0.00719956608065f,0.00800630108838f,0.00889802264419f,0.00988266944258f,0.0109688560107f,0.0121659266467f,0.0134840134975f,0.0149340990925f,0.0165280836735f,0.01827885769f,0.0202003798612f,0.0223077612354f,0.0246173557196f,0.0271468575896f,0.0299154065371f,0.0329437008632f,0.0362541194794f,0.0398708534457f,0.0438200478435f,0.0481299548589f,0.0528310990482f,0.0579564558527f,0.0635416445517f,0.0696251369772f,0.0762484834546f,0.0834565576275f,0.0912978220102f,0.099824616353f,0.109093471176f,0.119165449146f,0.130106517325f,0.141987953766f,0.154886792431f,0.168886310987f,0.184076566754f,0.200554986888f,0.218427019857f,0.23780685644f,0.258818229814f,0.281595305981f,0.306283677662f,0.333041477179f,0.362040626547f,0.393468246393f,0.427528249251f,0.464443147615f,0.504456112883f,0.547833328353f,0.594866687755f,0.645876901157f,0.701217082375f,0.761276907182f,0.826487450051f,0.897326829695f,0.974326821339f,1.0580806278f,1.14925204343f,1.24858629717f,1.35692292576f,1.47521110927f,1.6045280022f,1.74610072191f,1.90133281706f,2.07183624531f,2.25947015178f,2.46638807821f,2.69509566976f,2.94852151488f,3.23010449867f,3.54390203171f,3.89472482003f,4.28830558657f,4.73151150664f,5.23261331925f,5.80162846548f,6.45076168339f,7.19497498928f,8.05273098903f,9.0469706299f,10.2064113295f,11.5672877738f,13.1757116502f,15.0909078773f,17.3897092998f,20.1728854379f,23.574187858f,27.7734912882f};
+static const float Stabile_calc_g_192000_c1[129] = {0.00370813978003f,0.00369661689036f,0.00367232974481f,0.00363389347423f,0.00357980860764f,0.00350845260575f,0.00341807080693f,0.00330676674661f,0.00317249180807f,0.00301303416059f,0.00282600693727f,0.00260883560223f,0.00235874445368f,0.00207274220555f,0.00174760658688f,0.00137986789429f,0.000965791428516f,0.000501358741618f,-1.77523831493e-05f,-0.000596189302339f,-0.00123894732222f,-0.00195139404228f,-0.00273929533261f,-0.00360884305184f,-0.00456668461945f,-0.0056199545639f,-0.00677630817491f,-0.00804395739782f,-0.00943170911603f,-0.0109490059773f,-0.0126059699296f,-0.0144134486444f,-0.016383065014f,-0.0185272699249f,-0.0208593985225f,-0.0233937301915f,-0.0261455525003f,-0.0291312293661f,-0.0323682737191f,-0.0358754249623f,-0.0396727315436f,-0.043781638978f,-0.0482250836832f,-0.0530275930157f,-0.0582153919233f,-0.0638165166598f,-0.0698609360388f,-0.0763806807439f,-0.0834099812441f,-0.0909854149153f,-0.0991460630053f,-0.10793367814f,-0.117392863123f,-0.127571261839f,-0.138519763155f,-0.150292718766f,-0.162948176056f,-0.17654812711f,-0.191158775137f,-0.206850819693f,-0.223699762228f,-0.241786233637f,-0.261196345691f,-0.282022068417f,-0.304361635737f,-0.328319981991f,-0.354009212195f,-0.381549109358f,-0.411067682528f,-0.442701759755f,-0.47659763075f,-0.512911744661f,-0.551811469161f,-0.593475917993f,-0.638096855149f,-0.685879685141f,-0.737044540293f,-0.791827477741f,-0.850481800858f,-0.91327952231f,-0.980512988768f,-1.05249669077f,-1.1295692853f,-1.21209586342f,-1.30047050113f,-1.39511913844f,-1.49650283988f,-1.60512149951f,-1.72151806522f,-1.84628337145f,-1.98006168623f,-2.12355709936f,-2.27754090309f,-2.4428601472f,-2.62044758666f,-2.81133328516f,-3.01665819194f,-3.23769007688f,-3.47584229073f,-3.73269591939f,-4.01002602736f,-4.30983284231f,-4.63437892892f,-4.98623364708f,-5.36832649969f,-5.78401137059f,-6.23714415551f,-6.73217693401f,-7.2742726623f,-7.86944544663f,-8.52473286778f,-9.24840868339f,-10.0502466935f,-10.9418498387f,-11.9370630174f,-13.0524941056f,-14.3081758688f,-15.7284127991f,-17.3428727356f,-19.1880054481f,-21.3089021842f,-23.7617561039f,-26.6171506202f,-29.9645020642f,-33.9181324702f,-38.6256763682f,-44.2798796794f,-51.13540915f,-59.5331951585f};
+static const float Stabile_calc_g_192000_c2[129] = {0.0132082619524f,0.0139432394916f,0.0147191152423f,0.0155381650377f,0.0164027913584f,0.0173155303805f,0.0182790594171f,0.0192962047738f,0.0203699500419f,0.0215034448528f,0.0227000141209f,0.0239631678007f,0.025296611188f,0.0267042557947f,0.0281902308297f,0.0297588953199f,0.0314148509071f,0.0331629553575f,0.035008336826f,0.0369564089154f,0.0390128865764f,0.0411838028946f,0.0434755268157f,0.0458947818607f,0.0484486658863f,0.051144671952f,0.0539907103529f,0.0569951318871f,0.0601667524263f,0.0635148788643f,0.0670493365207f,0.0707804980853f,0.0747193141888f,0.0788773456944f,0.0832667978111f,0.0879005561312f,0.0927922247054f,0.0979561662763f,0.103407544794f,0.109162370349f,0.115237546671f,0.121650921342f,0.128421338886f,0.135568696917f,0.143114005531f,0.151079450142f,0.159488457974f,0.168365768452f,0.177737507736f,0.187631267667f,0.198076189428f,0.209103052216f,0.220744367303f,0.233034477826f,0.246009664748f,0.259708259413f,0.274170763207f,0.289439974857f,0.305561125971f,0.322582025477f,0.340553213714f,0.359528126969f,0.379563273396f,0.400718421336f,0.42305680118f,0.446645322111f,0.471554805142f,0.497860234152f,0.525641026804f,0.554981327487f,0.585970324772f,0.618702596177f,0.653278483515f,0.689804502512f,0.728393791055f,0.769166600994f,0.812250839295f,0.857782665237f,0.9059071514f,0.956779017571f,1.01056344806f,1.06743700491f,1.12758865133f,1.19122090255f,1.25855112384f,1.32981299933f,1.40525819925f,1.48515827836f,1.56980684412f,1.65952204047f,1.75464940169f,1.85556514082f,1.96267994985f,2.07644340369f,2.19734907789f,2.32594051253f,2.46281818087f,2.6086476546f,2.76416919738f,2.93020906772f,3.10769287364f,3.29766139683f,3.50128939884f,3.71990804005f,3.95503169084f,4.20839010322f,4.48196715041f,4.77804764894f,5.09927417224f,5.44871627649f,5.82995522553f,6.24718817797f,6.70535695584f,7.21030805715f,7.76899264543f,8.3897180534f,9.08246617058f,9.85929936696f,10.7348819637f,11.727155615f,12.8582216978f,14.1555050177f,15.6533040705f,17.3948788172f,19.4352954938f,21.845352445f,24.7170728503f,28.1715057492f,32.3699883273f};
+float Stabile_calc_g_192000(float cv);
+
+float Stabile_tune(float cv);
+
+typedef struct Stabile__ctx_type_8 {
+ float z2;
+ float z1;
+ float inv_den;
+ float g;
+ Util__ctx_type_3 _inst58;
+ Util__ctx_type_3 _inst57;
+ float R;
+} Stabile__ctx_type_8;
+
+typedef Stabile__ctx_type_8 Stabile_process_type;
+
+void Stabile__ctx_type_8_init(Stabile__ctx_type_8 &_output_);
+
+void Stabile_process_init(Stabile__ctx_type_8 &_output_);
+
+void Stabile_process(Stabile__ctx_type_8 &_ctx, float x, float cv, float q, float semblance, _tuple___real_real_real_real__ &_output_);
+
+typedef Stabile__ctx_type_8 Stabile_default_type;
+
+void Stabile_default_init(Stabile__ctx_type_8 &_output_);
+
+void Stabile_default(Stabile__ctx_type_8 &_ctx);
+
+typedef struct Tricore__ctx_type_0 {
+ uint8_t reset_state;
+ float reset_phase;
+ float phase;
+ Util__ctx_type_2 _inst79;
+ Util__ctx_type_2 _inst78;
+ Util__ctx_type_17 _inst76;
+} Tricore__ctx_type_0;
+
+typedef Tricore__ctx_type_0 Tricore_process_type;
+
+void Tricore__ctx_type_0_init(Tricore__ctx_type_0 &_output_);
+
+void Tricore_process_init(Tricore__ctx_type_0 &_output_);
+
+float Tricore_process(Tricore__ctx_type_0 &_ctx, float cv, float reset, float disable);
+
+static const float Tohe_tone_k1_c0[33] = {-0.264992498134f,-0.234467800158f,-0.204634930201f,-0.175775271557f,-0.148186855456f,-0.122179143863f,-0.0980656700886f,-0.0761540163313f,-0.056732502782f,-0.0400528396166f,-0.026307847783f,-0.01560318336f,-0.00792179906726f,-0.00307964028465f,-0.000670795925112f,-0.f,-0.f,-0.000670795925112f,-0.00307964028465f,-0.00792179906726f,-0.01560318336f,-0.026307847783f,-0.0400528396166f,-0.056732502782f,-0.0761540163313f,-0.0980656700886f,-0.122179143863f,-0.148186855456f,-0.175775271557f,-0.204634930201f,-0.234467800158f,-0.264992498134f,-0.295947796331f};
+static const float Tohe_tone_k1_c1[33] = {0.861423192973f,0.926573808042f,0.994798298684f,1.06587681164f,1.13949007626f,1.21519841636f,1.29241712029f,1.37038759311f,1.44814362823f,1.52447203686f,1.59786676068f,1.66647546359f,1.72803745011f,1.77981158927f,1.8184927291f,1.8401148662f,-1.8401148662f,-1.8184927291f,-1.77981158927f,-1.72803745011f,-1.66647546359f,-1.59786676068f,-1.52447203686f,-1.44814362823f,-1.37038759311f,-1.29241712029f,-1.21519841636f,-1.13949007626f,-1.06587681164f,-0.994798298684f,-0.926573808042f,-0.861423192973f,-0.799484736616f};
+static const float Tohe_tone_k1_c2[33] = {0.284905656103f,0.319669322478f,0.358674787758f,0.402439628477f,0.451544574908f,0.50664121697f,0.568460650392f,0.637823177863f,0.715649193904f,0.80297139789f,0.900948497283f,1.01088058291f,1.13422638029f,1.27262260596f,1.42790568564f,1.60213612231f,1.60213612231f,1.42790568564f,1.27262260596f,1.13422638029f,1.01088058291f,0.900948497283f,0.80297139789f,0.715649193904f,0.637823177863f,0.568460650392f,0.50664121697f,0.451544574908f,0.402439628477f,0.358674787758f,0.319669322478f,0.284905656103f,0.253922497942f};
+float Tohe_tone_k1(float g);
+
+static const float Tohe_tone_k0_c0[33] = {-1.94206665922f,-1.54285147978f,-1.29347147132f,-1.13481972588f,-1.03262443774f,-0.966342903093f,-0.923306034348f,-0.895505176445f,-0.877767671643f,-0.866690058302f,-0.859998098363f,-0.85615402505f,-0.854110438918f,-0.853152998884f,-0.852797843791f,-0.852723285867f,-0.852723285867f,-0.852591088909f,-0.85210391203f,-0.851161778365f,-0.849879849299f,-0.848688768543f,-0.848427246521f,-0.850404654914f,-0.856407380056f,-0.868623714769f,-0.889470428696f,-0.92132063574f,-0.966155353831f,-1.0251853405f,-1.09850823034f,-1.18487145652f,-1.28159952929f};
+static const float Tohe_tone_k0_c1[33] = {-2.84375825875f,-1.9933256159f,-1.42411645444f,-1.0341324635f,-0.761991037776f,-0.569444067159f,-0.431925959311f,-0.333228591776f,-0.262393640641f,-0.211842970672f,-0.176223870798f,-0.151679338278f,-0.135377677043f,-0.125203875836f,-0.119553879265f,-0.117195378781f,0.385242776087f,0.380997510855f,0.373175443249f,0.36308463872f,0.352772321043f,0.345076467735f,0.343593300524f,0.352531091683f,0.376430442098f,0.419750229622f,0.486345705627f,0.578896306467f,0.698367947294f,0.843608542411f,1.01116837601f,1.19540591487f,1.38888937396f};
+static const float Tohe_tone_k0_c2[33] = {-1.88206408317f,-1.42915409052f,-1.10435016192f,-0.864694402862f,-0.683519680806f,-0.543683367106f,-0.433828778535f,-0.3462312316f,-0.275511348539f,-0.217841837897f,-0.17044484225f,-0.131265648905f,-0.0987563820836f,-0.0717299588342f,-0.049259912232f,-0.0306107328251f,0.416993484794f,0.451075307248f,0.482472527844f,0.509491683288f,0.530230088947f,0.542660152592f,0.544755553001f,0.534657266035f,0.510869465773f,0.472466160626f,0.41928098667f,0.352047492913f,0.272458137306f,0.183118686441f,0.087390406203f,-0.0108674756809f,-0.107622862013f};
+float Tohe_tone_k0(float g);
+
+typedef struct Tohe__ctx_type_2 {
+ float w1;
+ float k1;
+ float k0;
+ float comp;
+ Util__ctx_type_3 _inst92;
+} Tohe__ctx_type_2;
+
+typedef Tohe__ctx_type_2 Tohe_do_type;
+
+void Tohe__ctx_type_2_init(Tohe__ctx_type_2 &_output_);
+
+void Tohe_do_init(Tohe__ctx_type_2 &_output_);
+
+float Tohe_do(Tohe__ctx_type_2 &_ctx, float x, float gain);
+
+typedef Tohe__ctx_type_2 Tohe_start_type;
+
+void Tohe_start_init(Tohe__ctx_type_2 &_output_);
+
+void Tohe_start(Tohe__ctx_type_2 &_ctx);
+
+typedef struct Swept__ctx_type_0 {
+ float out;
+ Util__ctx_type_2 _inst98;
+} Swept__ctx_type_0;
+
+typedef Swept__ctx_type_0 Swept_process_type;
+
+void Swept__ctx_type_0_init(Swept__ctx_type_0 &_output_);
+
+void Swept_process_init(Swept__ctx_type_0 &_output_);
+
+float Swept_process(Swept__ctx_type_0 &_ctx, float gate, float start, float end, float rate);
+
+typedef Swept__ctx_type_0 Swept_noteOn_type;
+
+void Swept_noteOn_init(Swept__ctx_type_0 &_output_);
+
+void Swept_noteOn(Swept__ctx_type_0 &_ctx, int note, int velocity, int channel);
+
+typedef Swept__ctx_type_0 Swept_noteOff_type;
+
+void Swept_noteOff_init(Swept__ctx_type_0 &_output_);
+
+void Swept_noteOff(Swept__ctx_type_0 &_ctx, int note, int channel);
+
+typedef Swept__ctx_type_0 Swept_controlChange_type;
+
+void Swept_controlChange_init(Swept__ctx_type_0 &_output_);
+
+void Swept_controlChange(Swept__ctx_type_0 &_ctx, int control, int value, int channel);
+
+typedef Swept__ctx_type_0 Swept_default_type;
+
+void Swept_default_init(Swept__ctx_type_0 &_output_);
+
+void Swept_default(Swept__ctx_type_0 &_ctx);
+
+typedef struct Noise__ctx_type_0 {
+ int x2;
+ int x1;
+ Util__ctx_type_2 _inst106;
+} Noise__ctx_type_0;
+
+typedef Noise__ctx_type_0 Noise_process_type;
+
+void Noise__ctx_type_0_init(Noise__ctx_type_0 &_output_);
+
+void Noise_process_init(Noise__ctx_type_0 &_output_);
+
+float Noise_process(Noise__ctx_type_0 &_ctx, float gate);
+
+typedef Noise__ctx_type_0 Noise_noteOn_type;
+
+void Noise_noteOn_init(Noise__ctx_type_0 &_output_);
+
+void Noise_noteOn(Noise__ctx_type_0 &_ctx, int note, int velocity, int channel);
+
+typedef Noise__ctx_type_0 Noise_noteOff_type;
+
+void Noise_noteOff_init(Noise__ctx_type_0 &_output_);
+
+void Noise_noteOff(Noise__ctx_type_0 &_ctx, int note, int channel);
+
+typedef Noise__ctx_type_0 Noise_controlChange_type;
+
+void Noise_controlChange_init(Noise__ctx_type_0 &_output_);
+
+void Noise_controlChange(Noise__ctx_type_0 &_ctx, int control, int value, int channel);
+
+typedef Noise__ctx_type_0 Noise_default_type;
+
+void Noise_default_init(Noise__ctx_type_0 &_output_);
+
+void Noise_default(Noise__ctx_type_0 &_ctx);
+
+typedef struct Decimate__ctx_type_0 {
+ float out;
+ int count;
+} Decimate__ctx_type_0;
+
+typedef Decimate__ctx_type_0 Decimate_decimate_type;
+
+void Decimate__ctx_type_0_init(Decimate__ctx_type_0 &_output_);
+
+void Decimate_decimate_init(Decimate__ctx_type_0 &_output_);
+
+float Decimate_decimate(Decimate__ctx_type_0 &_ctx, float in, float factor);
+
+typedef struct Ahr__ctx_type_0 {
+ float target;
+ int state;
+ float rate;
+ float out;
+ float hold_phase;
+ Util__ctx_type_2 _inst119;
+ Util__ctx_type_2 _inst117;
+} Ahr__ctx_type_0;
+
+typedef Ahr__ctx_type_0 Ahr_do_type;
+
+void Ahr__ctx_type_0_init(Ahr__ctx_type_0 &_output_);
+
+void Ahr_do_init(Ahr__ctx_type_0 &_output_);
+
+void Ahr_do(Ahr__ctx_type_0 &_ctx, float gate, float a, float h, float r, _tuple___real_real__ &_output_);
+
+typedef struct Ahr__ctx_type_1 {
+ float knob3;
+ float knob2;
+ float knob1;
+ Ahr__ctx_type_0 _inst128;
+} Ahr__ctx_type_1;
+
+typedef Ahr__ctx_type_1 Ahr_process_type;
+
+void Ahr__ctx_type_1_init(Ahr__ctx_type_1 &_output_);
+
+void Ahr_process_init(Ahr__ctx_type_1 &_output_);
+
+void Ahr_process(Ahr__ctx_type_1 &_ctx, float gate, _tuple___real_real__ &_output_);
+
+typedef Ahr__ctx_type_1 Ahr_noteOn_type;
+
+void Ahr_noteOn_init(Ahr__ctx_type_1 &_output_);
+
+void Ahr_noteOn(Ahr__ctx_type_1 &_ctx, int note, int velocity, int channel);
+
+typedef Ahr__ctx_type_1 Ahr_noteOff_type;
+
+void Ahr_noteOff_init(Ahr__ctx_type_1 &_output_);
+
+void Ahr_noteOff(Ahr__ctx_type_1 &_ctx, int note, int channel);
+
+typedef Ahr__ctx_type_1 Ahr_controlChange_type;
+
+void Ahr_controlChange_init(Ahr__ctx_type_1 &_output_);
+
+void Ahr_controlChange(Ahr__ctx_type_1 &_ctx, int control, int value, int channel);
+
+typedef Ahr__ctx_type_1 Ahr_default_type;
+
+void Ahr_default_init(Ahr__ctx_type_1 &_output_);
+
+void Ahr_default(Ahr__ctx_type_1 &_ctx);
+
+typedef struct Trummor__ctx_type_0 {
+ float tone;
+ float pitch;
+ float level2;
+ float level1;
+ float int_osc;
+ float int_noise;
+ float ext_osc;
+ float ext_noise;
+ float env2_scale;
+ float env2_r;
+ float env2_h;
+ float env2_a;
+ float env1_scale;
+ float env1_r;
+ float env1_h;
+ float env1_a;
+ float drive;
+ float decimate;
+ float bend;
+ Tohe__ctx_type_2 _inst167;
+ Decimate__ctx_type_0 _inst166;
+ Noise__ctx_type_0 _inst165;
+ Ahr__ctx_type_0 _inst164;
+ Tricore__ctx_type_0 _inst163;
+ Swept__ctx_type_0 _inst162;
+ Ahr__ctx_type_0 _inst161;
+} Trummor__ctx_type_0;
+
+typedef Trummor__ctx_type_0 Trummor_do_type;
+
+void Trummor__ctx_type_0_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_do_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_do(Trummor__ctx_type_0 &_ctx, float gate, float osc_in, float noise_in, _tuple___real_real_real_real__ &_output_);
+
+typedef Trummor__ctx_type_0 Trummor_setLevel1_type;
+
+void Trummor_setLevel1_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setLevel1(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setLevel2_type;
+
+void Trummor_setLevel2_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setLevel2(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv1A_type;
+
+void Trummor_setEnv1A_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv1A(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv1H_type;
+
+void Trummor_setEnv1H_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv1H(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv1R_type;
+
+void Trummor_setEnv1R_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv1R(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv2A_type;
+
+void Trummor_setEnv2A_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv2A(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv2H_type;
+
+void Trummor_setEnv2H_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv2H(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv2R_type;
+
+void Trummor_setEnv2R_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv2R(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setPitch_type;
+
+void Trummor_setPitch_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setPitch(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setBend_type;
+
+void Trummor_setBend_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setBend(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setDrive_type;
+
+void Trummor_setDrive_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setDrive(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setTone_type;
+
+void Trummor_setTone_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setTone(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setOscBlend_type;
+
+void Trummor_setOscBlend_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setOscBlend(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setNoiseBlend_type;
+
+void Trummor_setNoiseBlend_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setNoiseBlend(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv1Scale_type;
+
+void Trummor_setEnv1Scale_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv1Scale(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setEnv2Scale_type;
+
+void Trummor_setEnv2Scale_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setEnv2Scale(Trummor__ctx_type_0 &_ctx, float value);
+
+typedef Trummor__ctx_type_0 Trummor_setDecimate_type;
+
+void Trummor_setDecimate_init(Trummor__ctx_type_0 &_output_);
+
+void Trummor_setDecimate(Trummor__ctx_type_0 &_ctx, float value);
+
+float Tangents_tune(float cut, float fs, float oversampling);
+
+static const float Tangents_tune_44100_c0[129] = {0.00116485395967f,0.00116495227362f,0.00116536601674f,0.00116634763521f,0.00116818880433f,0.00117122468656f,0.00117583857954f,0.00118246698625f,0.00119160514221f,0.00120381303719f,0.00121972197175f,0.00124004169216f,0.00126556815045f,0.00129719193989f,0.00133590746031f,0.00138282287131f,0.00143917089624f,0.00150632054435f,0.00158578982362f,0.00167925952223f,0.00178858814245f,0.00191582807699f,0.00206324312457f,0.00223332744849f,0.00242882609008f,0.00265275715658f,0.00290843581233f,0.0031995002113f,0.00352993951942f,0.00390412418555f,0.0043268386321f,0.00480331654847f,0.00533927898361f,0.00594097544874f,0.00661522825616f,0.00736948033653f,0.00821184679445f,0.0091511704811f,0.0101970818822f,0.0113600636416f,0.0126515200635f,0.0140838519598f,0.015670537238f,0.0174262176493f,0.0193667921498f,0.0215095173582f,0.0238731156277f,0.0264778912863f,0.0293458556409f,0.0325008613781f,0.0359687470448f,0.0397774923336f,0.0439573849554f,0.0485411999306f,0.0535643921919f,0.0590653034527f,0.0650853843631f,0.0716694330426f,0.0788658511615f,0.0867269188165f,0.0953090895389f,0.104673306862f,0.114885343973f,0.126016168088f,0.138142331282f,0.151346389664f,0.165717352853f,0.181351165926f,0.198351226086f,0.216828936493f,0.236904299855f,0.258706554568f,0.282374856343f,0.308059008527f,0.335920244468f,0.366132065559f,0.398881138817f,0.434368258128f,0.472809373536f,0.514436693319f,0.55949986382f,0.608267232439f,0.661027199471f,0.718089664936f,0.779787576859f,0.846478588029f,0.918546828608f,0.996404802524f,1.08049541612f,1.17129414811f,1.26931137034f,1.37509482984f,1.4892323029f,1.61235443303f,1.74513776516f,1.8883079895f,2.04264340912f,2.20897864649f,2.38820860503f,2.58129270302f,2.78925939794f,3.0132110213f,3.25432894427f,3.5138790968f,3.79321786366f,4.09379838297f,4.41717727382f,4.76502182216f,5.13911765531f,5.54137693769f,5.97384712281f,6.43872029859f,6.93834316522f,7.47522768833f,8.05206247163f,8.67172489742f,9.33729408573f,10.0520647265f,10.8195618423f,11.6435565444f,12.5280828459f,13.4774556043f,14.4962896658f,15.5895202924f,16.7624249556f,18.0206465874f,19.370218383f,20.8175902599f,22.3696570803f};
+static const float Tangents_tune_44100_c1[129] = {0.00807213871123f,0.0080470549424f,0.00799418513572f,0.00791051464212f,0.00779277934752f,0.00763744724418f,0.00744069872375f,0.00719840550653f,0.00690610811632f,0.00655899180413f,0.00615186081813f,0.0056791109099f,0.00513469996078f,0.00451211660413f,0.0038043467112f,0.0030038376003f,0.00210245981947f,0.00109146634354f,-3.85509838274e-05f,-0.00129770794366f,-0.002696877562f,-0.00424774306167f,-0.00596285436248f,-0.0078556883602f,-0.00994071323065f,-0.0122334570202f,-0.0147505808001f,-0.0175099566797f,-0.0205307509953f,-0.0238335130053f,-0.0274402694501f,-0.0313746253533f,-0.0356618714658f,-0.0403290987807f,-0.0454053205733f,-0.0509216024482f,-0.0569112009073f,-0.0634097109852f,-0.0704552235292f,-0.0780884927439f,-0.0863531146536f,-0.095295717178f,-0.104966162563f,-0.115417762951f,-0.126707509933f,-0.138896318952f,-0.152049289531f,-0.166235982297f,-0.18153071389f,-0.19801287087f,-0.215767243842f,-0.234884383058f,-0.255460976873f,-0.277600254466f,-0.3014124144f,-0.327015080599f,-0.354533787512f,-0.384102496257f,-0.415864143736f,-0.449971226747f,-0.486586423332f,-0.525883253655f,-0.568046782917f,-0.613274368914f,-0.661776457052f,-0.713777425789f,-0.769516485611f,-0.829248634946f,-0.893245676511f,-0.961797297905f,-1.0352122204f,-1.11381942024f,-1.19796942689f,-1.28803570308f,-1.38441611167f,-1.48753447476f,-1.59784223075f,-1.71582019554f,-1.84198043398f,-1.97686824896f,-2.12106429478f,-2.27518682307f,-2.43989406898f,-2.6158867867f,-2.80391094322f,-3.00476058029f,-3.21928085489f,-3.44837126916f,-3.69298910159f,-3.95415305175f,-4.2329471118f,-4.53052467858f,-4.84811292129f,-5.18701742021f,-5.54862709332f,-5.93441942847f,-6.34596603966f,-6.78493856754f,-7.25311494501f,-7.75238605063f,-8.28476277304f,-8.85238351209f,-9.45752214325f,-10.1025964733f,-10.7901772176f,-11.5229975313f,-12.3039631268f,-13.1361630151f,-14.0228809083f,-14.9676073225f,-15.974052426f,-17.0461596762f,-18.1881202944f,-19.4043886291f,-20.6996984618f,-22.0790803131f,-23.5478798087f,-25.1117771718f,-26.7768079079f,-28.5493847563f,-30.4363209847f,-32.4448551076f,-34.582677115f,-36.8579563051f,-39.2793708149f,-41.8561389542f,-44.59805245f,-47.5155117192f,-50.6195632917f};
+static const float Tangents_tune_44100_c2[129] = {0.0287526529941f,0.0303525994983f,0.0320415753111f,0.0338245344842f,0.0357067067385f,0.0376936128037f,0.0397910806112f,0.042005262389f,0.0443426527067f,0.0468101075255f,0.0494148643079f,0.0521645632459f,0.0550672696718f,0.0581314977146f,0.0613662352733f,0.0647809703804f,0.0683857190316f,0.0721910545644f,0.0762081386716f,0.0804487541406f,0.0849253394137f,0.0896510250725f,0.0946396723529f,0.0999059138011f,0.105465196194f,0.111333825847f,0.117529016444f,0.124068939526f,0.130972777795f,0.138260781376f,0.145954327216f,0.154075981786f,0.162649567274f,0.171700231455f,0.181254521459f,0.191340461634f,0.201987635749f,0.213227273767f,0.225092343447f,0.237617647046f,0.250839923398f,0.264797955675f,0.279532685148f,0.295087331271f,0.311507518451f,0.328841409876f,0.347139848781f,0.366456507583f,0.386848045308f,0.408374273788f,0.43109833309f,0.455086876726f,0.480410267152f,0.507142782154f,0.53536283272f,0.565153193033f,0.596601243262f,0.629799225853f,0.664844516109f,0.701839907789f,0.740893914638f,0.782121088663f,0.825642356142f,0.871585372313f,0.920084895811f,0.971283183945f,1.02533040995f,1.08238510349f,1.14261461563f,1.20619560972f,1.27331457956f,1.34416839645f,1.41896488661f,1.49792344082f,1.58127565785f,1.66926602387f,1.7621526295f,1.86020792687f,1.96371952875f,2.07299105217f,2.18834300901f,2.31011374606f,2.43866043749f,2.5743601325f,2.71761086124f,2.86883280232f,3.0284695153f,3.19698924163f,3.3748862782f,3.5626824271f,3.7609285262f,3.97020606483f,4.19112888943f,4.42434500403f,4.67053847091f,4.93043141716f,5.20478615277f,5.49440740655f,5.80014468668f,6.1228947723f,6.46360434399f,6.82327276056f,7.20295499031f,7.60376470548f,8.02687754871f,8.47353458162f,8.94504592476f,9.44279460066f,9.96824059043f,10.522925116f,11.108475161f,11.7266082427f,12.3791374499f,13.0679767612f,13.7951466589f,14.5627800552f,15.3731285488f,16.2285690289f,17.1316106471f,18.0849021771f,19.0912397843f,20.1535752273f,21.2750245155f,22.4588770493f,23.7086052684f,25.0278748373f,26.4205553966f,27.8907319139f,29.4427166659f};
+float Tangents_tune_44100(float cut);
+
+static const float Tangents_tune_48000_c0[129] = {0.00107020957544f,0.00107029990139f,0.00107068002788f,0.00107158188985f,0.00107327346397f,0.00107606268078f,0.00108030169495f,0.00108639154362f,0.0010947872244f,0.00110600322792f,0.00112061956154f,0.00113928830468f,0.00116274073822f,0.00119179509477f,0.00122736497916f,0.00127046851302f,0.00132223826092f,0.00138393200012f,0.00145694440045f,0.00154281968605f,0.00164326535588f,0.00176016704574f,0.00189560462069f,0.0020518695933f,0.00223148397026f,0.00243722063761f,0.00267212540258f,0.00293954081913f,0.00324313193347f,0.00358691409547f,0.00397528299324f,0.0044130470789f,0.00490546256619f,0.00545827119353f,0.00607774096035f,0.00677071005919f,0.00754463424241f,0.00840763787952f,0.00936856897928f,0.0104370584707f,0.0116235840583f,0.0129395389881f,0.0143973060874f,0.0160103374653f,0.0177932402877f,0.0197618690729f,0.0219334249829f,0.0243265626193f,0.02696150487f,0.0298601663912f,0.0330462863474f,0.0365455710815f,0.0403858474278f,0.0445972274363f,0.0492122853262f,0.0542662475472f,0.0597971968836f,0.0658462916078f,0.0724580007546f,0.0796803566626f,0.0875652260139f,0.0961686006793f,0.105550909775f,0.115777354431f,0.126918266866f,0.139049495504f,0.152252817934f,0.166616383695f,0.182235188967f,0.199211585403f,0.217655825492f,0.237686647009f,0.259431899265f,0.283029214084f,0.308626724605f,0.336383835233f,0.366472046289f,0.399075837155f,0.434393611937f,0.472638711987f,0.514040499885f,0.558845519803f,0.607318739514f,0.65974487966f,0.71642983624f,0.777702202752f,0.843914898783f,0.915446912319f,0.992705163564f,1.07612649858f,1.1661798215f,1.26336837492f,1.36823217829f,1.48135063535f,1.60334532174f,1.73488296535f,1.87667863213f,2.02949913146f,2.19416665588f,2.3715626709f,2.56263207186f,2.76838762582f,2.98991471755f,3.22837642018f,3.48501891224f,3.76117726435f,4.05828162032f,4.37786379912f,4.72156434582f,5.0911400615f,5.48847204408f,5.91557427433f,6.37460278305f,6.86786543865f,7.39783239581f,7.96714724951f,8.57863894126f,9.23533446746f,9.94047244262f,10.6975175751f,11.5101761147f,12.3824123365f,13.3184661304f,14.3228717686f,15.400477928f,16.5564690522f,17.7963881394f,19.1261610513f,20.5521224426f};
+static const float Tangents_tune_48000_c1[129] = {0.00741627744094f,0.00739323172833f,0.00734465759344f,0.00726778532745f,0.00715961602553f,0.00701690465559f,0.00683614195245f,0.00661353505913f,0.00634498683187f,0.00602607372005f,0.00565202212666f,0.00521768314847f,0.00471750558896f,0.00414550713005f,0.00349524354092f,0.00275977579528f,0.00193163495913f,0.00100278470314f,-3.541871639e-05f,-0.00119226917324f,-0.00247775626008f,-0.0039026139379f,-0.00547837244553f,-0.00721741368093f,-0.00913303028065f,-0.0112394886374f,-0.0135520961101f,-0.0160872726994f,-0.0188626274769f,-0.0218970400736f,-0.0252107475573f,-0.0288254370434f,-0.0327643444092f,-0.0370523595047f,-0.0417161382767f,-0.0467842222493f,-0.0522871658336f,-0.0582576719677f,-0.0647307366174f,-0.0717438027084f,-0.0793369240879f,-0.0875529401573f,-0.0964376618546f,-0.106040069712f,-0.116412524751f,-0.127610993037f,-0.139695284756f,-0.152729308736f,-0.166781343386f,-0.181924325112f,-0.19823615528f,-0.215800026935f,-0.234704772502f,-0.255045233791f,-0.27692265573f,-0.300445105301f,-0.325727917276f,-0.352894168436f,-0.382075182057f,-0.413411064574f,-0.447051276436f,-0.483155239296f,-0.521892981805f,-0.563445826439f,-0.608007119917f,-0.655783009944f,-0.706993271156f,-0.761872183356f,-0.820669465295f,-0.883651267452f,-0.951101227492f,-1.02332159234f,-1.10063441096f,-1.18338280221f,-1.2719323026f,-1.36667229868f,-1.46801754951f,-1.57640980465f,-1.69231952372f,-1.81624770373f,-1.94872782083f,-2.09032789369f,-2.24165267588f,-2.40334598528f,-2.57609317909f,-2.76062378314f,-2.95771428543f,-3.16819110354f,-3.39293373708f,-3.6328781163f,-3.88902015896f,-4.16241954844f,-4.45420374643f,-4.76557225482f,-5.09780114199f,-5.45224784991f,-5.83035629895f,-6.23366230893f,-6.66379935574f,-7.12250468403f,-7.61162579773f,-8.13312735174f,-8.6890984691f,-9.28176050981f,-9.91347531868f,-10.5867539819f,-11.3042661227f,-12.0688497701f,-12.8835218345f,-13.7514892275f,-14.6761606663f,-15.6611592025f,-16.7103355204f,-17.827782053f,-19.0178479618f,-20.2851550377f,-21.6346145743f,-23.0714452766f,-24.6011922654f,-26.2297472449f,-27.9633699047f,-29.8087106301f,-31.7728345994f,-33.8632473553f,-36.0879219362f,-38.4553276642f,-40.9744606885f,-43.654876392f,-46.5067237741f};
+static const float Tangents_tune_48000_c2[129] = {0.0264164999383f,0.027886450789f,0.029438197317f,0.0310762910574f,0.032805536816f,0.0346310067634f,0.0365580553115f,0.0385923348199f,0.0407398121743f,0.0430067862891f,0.0453999065829f,0.0479261924822f,0.050593054011f,0.0534083135253f,0.0563802286573f,0.059517516537f,0.0628293793602f,0.066325531381f,0.0700162274046f,0.0739122928667f,0.0780251555863f,0.0823668792854f,0.0869501989743f,0.0917885583047f,0.096896149003f,0.102287952497f,0.107979783858f,0.11398833819f,0.120331239599f,0.127027092889f,0.13409553813f,0.141557308266f,0.149434289933f,0.157749587649f,0.16652759159f,0.175794049127f,0.185576140345f,0.195902557774f,0.206803590542f,0.218311213224f,0.230459179621f,0.243283121776f,0.25682065448f,0.271111485605f,0.286197532577f,0.302123045323f,0.318934736067f,0.336681916342f,0.355416641627f,0.375193864042f,0.396071593527f,0.418111067992f,0.441376932946f,0.465937431104f,0.491864602562f,0.5192344961f,0.548127392246f,0.578628038752f,0.610825899175f,0.644815415281f,0.680696284074f,0.718573750209f,0.758558914705f,0.800769060813f,0.845327998027f,0.89236642525f,0.942022314146f,0.994441313835f,1.04977717811f,1.10819221643f,1.16985776997f,1.23495471424f,1.30367398958f,1.37621716125f,1.45279701065f,1.53363815943f,1.61897772835f,1.70906603281f,1.80416731703f,1.90456052918f,2.01054013953f,2.1224170042f,2.24051927695f,2.36519337174f,2.49680497876f,2.63574013713f,2.78240636718f,2.93723386575f,3.1006767681f,3.2732144799f,3.45535308344f,3.64762682206f,3.85059966717f,4.06486697245f,4.29105722015f,4.52983386452f,4.78189727785f,5.04798680478f,5.32888293089f,5.62540957205f,5.93843649104f,6.26888184877f,6.61771489736f,6.98595882315f,7.37469374789f,7.78505989686f,8.21826094337f,8.67556753937f,9.15832104244f,9.66793745033f,10.2059115541f,10.7738213229f,11.3733325321f,12.0062036494f,12.6742909929f,13.3795541758f,14.1240618542f,14.9099977953f,15.739667282f,16.6155038752f,17.5400765519f,18.5160972401f,19.5464287735f,20.634093289f,21.7822810903f,22.9943600067f,24.2738852707f,25.624609946f,27.0504959368f};
+float Tangents_tune_48000(float cut);
+
+static const float Tangents_tune_88200_c0[129] = {0.00116485395967f,0.00116495227362f,0.00116536601674f,0.00116634763521f,0.00116818880433f,0.00117122468656f,0.00117583857954f,0.00118246698625f,0.00119160514221f,0.00120381303719f,0.00121972197175f,0.00124004169216f,0.00126556815045f,0.00129719193989f,0.00133590746031f,0.00138282287131f,0.00143917089624f,0.00150632054435f,0.00158578982362f,0.00167925952223f,0.00178858814245f,0.00191582807699f,0.00206324312457f,0.00223332744849f,0.00242882609008f,0.00265275715658f,0.00290843581233f,0.0031995002113f,0.00352993951942f,0.00390412418555f,0.0043268386321f,0.00480331654847f,0.00533927898361f,0.00594097544874f,0.00661522825616f,0.00736948033653f,0.00821184679445f,0.0091511704811f,0.0101970818822f,0.0113600636416f,0.0126515200635f,0.0140838519598f,0.015670537238f,0.0174262176493f,0.0193667921498f,0.0215095173582f,0.0238731156277f,0.0264778912863f,0.0293458556409f,0.0325008613781f,0.0359687470448f,0.0397774923336f,0.0439573849554f,0.0485411999306f,0.0535643921919f,0.0590653034527f,0.0650853843631f,0.0716694330426f,0.0788658511615f,0.0867269188165f,0.0953090895389f,0.104673306862f,0.114885343973f,0.126016168088f,0.138142331282f,0.151346389664f,0.165717352853f,0.181351165926f,0.198351226086f,0.216828936493f,0.236904299855f,0.258706554568f,0.282374856343f,0.308059008527f,0.335920244468f,0.366132065559f,0.398881138817f,0.434368258128f,0.472809373536f,0.514436693319f,0.55949986382f,0.608267232439f,0.661027199471f,0.718089664936f,0.779787576859f,0.846478588029f,0.918546828608f,0.996404802524f,1.08049541612f,1.17129414811f,1.26931137034f,1.37509482984f,1.4892323029f,1.61235443303f,1.74513776516f,1.8883079895f,2.04264340912f,2.20897864649f,2.38820860503f,2.58129270302f,2.78925939794f,3.0132110213f,3.25432894427f,3.5138790968f,3.79321786366f,4.09379838297f,4.41717727382f,4.76502182216f,5.13911765531f,5.54137693769f,5.97384712281f,6.43872029859f,6.93834316522f,7.47522768833f,8.05206247163f,8.67172489742f,9.33729408573f,10.0520647265f,10.8195618423f,11.6435565444f,12.5280828459f,13.4774556043f,14.4962896658f,15.5895202924f,16.7624249556f,18.0206465874f,19.370218383f,20.8175902599f,22.3696570803f};
+static const float Tangents_tune_88200_c1[129] = {0.00807213871123f,0.0080470549424f,0.00799418513572f,0.00791051464212f,0.00779277934752f,0.00763744724418f,0.00744069872375f,0.00719840550653f,0.00690610811632f,0.00655899180413f,0.00615186081813f,0.0056791109099f,0.00513469996078f,0.00451211660413f,0.0038043467112f,0.0030038376003f,0.00210245981947f,0.00109146634354f,-3.85509838274e-05f,-0.00129770794366f,-0.002696877562f,-0.00424774306167f,-0.00596285436248f,-0.0078556883602f,-0.00994071323065f,-0.0122334570202f,-0.0147505808001f,-0.0175099566797f,-0.0205307509953f,-0.0238335130053f,-0.0274402694501f,-0.0313746253533f,-0.0356618714658f,-0.0403290987807f,-0.0454053205733f,-0.0509216024482f,-0.0569112009073f,-0.0634097109852f,-0.0704552235292f,-0.0780884927439f,-0.0863531146536f,-0.095295717178f,-0.104966162563f,-0.115417762951f,-0.126707509933f,-0.138896318952f,-0.152049289531f,-0.166235982297f,-0.18153071389f,-0.19801287087f,-0.215767243842f,-0.234884383058f,-0.255460976873f,-0.277600254466f,-0.3014124144f,-0.327015080599f,-0.354533787512f,-0.384102496257f,-0.415864143736f,-0.449971226747f,-0.486586423332f,-0.525883253655f,-0.568046782917f,-0.613274368914f,-0.661776457052f,-0.713777425789f,-0.769516485611f,-0.829248634946f,-0.893245676511f,-0.961797297905f,-1.0352122204f,-1.11381942024f,-1.19796942689f,-1.28803570308f,-1.38441611167f,-1.48753447476f,-1.59784223075f,-1.71582019554f,-1.84198043398f,-1.97686824896f,-2.12106429478f,-2.27518682307f,-2.43989406898f,-2.6158867867f,-2.80391094322f,-3.00476058029f,-3.21928085489f,-3.44837126916f,-3.69298910159f,-3.95415305175f,-4.2329471118f,-4.53052467858f,-4.84811292129f,-5.18701742021f,-5.54862709332f,-5.93441942847f,-6.34596603966f,-6.78493856754f,-7.25311494501f,-7.75238605063f,-8.28476277304f,-8.85238351209f,-9.45752214325f,-10.1025964733f,-10.7901772176f,-11.5229975313f,-12.3039631268f,-13.1361630151f,-14.0228809083f,-14.9676073225f,-15.974052426f,-17.0461596762f,-18.1881202944f,-19.4043886291f,-20.6996984618f,-22.0790803131f,-23.5478798087f,-25.1117771718f,-26.7768079079f,-28.5493847563f,-30.4363209847f,-32.4448551076f,-34.582677115f,-36.8579563051f,-39.2793708149f,-41.8561389542f,-44.59805245f,-47.5155117192f,-50.6195632917f};
+static const float Tangents_tune_88200_c2[129] = {0.0287526529941f,0.0303525994983f,0.0320415753111f,0.0338245344842f,0.0357067067385f,0.0376936128037f,0.0397910806112f,0.042005262389f,0.0443426527067f,0.0468101075255f,0.0494148643079f,0.0521645632459f,0.0550672696718f,0.0581314977146f,0.0613662352733f,0.0647809703804f,0.0683857190316f,0.0721910545644f,0.0762081386716f,0.0804487541406f,0.0849253394137f,0.0896510250725f,0.0946396723529f,0.0999059138011f,0.105465196194f,0.111333825847f,0.117529016444f,0.124068939526f,0.130972777795f,0.138260781376f,0.145954327216f,0.154075981786f,0.162649567274f,0.171700231455f,0.181254521459f,0.191340461634f,0.201987635749f,0.213227273767f,0.225092343447f,0.237617647046f,0.250839923398f,0.264797955675f,0.279532685148f,0.295087331271f,0.311507518451f,0.328841409876f,0.347139848781f,0.366456507583f,0.386848045308f,0.408374273788f,0.43109833309f,0.455086876726f,0.480410267152f,0.507142782154f,0.53536283272f,0.565153193033f,0.596601243262f,0.629799225853f,0.664844516109f,0.701839907789f,0.740893914638f,0.782121088663f,0.825642356142f,0.871585372313f,0.920084895811f,0.971283183945f,1.02533040995f,1.08238510349f,1.14261461563f,1.20619560972f,1.27331457956f,1.34416839645f,1.41896488661f,1.49792344082f,1.58127565785f,1.66926602387f,1.7621526295f,1.86020792687f,1.96371952875f,2.07299105217f,2.18834300901f,2.31011374606f,2.43866043749f,2.5743601325f,2.71761086124f,2.86883280232f,3.0284695153f,3.19698924163f,3.3748862782f,3.5626824271f,3.7609285262f,3.97020606483f,4.19112888943f,4.42434500403f,4.67053847091f,4.93043141716f,5.20478615277f,5.49440740655f,5.80014468668f,6.1228947723f,6.46360434399f,6.82327276056f,7.20295499031f,7.60376470548f,8.02687754871f,8.47353458162f,8.94504592476f,9.44279460066f,9.96824059043f,10.522925116f,11.108475161f,11.7266082427f,12.3791374499f,13.0679767612f,13.7951466589f,14.5627800552f,15.3731285488f,16.2285690289f,17.1316106471f,18.0849021771f,19.0912397843f,20.1535752273f,21.2750245155f,22.4588770493f,23.7086052684f,25.0278748373f,26.4205553966f,27.8907319139f,29.4427166659f};
+float Tangents_tune_88200(float cut);
+
+static const float Tangents_tune_96000_c0[129] = {0.00107020957544f,0.00107029990139f,0.00107068002788f,0.00107158188985f,0.00107327346397f,0.00107606268078f,0.00108030169495f,0.00108639154362f,0.0010947872244f,0.00110600322792f,0.00112061956154f,0.00113928830468f,0.00116274073822f,0.00119179509477f,0.00122736497916f,0.00127046851302f,0.00132223826092f,0.00138393200012f,0.00145694440045f,0.00154281968605f,0.00164326535588f,0.00176016704574f,0.00189560462069f,0.0020518695933f,0.00223148397026f,0.00243722063761f,0.00267212540258f,0.00293954081913f,0.00324313193347f,0.00358691409547f,0.00397528299324f,0.0044130470789f,0.00490546256619f,0.00545827119353f,0.00607774096035f,0.00677071005919f,0.00754463424241f,0.00840763787952f,0.00936856897928f,0.0104370584707f,0.0116235840583f,0.0129395389881f,0.0143973060874f,0.0160103374653f,0.0177932402877f,0.0197618690729f,0.0219334249829f,0.0243265626193f,0.02696150487f,0.0298601663912f,0.0330462863474f,0.0365455710815f,0.0403858474278f,0.0445972274363f,0.0492122853262f,0.0542662475472f,0.0597971968836f,0.0658462916078f,0.0724580007546f,0.0796803566626f,0.0875652260139f,0.0961686006793f,0.105550909775f,0.115777354431f,0.126918266866f,0.139049495504f,0.152252817934f,0.166616383695f,0.182235188967f,0.199211585403f,0.217655825492f,0.237686647009f,0.259431899265f,0.283029214084f,0.308626724605f,0.336383835233f,0.366472046289f,0.399075837155f,0.434393611937f,0.472638711987f,0.514040499885f,0.558845519803f,0.607318739514f,0.65974487966f,0.71642983624f,0.777702202752f,0.843914898783f,0.915446912319f,0.992705163564f,1.07612649858f,1.1661798215f,1.26336837492f,1.36823217829f,1.48135063535f,1.60334532174f,1.73488296535f,1.87667863213f,2.02949913146f,2.19416665588f,2.3715626709f,2.56263207186f,2.76838762582f,2.98991471755f,3.22837642018f,3.48501891224f,3.76117726435f,4.05828162032f,4.37786379912f,4.72156434582f,5.0911400615f,5.48847204408f,5.91557427433f,6.37460278305f,6.86786543865f,7.39783239581f,7.96714724951f,8.57863894126f,9.23533446746f,9.94047244262f,10.6975175751f,11.5101761147f,12.3824123365f,13.3184661304f,14.3228717686f,15.400477928f,16.5564690522f,17.7963881394f,19.1261610513f,20.5521224426f};
+static const float Tangents_tune_96000_c1[129] = {0.00741627744094f,0.00739323172833f,0.00734465759344f,0.00726778532745f,0.00715961602553f,0.00701690465559f,0.00683614195245f,0.00661353505913f,0.00634498683187f,0.00602607372005f,0.00565202212666f,0.00521768314847f,0.00471750558896f,0.00414550713005f,0.00349524354092f,0.00275977579528f,0.00193163495913f,0.00100278470314f,-3.541871639e-05f,-0.00119226917324f,-0.00247775626008f,-0.0039026139379f,-0.00547837244553f,-0.00721741368093f,-0.00913303028065f,-0.0112394886374f,-0.0135520961101f,-0.0160872726994f,-0.0188626274769f,-0.0218970400736f,-0.0252107475573f,-0.0288254370434f,-0.0327643444092f,-0.0370523595047f,-0.0417161382767f,-0.0467842222493f,-0.0522871658336f,-0.0582576719677f,-0.0647307366174f,-0.0717438027084f,-0.0793369240879f,-0.0875529401573f,-0.0964376618546f,-0.106040069712f,-0.116412524751f,-0.127610993037f,-0.139695284756f,-0.152729308736f,-0.166781343386f,-0.181924325112f,-0.19823615528f,-0.215800026935f,-0.234704772502f,-0.255045233791f,-0.27692265573f,-0.300445105301f,-0.325727917276f,-0.352894168436f,-0.382075182057f,-0.413411064574f,-0.447051276436f,-0.483155239296f,-0.521892981805f,-0.563445826439f,-0.608007119917f,-0.655783009944f,-0.706993271156f,-0.761872183356f,-0.820669465295f,-0.883651267452f,-0.951101227492f,-1.02332159234f,-1.10063441096f,-1.18338280221f,-1.2719323026f,-1.36667229868f,-1.46801754951f,-1.57640980465f,-1.69231952372f,-1.81624770373f,-1.94872782083f,-2.09032789369f,-2.24165267588f,-2.40334598528f,-2.57609317909f,-2.76062378314f,-2.95771428543f,-3.16819110354f,-3.39293373708f,-3.6328781163f,-3.88902015896f,-4.16241954844f,-4.45420374643f,-4.76557225482f,-5.09780114199f,-5.45224784991f,-5.83035629895f,-6.23366230893f,-6.66379935574f,-7.12250468403f,-7.61162579773f,-8.13312735174f,-8.6890984691f,-9.28176050981f,-9.91347531868f,-10.5867539819f,-11.3042661227f,-12.0688497701f,-12.8835218345f,-13.7514892275f,-14.6761606663f,-15.6611592025f,-16.7103355204f,-17.827782053f,-19.0178479618f,-20.2851550377f,-21.6346145743f,-23.0714452766f,-24.6011922654f,-26.2297472449f,-27.9633699047f,-29.8087106301f,-31.7728345994f,-33.8632473553f,-36.0879219362f,-38.4553276642f,-40.9744606885f,-43.654876392f,-46.5067237741f};
+static const float Tangents_tune_96000_c2[129] = {0.0264164999383f,0.027886450789f,0.029438197317f,0.0310762910574f,0.032805536816f,0.0346310067634f,0.0365580553115f,0.0385923348199f,0.0407398121743f,0.0430067862891f,0.0453999065829f,0.0479261924822f,0.050593054011f,0.0534083135253f,0.0563802286573f,0.059517516537f,0.0628293793602f,0.066325531381f,0.0700162274046f,0.0739122928667f,0.0780251555863f,0.0823668792854f,0.0869501989743f,0.0917885583047f,0.096896149003f,0.102287952497f,0.107979783858f,0.11398833819f,0.120331239599f,0.127027092889f,0.13409553813f,0.141557308266f,0.149434289933f,0.157749587649f,0.16652759159f,0.175794049127f,0.185576140345f,0.195902557774f,0.206803590542f,0.218311213224f,0.230459179621f,0.243283121776f,0.25682065448f,0.271111485605f,0.286197532577f,0.302123045323f,0.318934736067f,0.336681916342f,0.355416641627f,0.375193864042f,0.396071593527f,0.418111067992f,0.441376932946f,0.465937431104f,0.491864602562f,0.5192344961f,0.548127392246f,0.578628038752f,0.610825899175f,0.644815415281f,0.680696284074f,0.718573750209f,0.758558914705f,0.800769060813f,0.845327998027f,0.89236642525f,0.942022314146f,0.994441313835f,1.04977717811f,1.10819221643f,1.16985776997f,1.23495471424f,1.30367398958f,1.37621716125f,1.45279701065f,1.53363815943f,1.61897772835f,1.70906603281f,1.80416731703f,1.90456052918f,2.01054013953f,2.1224170042f,2.24051927695f,2.36519337174f,2.49680497876f,2.63574013713f,2.78240636718f,2.93723386575f,3.1006767681f,3.2732144799f,3.45535308344f,3.64762682206f,3.85059966717f,4.06486697245f,4.29105722015f,4.52983386452f,4.78189727785f,5.04798680478f,5.32888293089f,5.62540957205f,5.93843649104f,6.26888184877f,6.61771489736f,6.98595882315f,7.37469374789f,7.78505989686f,8.21826094337f,8.67556753937f,9.15832104244f,9.66793745033f,10.2059115541f,10.7738213229f,11.3733325321f,12.0062036494f,12.6742909929f,13.3795541758f,14.1240618542f,14.9099977953f,15.739667282f,16.6155038752f,17.5400765519f,18.5160972401f,19.5464287735f,20.634093289f,21.7822810903f,22.9943600067f,24.2738852707f,25.624609946f,27.0504959368f};
+float Tangents_tune_96000(float cut);
+
+static const float Tangents_tune_176400_c0[129] = {0.00116485395967f,0.00116495227362f,0.00116536601674f,0.00116634763521f,0.00116818880433f,0.00117122468656f,0.00117583857954f,0.00118246698625f,0.00119160514221f,0.00120381303719f,0.00121972197175f,0.00124004169216f,0.00126556815045f,0.00129719193989f,0.00133590746031f,0.00138282287131f,0.00143917089624f,0.00150632054435f,0.00158578982362f,0.00167925952223f,0.00178858814245f,0.00191582807699f,0.00206324312457f,0.00223332744849f,0.00242882609008f,0.00265275715658f,0.00290843581233f,0.0031995002113f,0.00352993951942f,0.00390412418555f,0.0043268386321f,0.00480331654847f,0.00533927898361f,0.00594097544874f,0.00661522825616f,0.00736948033653f,0.00821184679445f,0.0091511704811f,0.0101970818822f,0.0113600636416f,0.0126515200635f,0.0140838519598f,0.015670537238f,0.0174262176493f,0.0193667921498f,0.0215095173582f,0.0238731156277f,0.0264778912863f,0.0293458556409f,0.0325008613781f,0.0359687470448f,0.0397774923336f,0.0439573849554f,0.0485411999306f,0.0535643921919f,0.0590653034527f,0.0650853843631f,0.0716694330426f,0.0788658511615f,0.0867269188165f,0.0953090895389f,0.104673306862f,0.114885343973f,0.126016168088f,0.138142331282f,0.151346389664f,0.165717352853f,0.181351165926f,0.198351226086f,0.216828936493f,0.236904299855f,0.258706554568f,0.282374856343f,0.308059008527f,0.335920244468f,0.366132065559f,0.398881138817f,0.434368258128f,0.472809373536f,0.514436693319f,0.55949986382f,0.608267232439f,0.661027199471f,0.718089664936f,0.779787576859f,0.846478588029f,0.918546828608f,0.996404802524f,1.08049541612f,1.17129414811f,1.26931137034f,1.37509482984f,1.4892323029f,1.61235443303f,1.74513776516f,1.8883079895f,2.04264340912f,2.20897864649f,2.38820860503f,2.58129270302f,2.78925939794f,3.0132110213f,3.25432894427f,3.5138790968f,3.79321786366f,4.09379838297f,4.41717727382f,4.76502182216f,5.13911765531f,5.54137693769f,5.97384712281f,6.43872029859f,6.93834316522f,7.47522768833f,8.05206247163f,8.67172489742f,9.33729408573f,10.0520647265f,10.8195618423f,11.6435565444f,12.5280828459f,13.4774556043f,14.4962896658f,15.5895202924f,16.7624249556f,18.0206465874f,19.370218383f,20.8175902599f,22.3696570803f};
+static const float Tangents_tune_176400_c1[129] = {0.00807213871123f,0.0080470549424f,0.00799418513572f,0.00791051464212f,0.00779277934752f,0.00763744724418f,0.00744069872375f,0.00719840550653f,0.00690610811632f,0.00655899180413f,0.00615186081813f,0.0056791109099f,0.00513469996078f,0.00451211660413f,0.0038043467112f,0.0030038376003f,0.00210245981947f,0.00109146634354f,-3.85509838274e-05f,-0.00129770794366f,-0.002696877562f,-0.00424774306167f,-0.00596285436248f,-0.0078556883602f,-0.00994071323065f,-0.0122334570202f,-0.0147505808001f,-0.0175099566797f,-0.0205307509953f,-0.0238335130053f,-0.0274402694501f,-0.0313746253533f,-0.0356618714658f,-0.0403290987807f,-0.0454053205733f,-0.0509216024482f,-0.0569112009073f,-0.0634097109852f,-0.0704552235292f,-0.0780884927439f,-0.0863531146536f,-0.095295717178f,-0.104966162563f,-0.115417762951f,-0.126707509933f,-0.138896318952f,-0.152049289531f,-0.166235982297f,-0.18153071389f,-0.19801287087f,-0.215767243842f,-0.234884383058f,-0.255460976873f,-0.277600254466f,-0.3014124144f,-0.327015080599f,-0.354533787512f,-0.384102496257f,-0.415864143736f,-0.449971226747f,-0.486586423332f,-0.525883253655f,-0.568046782917f,-0.613274368914f,-0.661776457052f,-0.713777425789f,-0.769516485611f,-0.829248634946f,-0.893245676511f,-0.961797297905f,-1.0352122204f,-1.11381942024f,-1.19796942689f,-1.28803570308f,-1.38441611167f,-1.48753447476f,-1.59784223075f,-1.71582019554f,-1.84198043398f,-1.97686824896f,-2.12106429478f,-2.27518682307f,-2.43989406898f,-2.6158867867f,-2.80391094322f,-3.00476058029f,-3.21928085489f,-3.44837126916f,-3.69298910159f,-3.95415305175f,-4.2329471118f,-4.53052467858f,-4.84811292129f,-5.18701742021f,-5.54862709332f,-5.93441942847f,-6.34596603966f,-6.78493856754f,-7.25311494501f,-7.75238605063f,-8.28476277304f,-8.85238351209f,-9.45752214325f,-10.1025964733f,-10.7901772176f,-11.5229975313f,-12.3039631268f,-13.1361630151f,-14.0228809083f,-14.9676073225f,-15.974052426f,-17.0461596762f,-18.1881202944f,-19.4043886291f,-20.6996984618f,-22.0790803131f,-23.5478798087f,-25.1117771718f,-26.7768079079f,-28.5493847563f,-30.4363209847f,-32.4448551076f,-34.582677115f,-36.8579563051f,-39.2793708149f,-41.8561389542f,-44.59805245f,-47.5155117192f,-50.6195632917f};
+static const float Tangents_tune_176400_c2[129] = {0.0287526529941f,0.0303525994983f,0.0320415753111f,0.0338245344842f,0.0357067067385f,0.0376936128037f,0.0397910806112f,0.042005262389f,0.0443426527067f,0.0468101075255f,0.0494148643079f,0.0521645632459f,0.0550672696718f,0.0581314977146f,0.0613662352733f,0.0647809703804f,0.0683857190316f,0.0721910545644f,0.0762081386716f,0.0804487541406f,0.0849253394137f,0.0896510250725f,0.0946396723529f,0.0999059138011f,0.105465196194f,0.111333825847f,0.117529016444f,0.124068939526f,0.130972777795f,0.138260781376f,0.145954327216f,0.154075981786f,0.162649567274f,0.171700231455f,0.181254521459f,0.191340461634f,0.201987635749f,0.213227273767f,0.225092343447f,0.237617647046f,0.250839923398f,0.264797955675f,0.279532685148f,0.295087331271f,0.311507518451f,0.328841409876f,0.347139848781f,0.366456507583f,0.386848045308f,0.408374273788f,0.43109833309f,0.455086876726f,0.480410267152f,0.507142782154f,0.53536283272f,0.565153193033f,0.596601243262f,0.629799225853f,0.664844516109f,0.701839907789f,0.740893914638f,0.782121088663f,0.825642356142f,0.871585372313f,0.920084895811f,0.971283183945f,1.02533040995f,1.08238510349f,1.14261461563f,1.20619560972f,1.27331457956f,1.34416839645f,1.41896488661f,1.49792344082f,1.58127565785f,1.66926602387f,1.7621526295f,1.86020792687f,1.96371952875f,2.07299105217f,2.18834300901f,2.31011374606f,2.43866043749f,2.5743601325f,2.71761086124f,2.86883280232f,3.0284695153f,3.19698924163f,3.3748862782f,3.5626824271f,3.7609285262f,3.97020606483f,4.19112888943f,4.42434500403f,4.67053847091f,4.93043141716f,5.20478615277f,5.49440740655f,5.80014468668f,6.1228947723f,6.46360434399f,6.82327276056f,7.20295499031f,7.60376470548f,8.02687754871f,8.47353458162f,8.94504592476f,9.44279460066f,9.96824059043f,10.522925116f,11.108475161f,11.7266082427f,12.3791374499f,13.0679767612f,13.7951466589f,14.5627800552f,15.3731285488f,16.2285690289f,17.1316106471f,18.0849021771f,19.0912397843f,20.1535752273f,21.2750245155f,22.4588770493f,23.7086052684f,25.0278748373f,26.4205553966f,27.8907319139f,29.4427166659f};
+float Tangents_tune_176400(float cut);
+
+static const float Tangents_tune_192000_c0[129] = {0.00107020957544f,0.00107029990139f,0.00107068002788f,0.00107158188985f,0.00107327346397f,0.00107606268078f,0.00108030169495f,0.00108639154362f,0.0010947872244f,0.00110600322792f,0.00112061956154f,0.00113928830468f,0.00116274073822f,0.00119179509477f,0.00122736497916f,0.00127046851302f,0.00132223826092f,0.00138393200012f,0.00145694440045f,0.00154281968605f,0.00164326535588f,0.00176016704574f,0.00189560462069f,0.0020518695933f,0.00223148397026f,0.00243722063761f,0.00267212540258f,0.00293954081913f,0.00324313193347f,0.00358691409547f,0.00397528299324f,0.0044130470789f,0.00490546256619f,0.00545827119353f,0.00607774096035f,0.00677071005919f,0.00754463424241f,0.00840763787952f,0.00936856897928f,0.0104370584707f,0.0116235840583f,0.0129395389881f,0.0143973060874f,0.0160103374653f,0.0177932402877f,0.0197618690729f,0.0219334249829f,0.0243265626193f,0.02696150487f,0.0298601663912f,0.0330462863474f,0.0365455710815f,0.0403858474278f,0.0445972274363f,0.0492122853262f,0.0542662475472f,0.0597971968836f,0.0658462916078f,0.0724580007546f,0.0796803566626f,0.0875652260139f,0.0961686006793f,0.105550909775f,0.115777354431f,0.126918266866f,0.139049495504f,0.152252817934f,0.166616383695f,0.182235188967f,0.199211585403f,0.217655825492f,0.237686647009f,0.259431899265f,0.283029214084f,0.308626724605f,0.336383835233f,0.366472046289f,0.399075837155f,0.434393611937f,0.472638711987f,0.514040499885f,0.558845519803f,0.607318739514f,0.65974487966f,0.71642983624f,0.777702202752f,0.843914898783f,0.915446912319f,0.992705163564f,1.07612649858f,1.1661798215f,1.26336837492f,1.36823217829f,1.48135063535f,1.60334532174f,1.73488296535f,1.87667863213f,2.02949913146f,2.19416665588f,2.3715626709f,2.56263207186f,2.76838762582f,2.98991471755f,3.22837642018f,3.48501891224f,3.76117726435f,4.05828162032f,4.37786379912f,4.72156434582f,5.0911400615f,5.48847204408f,5.91557427433f,6.37460278305f,6.86786543865f,7.39783239581f,7.96714724951f,8.57863894126f,9.23533446746f,9.94047244262f,10.6975175751f,11.5101761147f,12.3824123365f,13.3184661304f,14.3228717686f,15.400477928f,16.5564690522f,17.7963881394f,19.1261610513f,20.5521224426f};
+static const float Tangents_tune_192000_c1[129] = {0.00741627744094f,0.00739323172833f,0.00734465759344f,0.00726778532745f,0.00715961602553f,0.00701690465559f,0.00683614195245f,0.00661353505913f,0.00634498683187f,0.00602607372005f,0.00565202212666f,0.00521768314847f,0.00471750558896f,0.00414550713005f,0.00349524354092f,0.00275977579528f,0.00193163495913f,0.00100278470314f,-3.541871639e-05f,-0.00119226917324f,-0.00247775626008f,-0.0039026139379f,-0.00547837244553f,-0.00721741368093f,-0.00913303028065f,-0.0112394886374f,-0.0135520961101f,-0.0160872726994f,-0.0188626274769f,-0.0218970400736f,-0.0252107475573f,-0.0288254370434f,-0.0327643444092f,-0.0370523595047f,-0.0417161382767f,-0.0467842222493f,-0.0522871658336f,-0.0582576719677f,-0.0647307366174f,-0.0717438027084f,-0.0793369240879f,-0.0875529401573f,-0.0964376618546f,-0.106040069712f,-0.116412524751f,-0.127610993037f,-0.139695284756f,-0.152729308736f,-0.166781343386f,-0.181924325112f,-0.19823615528f,-0.215800026935f,-0.234704772502f,-0.255045233791f,-0.27692265573f,-0.300445105301f,-0.325727917276f,-0.352894168436f,-0.382075182057f,-0.413411064574f,-0.447051276436f,-0.483155239296f,-0.521892981805f,-0.563445826439f,-0.608007119917f,-0.655783009944f,-0.706993271156f,-0.761872183356f,-0.820669465295f,-0.883651267452f,-0.951101227492f,-1.02332159234f,-1.10063441096f,-1.18338280221f,-1.2719323026f,-1.36667229868f,-1.46801754951f,-1.57640980465f,-1.69231952372f,-1.81624770373f,-1.94872782083f,-2.09032789369f,-2.24165267588f,-2.40334598528f,-2.57609317909f,-2.76062378314f,-2.95771428543f,-3.16819110354f,-3.39293373708f,-3.6328781163f,-3.88902015896f,-4.16241954844f,-4.45420374643f,-4.76557225482f,-5.09780114199f,-5.45224784991f,-5.83035629895f,-6.23366230893f,-6.66379935574f,-7.12250468403f,-7.61162579773f,-8.13312735174f,-8.6890984691f,-9.28176050981f,-9.91347531868f,-10.5867539819f,-11.3042661227f,-12.0688497701f,-12.8835218345f,-13.7514892275f,-14.6761606663f,-15.6611592025f,-16.7103355204f,-17.827782053f,-19.0178479618f,-20.2851550377f,-21.6346145743f,-23.0714452766f,-24.6011922654f,-26.2297472449f,-27.9633699047f,-29.8087106301f,-31.7728345994f,-33.8632473553f,-36.0879219362f,-38.4553276642f,-40.9744606885f,-43.654876392f,-46.5067237741f};
+static const float Tangents_tune_192000_c2[129] = {0.0264164999383f,0.027886450789f,0.029438197317f,0.0310762910574f,0.032805536816f,0.0346310067634f,0.0365580553115f,0.0385923348199f,0.0407398121743f,0.0430067862891f,0.0453999065829f,0.0479261924822f,0.050593054011f,0.0534083135253f,0.0563802286573f,0.059517516537f,0.0628293793602f,0.066325531381f,0.0700162274046f,0.0739122928667f,0.0780251555863f,0.0823668792854f,0.0869501989743f,0.0917885583047f,0.096896149003f,0.102287952497f,0.107979783858f,0.11398833819f,0.120331239599f,0.127027092889f,0.13409553813f,0.141557308266f,0.149434289933f,0.157749587649f,0.16652759159f,0.175794049127f,0.185576140345f,0.195902557774f,0.206803590542f,0.218311213224f,0.230459179621f,0.243283121776f,0.25682065448f,0.271111485605f,0.286197532577f,0.302123045323f,0.318934736067f,0.336681916342f,0.355416641627f,0.375193864042f,0.396071593527f,0.418111067992f,0.441376932946f,0.465937431104f,0.491864602562f,0.5192344961f,0.548127392246f,0.578628038752f,0.610825899175f,0.644815415281f,0.680696284074f,0.718573750209f,0.758558914705f,0.800769060813f,0.845327998027f,0.89236642525f,0.942022314146f,0.994441313835f,1.04977717811f,1.10819221643f,1.16985776997f,1.23495471424f,1.30367398958f,1.37621716125f,1.45279701065f,1.53363815943f,1.61897772835f,1.70906603281f,1.80416731703f,1.90456052918f,2.01054013953f,2.1224170042f,2.24051927695f,2.36519337174f,2.49680497876f,2.63574013713f,2.78240636718f,2.93723386575f,3.1006767681f,3.2732144799f,3.45535308344f,3.64762682206f,3.85059966717f,4.06486697245f,4.29105722015f,4.52983386452f,4.78189727785f,5.04798680478f,5.32888293089f,5.62540957205f,5.93843649104f,6.26888184877f,6.61771489736f,6.98595882315f,7.37469374789f,7.78505989686f,8.21826094337f,8.67556753937f,9.15832104244f,9.66793745033f,10.2059115541f,10.7738213229f,11.3733325321f,12.0062036494f,12.6742909929f,13.3795541758f,14.1240618542f,14.9099977953f,15.739667282f,16.6155038752f,17.5400765519f,18.5160972401f,19.5464287735f,20.634093289f,21.7822810903f,22.9943600067f,24.2738852707f,25.624609946f,27.0504959368f};
+float Tangents_tune_192000(float cut);
+
+float Tangents_getTune(float cut, float fs);
+
+typedef struct Tangents__ctx_type_8 {
+ float p1;
+ float p0;
+} Tangents__ctx_type_8;
+
+typedef Tangents__ctx_type_8 Tangents_heun_type;
+
+void Tangents__ctx_type_8_init(Tangents__ctx_type_8 &_output_);
+
+void Tangents_heun_init(Tangents__ctx_type_8 &_output_);
+
+float Tangents_heun(Tangents__ctx_type_8 &_ctx, float lp, float bp, float hp, float wh, float cut, float res);
+
+typedef struct Tangents__ctx_type_9 {
+ Tangents__ctx_type_8 h;
+ float fh;
+ Util__ctx_type_3 _inst223;
+ Util__ctx_type_3 _inst222;
+} Tangents__ctx_type_9;
+
+typedef Tangents__ctx_type_9 Tangents_process_heun_type;
+
+void Tangents__ctx_type_9_init(Tangents__ctx_type_9 &_output_);
+
+void Tangents_process_heun_init(Tangents__ctx_type_9 &_output_);
+
+float Tangents_process_heun(Tangents__ctx_type_9 &_ctx, float lp, float bp, float hp, float cut, float res);
+
+typedef struct Tangents__ctx_type_10 {
+ int x1;
+} Tangents__ctx_type_10;
+
+typedef Tangents__ctx_type_10 Tangents_simple_noise_type;
+
+void Tangents__ctx_type_10_init(Tangents__ctx_type_10 &_output_);
+
+void Tangents_simple_noise_init(Tangents__ctx_type_10 &_output_);
+
+float Tangents_simple_noise(Tangents__ctx_type_10 &_ctx);
+
+typedef struct Tangents__ctx_type_11 {
+ Tangents__ctx_type_9 _inst232;
+ Util__ctx_type_18 _inst231;
+} Tangents__ctx_type_11;
+
+typedef Tangents__ctx_type_11 Tangents_process_type;
+
+void Tangents__ctx_type_11_init(Tangents__ctx_type_11 &_output_);
+
+void Tangents_process_init(Tangents__ctx_type_11 &_output_);
+
+float Tangents_process(Tangents__ctx_type_11 &_ctx, float lp, float bp, float hp, float cut_in, float res_in);
+
+typedef struct Rescomb__ctx_type_0 {
+ int write_pos;
+ float buffer[3000];
+} Rescomb__ctx_type_0;
+
+typedef Rescomb__ctx_type_0 Rescomb_delay_type;
+
+void Rescomb__ctx_type_0_init(Rescomb__ctx_type_0 &_output_);
+
+void Rescomb_delay_init(Rescomb__ctx_type_0 &_output_);
+
+float Rescomb_delay(Rescomb__ctx_type_0 &_ctx, float x, float cv);
+
+static const float Rescomb_toneCurve_c0[65] = {-0.407542156262f,-0.401019236635f,-0.394388383134f,-0.387644050158f,-0.380780199962f,-0.373790239213f,-0.366666944608f,-0.359402375163f,-0.351987768132f,-0.344413414671f,-0.336668510166f,-0.328740972639f,-0.320617220483f,-0.312281897759f,-0.303717531104f,-0.294904096151f,-0.285818462398f,-0.27643367201f,-0.266717987277f,-0.256633608734f,-0.246134912531f,-0.235165965467f,-0.223656917252f,-0.21151857576f,-0.19863389446f,-0.184843884389f,-0.169922647521f,-0.153528875743f,-0.135098437107f,-0.113551919189f,-0.0861122440189f,-0.f,-0.f,0.0861122440189f,0.113551919189f,0.135098437107f,0.153528875743f,0.169922647521f,0.184843884389f,0.19863389446f,0.21151857576f,0.223656917252f,0.235165965467f,0.246134912531f,0.256633608734f,0.266717987277f,0.27643367201f,0.285818462398f,0.294904096151f,0.303717531104f,0.312281897759f,0.320617220483f,0.328740972639f,0.336668510166f,0.344413414671f,0.351987768132f,0.359402375163f,0.366666944609f,0.373790239214f,0.380780199962f,0.387644050158f,0.394388383134f,0.401019236634f,0.407542156262f,0.413962249907f};
+static const float Rescomb_toneCurve_c1[65] = {0.690098162805f,0.701322215558f,0.713112447078f,0.725518123656f,0.738594731061f,0.752405022038f,0.767020287893f,0.7825219131f,0.799003290535f,0.816572200617f,0.835353793294f,0.855494362207f,0.877166172468f,0.900573708429f,0.925961863192f,0.953626826236f,0.983930787369f,1.01732214684f,1.05436384867f,1.0957740044f,1.14248565554f,1.19573734571f,1.25721525154f,1.32928564682f,1.41539462687f,1.52079931839f,1.65401503979f,1.8299936714f,2.07819794369f,2.46822722813f,3.23198211243f,9.44195707186f,9.44195707186f,3.23198211243f,2.46822722813f,2.07819794369f,1.8299936714f,1.65401503979f,1.52079931839f,1.41539462687f,1.32928564682f,1.25721525154f,1.19573734571f,1.14248565554f,1.0957740044f,1.05436384867f,1.01732214684f,0.983930787369f,0.953626826236f,0.925961863192f,0.900573708429f,0.877166172468f,0.855494362207f,0.835353793294f,0.816572200617f,0.799003290535f,0.7825219131f,0.767020287893f,0.752405022038f,0.738594731061f,0.725518123656f,0.713112447077f,0.701322215557f,0.690098162805f,0.679396373344f};
+static const float Rescomb_toneCurve_c2[65] = {0.0973714143181f,0.102199749023f,0.107440761929f,0.113145581316f,0.119373778667f,0.126195137719f,0.13369187892f,0.141961480126f,0.15112028588f,0.161308171094f,0.172694631264f,0.185486827573f,0.199940348532f,0.216373804533f,0.235188921814f,0.256898674032f,0.282167404384f,0.311869249124f,0.347175221834f,0.389686506f,0.441644761851f,0.506275800266f,0.588374761849f,0.695352358887f,0.839219166827f,1.04063371853f,1.33796311007f,1.81020408148f,2.64576862402f,4.41025467483f,9.7154886575f,114.079447384f,-114.079447384f,-9.7154886575f,-4.41025467483f,-2.64576862402f,-1.81020408148f,-1.33796311007f,-1.04063371853f,-0.839219166827f,-0.695352358888f,-0.588374761849f,-0.506275800266f,-0.441644761851f,-0.389686506f,-0.347175221833f,-0.311869249124f,-0.282167404384f,-0.256898674032f,-0.235188921814f,-0.216373804533f,-0.199940348532f,-0.185486827573f,-0.172694631264f,-0.161308171094f,-0.15112028588f,-0.141961480126f,-0.13369187892f,-0.126195137719f,-0.119373778666f,-0.113145581316f,-0.107440761929f,-0.102199749023f,-0.0973714143179f,-0.0929116547982f};
+float Rescomb_toneCurve(float tone);
+
+typedef struct Rescomb__ctx_type_2 {
+ float stone;
+ float output;
+ Rescomb__ctx_type_0 _inst249;
+ Util__ctx_type_9 _inst248;
+ Util__ctx_type_3 _inst246;
+} Rescomb__ctx_type_2;
+
+typedef Rescomb__ctx_type_2 Rescomb_do_type;
+
+void Rescomb__ctx_type_2_init(Rescomb__ctx_type_2 &_output_);
+
+void Rescomb_do_init(Rescomb__ctx_type_2 &_output_);
+
+float Rescomb_do(Rescomb__ctx_type_2 &_ctx, float in, float cv, float tone, float res);
+
+float Lateralus_tune(float cut, float fs, float oversampling);
+
+static const float Lateralus_tune_44100_c0[129] = {0.00116485395967f,0.00116495227362f,0.00116536601674f,0.00116634763521f,0.00116818880433f,0.00117122468656f,0.00117583857954f,0.00118246698625f,0.00119160514221f,0.00120381303719f,0.00121972197175f,0.00124004169216f,0.00126556815045f,0.00129719193989f,0.00133590746031f,0.00138282287131f,0.00143917089624f,0.00150632054435f,0.00158578982362f,0.00167925952223f,0.00178858814245f,0.00191582807699f,0.00206324312457f,0.00223332744849f,0.00242882609008f,0.00265275715658f,0.00290843581233f,0.0031995002113f,0.00352993951942f,0.00390412418555f,0.0043268386321f,0.00480331654847f,0.00533927898361f,0.00594097544874f,0.00661522825616f,0.00736948033653f,0.00821184679445f,0.0091511704811f,0.0101970818822f,0.0113600636416f,0.0126515200635f,0.0140838519598f,0.015670537238f,0.0174262176493f,0.0193667921498f,0.0215095173582f,0.0238731156277f,0.0264778912863f,0.0293458556409f,0.0325008613781f,0.0359687470448f,0.0397774923336f,0.0439573849554f,0.0485411999306f,0.0535643921919f,0.0590653034527f,0.0650853843631f,0.0716694330426f,0.0788658511615f,0.0867269188165f,0.0953090895389f,0.104673306862f,0.114885343973f,0.126016168088f,0.138142331282f,0.151346389664f,0.165717352853f,0.181351165926f,0.198351226086f,0.216828936493f,0.236904299855f,0.258706554568f,0.282374856343f,0.308059008527f,0.335920244468f,0.366132065559f,0.398881138817f,0.434368258128f,0.472809373536f,0.514436693319f,0.55949986382f,0.608267232439f,0.661027199471f,0.718089664936f,0.779787576859f,0.846478588029f,0.918546828608f,0.996404802524f,1.08049541612f,1.17129414811f,1.26931137034f,1.37509482984f,1.4892323029f,1.61235443303f,1.74513776516f,1.8883079895f,2.04264340912f,2.20897864649f,2.38820860503f,2.58129270302f,2.78925939794f,3.0132110213f,3.25432894427f,3.5138790968f,3.79321786366f,4.09379838297f,4.41717727382f,4.76502182216f,5.13911765531f,5.54137693769f,5.97384712281f,6.43872029859f,6.93834316522f,7.47522768833f,8.05206247163f,8.67172489742f,9.33729408573f,10.0520647265f,10.8195618423f,11.6435565444f,12.5280828459f,13.4774556043f,14.4962896658f,15.5895202924f,16.7624249556f,18.0206465874f,19.370218383f,20.8175902599f,22.3696570803f};
+static const float Lateralus_tune_44100_c1[129] = {0.00807213871123f,0.0080470549424f,0.00799418513572f,0.00791051464212f,0.00779277934752f,0.00763744724418f,0.00744069872375f,0.00719840550653f,0.00690610811632f,0.00655899180413f,0.00615186081813f,0.0056791109099f,0.00513469996078f,0.00451211660413f,0.0038043467112f,0.0030038376003f,0.00210245981947f,0.00109146634354f,-3.85509838274e-05f,-0.00129770794366f,-0.002696877562f,-0.00424774306167f,-0.00596285436248f,-0.0078556883602f,-0.00994071323065f,-0.0122334570202f,-0.0147505808001f,-0.0175099566797f,-0.0205307509953f,-0.0238335130053f,-0.0274402694501f,-0.0313746253533f,-0.0356618714658f,-0.0403290987807f,-0.0454053205733f,-0.0509216024482f,-0.0569112009073f,-0.0634097109852f,-0.0704552235292f,-0.0780884927439f,-0.0863531146536f,-0.095295717178f,-0.104966162563f,-0.115417762951f,-0.126707509933f,-0.138896318952f,-0.152049289531f,-0.166235982297f,-0.18153071389f,-0.19801287087f,-0.215767243842f,-0.234884383058f,-0.255460976873f,-0.277600254466f,-0.3014124144f,-0.327015080599f,-0.354533787512f,-0.384102496257f,-0.415864143736f,-0.449971226747f,-0.486586423332f,-0.525883253655f,-0.568046782917f,-0.613274368914f,-0.661776457052f,-0.713777425789f,-0.769516485611f,-0.829248634946f,-0.893245676511f,-0.961797297905f,-1.0352122204f,-1.11381942024f,-1.19796942689f,-1.28803570308f,-1.38441611167f,-1.48753447476f,-1.59784223075f,-1.71582019554f,-1.84198043398f,-1.97686824896f,-2.12106429478f,-2.27518682307f,-2.43989406898f,-2.6158867867f,-2.80391094322f,-3.00476058029f,-3.21928085489f,-3.44837126916f,-3.69298910159f,-3.95415305175f,-4.2329471118f,-4.53052467858f,-4.84811292129f,-5.18701742021f,-5.54862709332f,-5.93441942847f,-6.34596603966f,-6.78493856754f,-7.25311494501f,-7.75238605063f,-8.28476277304f,-8.85238351209f,-9.45752214325f,-10.1025964733f,-10.7901772176f,-11.5229975313f,-12.3039631268f,-13.1361630151f,-14.0228809083f,-14.9676073225f,-15.974052426f,-17.0461596762f,-18.1881202944f,-19.4043886291f,-20.6996984618f,-22.0790803131f,-23.5478798087f,-25.1117771718f,-26.7768079079f,-28.5493847563f,-30.4363209847f,-32.4448551076f,-34.582677115f,-36.8579563051f,-39.2793708149f,-41.8561389542f,-44.59805245f,-47.5155117192f,-50.6195632917f};
+static const float Lateralus_tune_44100_c2[129] = {0.0287526529941f,0.0303525994983f,0.0320415753111f,0.0338245344842f,0.0357067067385f,0.0376936128037f,0.0397910806112f,0.042005262389f,0.0443426527067f,0.0468101075255f,0.0494148643079f,0.0521645632459f,0.0550672696718f,0.0581314977146f,0.0613662352733f,0.0647809703804f,0.0683857190316f,0.0721910545644f,0.0762081386716f,0.0804487541406f,0.0849253394137f,0.0896510250725f,0.0946396723529f,0.0999059138011f,0.105465196194f,0.111333825847f,0.117529016444f,0.124068939526f,0.130972777795f,0.138260781376f,0.145954327216f,0.154075981786f,0.162649567274f,0.171700231455f,0.181254521459f,0.191340461634f,0.201987635749f,0.213227273767f,0.225092343447f,0.237617647046f,0.250839923398f,0.264797955675f,0.279532685148f,0.295087331271f,0.311507518451f,0.328841409876f,0.347139848781f,0.366456507583f,0.386848045308f,0.408374273788f,0.43109833309f,0.455086876726f,0.480410267152f,0.507142782154f,0.53536283272f,0.565153193033f,0.596601243262f,0.629799225853f,0.664844516109f,0.701839907789f,0.740893914638f,0.782121088663f,0.825642356142f,0.871585372313f,0.920084895811f,0.971283183945f,1.02533040995f,1.08238510349f,1.14261461563f,1.20619560972f,1.27331457956f,1.34416839645f,1.41896488661f,1.49792344082f,1.58127565785f,1.66926602387f,1.7621526295f,1.86020792687f,1.96371952875f,2.07299105217f,2.18834300901f,2.31011374606f,2.43866043749f,2.5743601325f,2.71761086124f,2.86883280232f,3.0284695153f,3.19698924163f,3.3748862782f,3.5626824271f,3.7609285262f,3.97020606483f,4.19112888943f,4.42434500403f,4.67053847091f,4.93043141716f,5.20478615277f,5.49440740655f,5.80014468668f,6.1228947723f,6.46360434399f,6.82327276056f,7.20295499031f,7.60376470548f,8.02687754871f,8.47353458162f,8.94504592476f,9.44279460066f,9.96824059043f,10.522925116f,11.108475161f,11.7266082427f,12.3791374499f,13.0679767612f,13.7951466589f,14.5627800552f,15.3731285488f,16.2285690289f,17.1316106471f,18.0849021771f,19.0912397843f,20.1535752273f,21.2750245155f,22.4588770493f,23.7086052684f,25.0278748373f,26.4205553966f,27.8907319139f,29.4427166659f};
+float Lateralus_tune_44100(float cut);
+
+static const float Lateralus_tune_48000_c0[129] = {0.00107020957544f,0.00107029990139f,0.00107068002788f,0.00107158188985f,0.00107327346397f,0.00107606268078f,0.00108030169495f,0.00108639154362f,0.0010947872244f,0.00110600322792f,0.00112061956154f,0.00113928830468f,0.00116274073822f,0.00119179509477f,0.00122736497916f,0.00127046851302f,0.00132223826092f,0.00138393200012f,0.00145694440045f,0.00154281968605f,0.00164326535588f,0.00176016704574f,0.00189560462069f,0.0020518695933f,0.00223148397026f,0.00243722063761f,0.00267212540258f,0.00293954081913f,0.00324313193347f,0.00358691409547f,0.00397528299324f,0.0044130470789f,0.00490546256619f,0.00545827119353f,0.00607774096035f,0.00677071005919f,0.00754463424241f,0.00840763787952f,0.00936856897928f,0.0104370584707f,0.0116235840583f,0.0129395389881f,0.0143973060874f,0.0160103374653f,0.0177932402877f,0.0197618690729f,0.0219334249829f,0.0243265626193f,0.02696150487f,0.0298601663912f,0.0330462863474f,0.0365455710815f,0.0403858474278f,0.0445972274363f,0.0492122853262f,0.0542662475472f,0.0597971968836f,0.0658462916078f,0.0724580007546f,0.0796803566626f,0.0875652260139f,0.0961686006793f,0.105550909775f,0.115777354431f,0.126918266866f,0.139049495504f,0.152252817934f,0.166616383695f,0.182235188967f,0.199211585403f,0.217655825492f,0.237686647009f,0.259431899265f,0.283029214084f,0.308626724605f,0.336383835233f,0.366472046289f,0.399075837155f,0.434393611937f,0.472638711987f,0.514040499885f,0.558845519803f,0.607318739514f,0.65974487966f,0.71642983624f,0.777702202752f,0.843914898783f,0.915446912319f,0.992705163564f,1.07612649858f,1.1661798215f,1.26336837492f,1.36823217829f,1.48135063535f,1.60334532174f,1.73488296535f,1.87667863213f,2.02949913146f,2.19416665588f,2.3715626709f,2.56263207186f,2.76838762582f,2.98991471755f,3.22837642018f,3.48501891224f,3.76117726435f,4.05828162032f,4.37786379912f,4.72156434582f,5.0911400615f,5.48847204408f,5.91557427433f,6.37460278305f,6.86786543865f,7.39783239581f,7.96714724951f,8.57863894126f,9.23533446746f,9.94047244262f,10.6975175751f,11.5101761147f,12.3824123365f,13.3184661304f,14.3228717686f,15.400477928f,16.5564690522f,17.7963881394f,19.1261610513f,20.5521224426f};
+static const float Lateralus_tune_48000_c1[129] = {0.00741627744094f,0.00739323172833f,0.00734465759344f,0.00726778532745f,0.00715961602553f,0.00701690465559f,0.00683614195245f,0.00661353505913f,0.00634498683187f,0.00602607372005f,0.00565202212666f,0.00521768314847f,0.00471750558896f,0.00414550713005f,0.00349524354092f,0.00275977579528f,0.00193163495913f,0.00100278470314f,-3.541871639e-05f,-0.00119226917324f,-0.00247775626008f,-0.0039026139379f,-0.00547837244553f,-0.00721741368093f,-0.00913303028065f,-0.0112394886374f,-0.0135520961101f,-0.0160872726994f,-0.0188626274769f,-0.0218970400736f,-0.0252107475573f,-0.0288254370434f,-0.0327643444092f,-0.0370523595047f,-0.0417161382767f,-0.0467842222493f,-0.0522871658336f,-0.0582576719677f,-0.0647307366174f,-0.0717438027084f,-0.0793369240879f,-0.0875529401573f,-0.0964376618546f,-0.106040069712f,-0.116412524751f,-0.127610993037f,-0.139695284756f,-0.152729308736f,-0.166781343386f,-0.181924325112f,-0.19823615528f,-0.215800026935f,-0.234704772502f,-0.255045233791f,-0.27692265573f,-0.300445105301f,-0.325727917276f,-0.352894168436f,-0.382075182057f,-0.413411064574f,-0.447051276436f,-0.483155239296f,-0.521892981805f,-0.563445826439f,-0.608007119917f,-0.655783009944f,-0.706993271156f,-0.761872183356f,-0.820669465295f,-0.883651267452f,-0.951101227492f,-1.02332159234f,-1.10063441096f,-1.18338280221f,-1.2719323026f,-1.36667229868f,-1.46801754951f,-1.57640980465f,-1.69231952372f,-1.81624770373f,-1.94872782083f,-2.09032789369f,-2.24165267588f,-2.40334598528f,-2.57609317909f,-2.76062378314f,-2.95771428543f,-3.16819110354f,-3.39293373708f,-3.6328781163f,-3.88902015896f,-4.16241954844f,-4.45420374643f,-4.76557225482f,-5.09780114199f,-5.45224784991f,-5.83035629895f,-6.23366230893f,-6.66379935574f,-7.12250468403f,-7.61162579773f,-8.13312735174f,-8.6890984691f,-9.28176050981f,-9.91347531868f,-10.5867539819f,-11.3042661227f,-12.0688497701f,-12.8835218345f,-13.7514892275f,-14.6761606663f,-15.6611592025f,-16.7103355204f,-17.827782053f,-19.0178479618f,-20.2851550377f,-21.6346145743f,-23.0714452766f,-24.6011922654f,-26.2297472449f,-27.9633699047f,-29.8087106301f,-31.7728345994f,-33.8632473553f,-36.0879219362f,-38.4553276642f,-40.9744606885f,-43.654876392f,-46.5067237741f};
+static const float Lateralus_tune_48000_c2[129] = {0.0264164999383f,0.027886450789f,0.029438197317f,0.0310762910574f,0.032805536816f,0.0346310067634f,0.0365580553115f,0.0385923348199f,0.0407398121743f,0.0430067862891f,0.0453999065829f,0.0479261924822f,0.050593054011f,0.0534083135253f,0.0563802286573f,0.059517516537f,0.0628293793602f,0.066325531381f,0.0700162274046f,0.0739122928667f,0.0780251555863f,0.0823668792854f,0.0869501989743f,0.0917885583047f,0.096896149003f,0.102287952497f,0.107979783858f,0.11398833819f,0.120331239599f,0.127027092889f,0.13409553813f,0.141557308266f,0.149434289933f,0.157749587649f,0.16652759159f,0.175794049127f,0.185576140345f,0.195902557774f,0.206803590542f,0.218311213224f,0.230459179621f,0.243283121776f,0.25682065448f,0.271111485605f,0.286197532577f,0.302123045323f,0.318934736067f,0.336681916342f,0.355416641627f,0.375193864042f,0.396071593527f,0.418111067992f,0.441376932946f,0.465937431104f,0.491864602562f,0.5192344961f,0.548127392246f,0.578628038752f,0.610825899175f,0.644815415281f,0.680696284074f,0.718573750209f,0.758558914705f,0.800769060813f,0.845327998027f,0.89236642525f,0.942022314146f,0.994441313835f,1.04977717811f,1.10819221643f,1.16985776997f,1.23495471424f,1.30367398958f,1.37621716125f,1.45279701065f,1.53363815943f,1.61897772835f,1.70906603281f,1.80416731703f,1.90456052918f,2.01054013953f,2.1224170042f,2.24051927695f,2.36519337174f,2.49680497876f,2.63574013713f,2.78240636718f,2.93723386575f,3.1006767681f,3.2732144799f,3.45535308344f,3.64762682206f,3.85059966717f,4.06486697245f,4.29105722015f,4.52983386452f,4.78189727785f,5.04798680478f,5.32888293089f,5.62540957205f,5.93843649104f,6.26888184877f,6.61771489736f,6.98595882315f,7.37469374789f,7.78505989686f,8.21826094337f,8.67556753937f,9.15832104244f,9.66793745033f,10.2059115541f,10.7738213229f,11.3733325321f,12.0062036494f,12.6742909929f,13.3795541758f,14.1240618542f,14.9099977953f,15.739667282f,16.6155038752f,17.5400765519f,18.5160972401f,19.5464287735f,20.634093289f,21.7822810903f,22.9943600067f,24.2738852707f,25.624609946f,27.0504959368f};
+float Lateralus_tune_48000(float cut);
+
+static const float Lateralus_tune_88200_c0[129] = {0.00116485395967f,0.00116495227362f,0.00116536601674f,0.00116634763521f,0.00116818880433f,0.00117122468656f,0.00117583857954f,0.00118246698625f,0.00119160514221f,0.00120381303719f,0.00121972197175f,0.00124004169216f,0.00126556815045f,0.00129719193989f,0.00133590746031f,0.00138282287131f,0.00143917089624f,0.00150632054435f,0.00158578982362f,0.00167925952223f,0.00178858814245f,0.00191582807699f,0.00206324312457f,0.00223332744849f,0.00242882609008f,0.00265275715658f,0.00290843581233f,0.0031995002113f,0.00352993951942f,0.00390412418555f,0.0043268386321f,0.00480331654847f,0.00533927898361f,0.00594097544874f,0.00661522825616f,0.00736948033653f,0.00821184679445f,0.0091511704811f,0.0101970818822f,0.0113600636416f,0.0126515200635f,0.0140838519598f,0.015670537238f,0.0174262176493f,0.0193667921498f,0.0215095173582f,0.0238731156277f,0.0264778912863f,0.0293458556409f,0.0325008613781f,0.0359687470448f,0.0397774923336f,0.0439573849554f,0.0485411999306f,0.0535643921919f,0.0590653034527f,0.0650853843631f,0.0716694330426f,0.0788658511615f,0.0867269188165f,0.0953090895389f,0.104673306862f,0.114885343973f,0.126016168088f,0.138142331282f,0.151346389664f,0.165717352853f,0.181351165926f,0.198351226086f,0.216828936493f,0.236904299855f,0.258706554568f,0.282374856343f,0.308059008527f,0.335920244468f,0.366132065559f,0.398881138817f,0.434368258128f,0.472809373536f,0.514436693319f,0.55949986382f,0.608267232439f,0.661027199471f,0.718089664936f,0.779787576859f,0.846478588029f,0.918546828608f,0.996404802524f,1.08049541612f,1.17129414811f,1.26931137034f,1.37509482984f,1.4892323029f,1.61235443303f,1.74513776516f,1.8883079895f,2.04264340912f,2.20897864649f,2.38820860503f,2.58129270302f,2.78925939794f,3.0132110213f,3.25432894427f,3.5138790968f,3.79321786366f,4.09379838297f,4.41717727382f,4.76502182216f,5.13911765531f,5.54137693769f,5.97384712281f,6.43872029859f,6.93834316522f,7.47522768833f,8.05206247163f,8.67172489742f,9.33729408573f,10.0520647265f,10.8195618423f,11.6435565444f,12.5280828459f,13.4774556043f,14.4962896658f,15.5895202924f,16.7624249556f,18.0206465874f,19.370218383f,20.8175902599f,22.3696570803f};
+static const float Lateralus_tune_88200_c1[129] = {0.00807213871123f,0.0080470549424f,0.00799418513572f,0.00791051464212f,0.00779277934752f,0.00763744724418f,0.00744069872375f,0.00719840550653f,0.00690610811632f,0.00655899180413f,0.00615186081813f,0.0056791109099f,0.00513469996078f,0.00451211660413f,0.0038043467112f,0.0030038376003f,0.00210245981947f,0.00109146634354f,-3.85509838274e-05f,-0.00129770794366f,-0.002696877562f,-0.00424774306167f,-0.00596285436248f,-0.0078556883602f,-0.00994071323065f,-0.0122334570202f,-0.0147505808001f,-0.0175099566797f,-0.0205307509953f,-0.0238335130053f,-0.0274402694501f,-0.0313746253533f,-0.0356618714658f,-0.0403290987807f,-0.0454053205733f,-0.0509216024482f,-0.0569112009073f,-0.0634097109852f,-0.0704552235292f,-0.0780884927439f,-0.0863531146536f,-0.095295717178f,-0.104966162563f,-0.115417762951f,-0.126707509933f,-0.138896318952f,-0.152049289531f,-0.166235982297f,-0.18153071389f,-0.19801287087f,-0.215767243842f,-0.234884383058f,-0.255460976873f,-0.277600254466f,-0.3014124144f,-0.327015080599f,-0.354533787512f,-0.384102496257f,-0.415864143736f,-0.449971226747f,-0.486586423332f,-0.525883253655f,-0.568046782917f,-0.613274368914f,-0.661776457052f,-0.713777425789f,-0.769516485611f,-0.829248634946f,-0.893245676511f,-0.961797297905f,-1.0352122204f,-1.11381942024f,-1.19796942689f,-1.28803570308f,-1.38441611167f,-1.48753447476f,-1.59784223075f,-1.71582019554f,-1.84198043398f,-1.97686824896f,-2.12106429478f,-2.27518682307f,-2.43989406898f,-2.6158867867f,-2.80391094322f,-3.00476058029f,-3.21928085489f,-3.44837126916f,-3.69298910159f,-3.95415305175f,-4.2329471118f,-4.53052467858f,-4.84811292129f,-5.18701742021f,-5.54862709332f,-5.93441942847f,-6.34596603966f,-6.78493856754f,-7.25311494501f,-7.75238605063f,-8.28476277304f,-8.85238351209f,-9.45752214325f,-10.1025964733f,-10.7901772176f,-11.5229975313f,-12.3039631268f,-13.1361630151f,-14.0228809083f,-14.9676073225f,-15.974052426f,-17.0461596762f,-18.1881202944f,-19.4043886291f,-20.6996984618f,-22.0790803131f,-23.5478798087f,-25.1117771718f,-26.7768079079f,-28.5493847563f,-30.4363209847f,-32.4448551076f,-34.582677115f,-36.8579563051f,-39.2793708149f,-41.8561389542f,-44.59805245f,-47.5155117192f,-50.6195632917f};
+static const float Lateralus_tune_88200_c2[129] = {0.0287526529941f,0.0303525994983f,0.0320415753111f,0.0338245344842f,0.0357067067385f,0.0376936128037f,0.0397910806112f,0.042005262389f,0.0443426527067f,0.0468101075255f,0.0494148643079f,0.0521645632459f,0.0550672696718f,0.0581314977146f,0.0613662352733f,0.0647809703804f,0.0683857190316f,0.0721910545644f,0.0762081386716f,0.0804487541406f,0.0849253394137f,0.0896510250725f,0.0946396723529f,0.0999059138011f,0.105465196194f,0.111333825847f,0.117529016444f,0.124068939526f,0.130972777795f,0.138260781376f,0.145954327216f,0.154075981786f,0.162649567274f,0.171700231455f,0.181254521459f,0.191340461634f,0.201987635749f,0.213227273767f,0.225092343447f,0.237617647046f,0.250839923398f,0.264797955675f,0.279532685148f,0.295087331271f,0.311507518451f,0.328841409876f,0.347139848781f,0.366456507583f,0.386848045308f,0.408374273788f,0.43109833309f,0.455086876726f,0.480410267152f,0.507142782154f,0.53536283272f,0.565153193033f,0.596601243262f,0.629799225853f,0.664844516109f,0.701839907789f,0.740893914638f,0.782121088663f,0.825642356142f,0.871585372313f,0.920084895811f,0.971283183945f,1.02533040995f,1.08238510349f,1.14261461563f,1.20619560972f,1.27331457956f,1.34416839645f,1.41896488661f,1.49792344082f,1.58127565785f,1.66926602387f,1.7621526295f,1.86020792687f,1.96371952875f,2.07299105217f,2.18834300901f,2.31011374606f,2.43866043749f,2.5743601325f,2.71761086124f,2.86883280232f,3.0284695153f,3.19698924163f,3.3748862782f,3.5626824271f,3.7609285262f,3.97020606483f,4.19112888943f,4.42434500403f,4.67053847091f,4.93043141716f,5.20478615277f,5.49440740655f,5.80014468668f,6.1228947723f,6.46360434399f,6.82327276056f,7.20295499031f,7.60376470548f,8.02687754871f,8.47353458162f,8.94504592476f,9.44279460066f,9.96824059043f,10.522925116f,11.108475161f,11.7266082427f,12.3791374499f,13.0679767612f,13.7951466589f,14.5627800552f,15.3731285488f,16.2285690289f,17.1316106471f,18.0849021771f,19.0912397843f,20.1535752273f,21.2750245155f,22.4588770493f,23.7086052684f,25.0278748373f,26.4205553966f,27.8907319139f,29.4427166659f};
+float Lateralus_tune_88200(float cut);
+
+static const float Lateralus_tune_96000_c0[129] = {0.00107020957544f,0.00107029990139f,0.00107068002788f,0.00107158188985f,0.00107327346397f,0.00107606268078f,0.00108030169495f,0.00108639154362f,0.0010947872244f,0.00110600322792f,0.00112061956154f,0.00113928830468f,0.00116274073822f,0.00119179509477f,0.00122736497916f,0.00127046851302f,0.00132223826092f,0.00138393200012f,0.00145694440045f,0.00154281968605f,0.00164326535588f,0.00176016704574f,0.00189560462069f,0.0020518695933f,0.00223148397026f,0.00243722063761f,0.00267212540258f,0.00293954081913f,0.00324313193347f,0.00358691409547f,0.00397528299324f,0.0044130470789f,0.00490546256619f,0.00545827119353f,0.00607774096035f,0.00677071005919f,0.00754463424241f,0.00840763787952f,0.00936856897928f,0.0104370584707f,0.0116235840583f,0.0129395389881f,0.0143973060874f,0.0160103374653f,0.0177932402877f,0.0197618690729f,0.0219334249829f,0.0243265626193f,0.02696150487f,0.0298601663912f,0.0330462863474f,0.0365455710815f,0.0403858474278f,0.0445972274363f,0.0492122853262f,0.0542662475472f,0.0597971968836f,0.0658462916078f,0.0724580007546f,0.0796803566626f,0.0875652260139f,0.0961686006793f,0.105550909775f,0.115777354431f,0.126918266866f,0.139049495504f,0.152252817934f,0.166616383695f,0.182235188967f,0.199211585403f,0.217655825492f,0.237686647009f,0.259431899265f,0.283029214084f,0.308626724605f,0.336383835233f,0.366472046289f,0.399075837155f,0.434393611937f,0.472638711987f,0.514040499885f,0.558845519803f,0.607318739514f,0.65974487966f,0.71642983624f,0.777702202752f,0.843914898783f,0.915446912319f,0.992705163564f,1.07612649858f,1.1661798215f,1.26336837492f,1.36823217829f,1.48135063535f,1.60334532174f,1.73488296535f,1.87667863213f,2.02949913146f,2.19416665588f,2.3715626709f,2.56263207186f,2.76838762582f,2.98991471755f,3.22837642018f,3.48501891224f,3.76117726435f,4.05828162032f,4.37786379912f,4.72156434582f,5.0911400615f,5.48847204408f,5.91557427433f,6.37460278305f,6.86786543865f,7.39783239581f,7.96714724951f,8.57863894126f,9.23533446746f,9.94047244262f,10.6975175751f,11.5101761147f,12.3824123365f,13.3184661304f,14.3228717686f,15.400477928f,16.5564690522f,17.7963881394f,19.1261610513f,20.5521224426f};
+static const float Lateralus_tune_96000_c1[129] = {0.00741627744094f,0.00739323172833f,0.00734465759344f,0.00726778532745f,0.00715961602553f,0.00701690465559f,0.00683614195245f,0.00661353505913f,0.00634498683187f,0.00602607372005f,0.00565202212666f,0.00521768314847f,0.00471750558896f,0.00414550713005f,0.00349524354092f,0.00275977579528f,0.00193163495913f,0.00100278470314f,-3.541871639e-05f,-0.00119226917324f,-0.00247775626008f,-0.0039026139379f,-0.00547837244553f,-0.00721741368093f,-0.00913303028065f,-0.0112394886374f,-0.0135520961101f,-0.0160872726994f,-0.0188626274769f,-0.0218970400736f,-0.0252107475573f,-0.0288254370434f,-0.0327643444092f,-0.0370523595047f,-0.0417161382767f,-0.0467842222493f,-0.0522871658336f,-0.0582576719677f,-0.0647307366174f,-0.0717438027084f,-0.0793369240879f,-0.0875529401573f,-0.0964376618546f,-0.106040069712f,-0.116412524751f,-0.127610993037f,-0.139695284756f,-0.152729308736f,-0.166781343386f,-0.181924325112f,-0.19823615528f,-0.215800026935f,-0.234704772502f,-0.255045233791f,-0.27692265573f,-0.300445105301f,-0.325727917276f,-0.352894168436f,-0.382075182057f,-0.413411064574f,-0.447051276436f,-0.483155239296f,-0.521892981805f,-0.563445826439f,-0.608007119917f,-0.655783009944f,-0.706993271156f,-0.761872183356f,-0.820669465295f,-0.883651267452f,-0.951101227492f,-1.02332159234f,-1.10063441096f,-1.18338280221f,-1.2719323026f,-1.36667229868f,-1.46801754951f,-1.57640980465f,-1.69231952372f,-1.81624770373f,-1.94872782083f,-2.09032789369f,-2.24165267588f,-2.40334598528f,-2.57609317909f,-2.76062378314f,-2.95771428543f,-3.16819110354f,-3.39293373708f,-3.6328781163f,-3.88902015896f,-4.16241954844f,-4.45420374643f,-4.76557225482f,-5.09780114199f,-5.45224784991f,-5.83035629895f,-6.23366230893f,-6.66379935574f,-7.12250468403f,-7.61162579773f,-8.13312735174f,-8.6890984691f,-9.28176050981f,-9.91347531868f,-10.5867539819f,-11.3042661227f,-12.0688497701f,-12.8835218345f,-13.7514892275f,-14.6761606663f,-15.6611592025f,-16.7103355204f,-17.827782053f,-19.0178479618f,-20.2851550377f,-21.6346145743f,-23.0714452766f,-24.6011922654f,-26.2297472449f,-27.9633699047f,-29.8087106301f,-31.7728345994f,-33.8632473553f,-36.0879219362f,-38.4553276642f,-40.9744606885f,-43.654876392f,-46.5067237741f};
+static const float Lateralus_tune_96000_c2[129] = {0.0264164999383f,0.027886450789f,0.029438197317f,0.0310762910574f,0.032805536816f,0.0346310067634f,0.0365580553115f,0.0385923348199f,0.0407398121743f,0.0430067862891f,0.0453999065829f,0.0479261924822f,0.050593054011f,0.0534083135253f,0.0563802286573f,0.059517516537f,0.0628293793602f,0.066325531381f,0.0700162274046f,0.0739122928667f,0.0780251555863f,0.0823668792854f,0.0869501989743f,0.0917885583047f,0.096896149003f,0.102287952497f,0.107979783858f,0.11398833819f,0.120331239599f,0.127027092889f,0.13409553813f,0.141557308266f,0.149434289933f,0.157749587649f,0.16652759159f,0.175794049127f,0.185576140345f,0.195902557774f,0.206803590542f,0.218311213224f,0.230459179621f,0.243283121776f,0.25682065448f,0.271111485605f,0.286197532577f,0.302123045323f,0.318934736067f,0.336681916342f,0.355416641627f,0.375193864042f,0.396071593527f,0.418111067992f,0.441376932946f,0.465937431104f,0.491864602562f,0.5192344961f,0.548127392246f,0.578628038752f,0.610825899175f,0.644815415281f,0.680696284074f,0.718573750209f,0.758558914705f,0.800769060813f,0.845327998027f,0.89236642525f,0.942022314146f,0.994441313835f,1.04977717811f,1.10819221643f,1.16985776997f,1.23495471424f,1.30367398958f,1.37621716125f,1.45279701065f,1.53363815943f,1.61897772835f,1.70906603281f,1.80416731703f,1.90456052918f,2.01054013953f,2.1224170042f,2.24051927695f,2.36519337174f,2.49680497876f,2.63574013713f,2.78240636718f,2.93723386575f,3.1006767681f,3.2732144799f,3.45535308344f,3.64762682206f,3.85059966717f,4.06486697245f,4.29105722015f,4.52983386452f,4.78189727785f,5.04798680478f,5.32888293089f,5.62540957205f,5.93843649104f,6.26888184877f,6.61771489736f,6.98595882315f,7.37469374789f,7.78505989686f,8.21826094337f,8.67556753937f,9.15832104244f,9.66793745033f,10.2059115541f,10.7738213229f,11.3733325321f,12.0062036494f,12.6742909929f,13.3795541758f,14.1240618542f,14.9099977953f,15.739667282f,16.6155038752f,17.5400765519f,18.5160972401f,19.5464287735f,20.634093289f,21.7822810903f,22.9943600067f,24.2738852707f,25.624609946f,27.0504959368f};
+float Lateralus_tune_96000(float cut);
+
+static const float Lateralus_tune_176400_c0[129] = {0.00116485395967f,0.00116495227362f,0.00116536601674f,0.00116634763521f,0.00116818880433f,0.00117122468656f,0.00117583857954f,0.00118246698625f,0.00119160514221f,0.00120381303719f,0.00121972197175f,0.00124004169216f,0.00126556815045f,0.00129719193989f,0.00133590746031f,0.00138282287131f,0.00143917089624f,0.00150632054435f,0.00158578982362f,0.00167925952223f,0.00178858814245f,0.00191582807699f,0.00206324312457f,0.00223332744849f,0.00242882609008f,0.00265275715658f,0.00290843581233f,0.0031995002113f,0.00352993951942f,0.00390412418555f,0.0043268386321f,0.00480331654847f,0.00533927898361f,0.00594097544874f,0.00661522825616f,0.00736948033653f,0.00821184679445f,0.0091511704811f,0.0101970818822f,0.0113600636416f,0.0126515200635f,0.0140838519598f,0.015670537238f,0.0174262176493f,0.0193667921498f,0.0215095173582f,0.0238731156277f,0.0264778912863f,0.0293458556409f,0.0325008613781f,0.0359687470448f,0.0397774923336f,0.0439573849554f,0.0485411999306f,0.0535643921919f,0.0590653034527f,0.0650853843631f,0.0716694330426f,0.0788658511615f,0.0867269188165f,0.0953090895389f,0.104673306862f,0.114885343973f,0.126016168088f,0.138142331282f,0.151346389664f,0.165717352853f,0.181351165926f,0.198351226086f,0.216828936493f,0.236904299855f,0.258706554568f,0.282374856343f,0.308059008527f,0.335920244468f,0.366132065559f,0.398881138817f,0.434368258128f,0.472809373536f,0.514436693319f,0.55949986382f,0.608267232439f,0.661027199471f,0.718089664936f,0.779787576859f,0.846478588029f,0.918546828608f,0.996404802524f,1.08049541612f,1.17129414811f,1.26931137034f,1.37509482984f,1.4892323029f,1.61235443303f,1.74513776516f,1.8883079895f,2.04264340912f,2.20897864649f,2.38820860503f,2.58129270302f,2.78925939794f,3.0132110213f,3.25432894427f,3.5138790968f,3.79321786366f,4.09379838297f,4.41717727382f,4.76502182216f,5.13911765531f,5.54137693769f,5.97384712281f,6.43872029859f,6.93834316522f,7.47522768833f,8.05206247163f,8.67172489742f,9.33729408573f,10.0520647265f,10.8195618423f,11.6435565444f,12.5280828459f,13.4774556043f,14.4962896658f,15.5895202924f,16.7624249556f,18.0206465874f,19.370218383f,20.8175902599f,22.3696570803f};
+static const float Lateralus_tune_176400_c1[129] = {0.00807213871123f,0.0080470549424f,0.00799418513572f,0.00791051464212f,0.00779277934752f,0.00763744724418f,0.00744069872375f,0.00719840550653f,0.00690610811632f,0.00655899180413f,0.00615186081813f,0.0056791109099f,0.00513469996078f,0.00451211660413f,0.0038043467112f,0.0030038376003f,0.00210245981947f,0.00109146634354f,-3.85509838274e-05f,-0.00129770794366f,-0.002696877562f,-0.00424774306167f,-0.00596285436248f,-0.0078556883602f,-0.00994071323065f,-0.0122334570202f,-0.0147505808001f,-0.0175099566797f,-0.0205307509953f,-0.0238335130053f,-0.0274402694501f,-0.0313746253533f,-0.0356618714658f,-0.0403290987807f,-0.0454053205733f,-0.0509216024482f,-0.0569112009073f,-0.0634097109852f,-0.0704552235292f,-0.0780884927439f,-0.0863531146536f,-0.095295717178f,-0.104966162563f,-0.115417762951f,-0.126707509933f,-0.138896318952f,-0.152049289531f,-0.166235982297f,-0.18153071389f,-0.19801287087f,-0.215767243842f,-0.234884383058f,-0.255460976873f,-0.277600254466f,-0.3014124144f,-0.327015080599f,-0.354533787512f,-0.384102496257f,-0.415864143736f,-0.449971226747f,-0.486586423332f,-0.525883253655f,-0.568046782917f,-0.613274368914f,-0.661776457052f,-0.713777425789f,-0.769516485611f,-0.829248634946f,-0.893245676511f,-0.961797297905f,-1.0352122204f,-1.11381942024f,-1.19796942689f,-1.28803570308f,-1.38441611167f,-1.48753447476f,-1.59784223075f,-1.71582019554f,-1.84198043398f,-1.97686824896f,-2.12106429478f,-2.27518682307f,-2.43989406898f,-2.6158867867f,-2.80391094322f,-3.00476058029f,-3.21928085489f,-3.44837126916f,-3.69298910159f,-3.95415305175f,-4.2329471118f,-4.53052467858f,-4.84811292129f,-5.18701742021f,-5.54862709332f,-5.93441942847f,-6.34596603966f,-6.78493856754f,-7.25311494501f,-7.75238605063f,-8.28476277304f,-8.85238351209f,-9.45752214325f,-10.1025964733f,-10.7901772176f,-11.5229975313f,-12.3039631268f,-13.1361630151f,-14.0228809083f,-14.9676073225f,-15.974052426f,-17.0461596762f,-18.1881202944f,-19.4043886291f,-20.6996984618f,-22.0790803131f,-23.5478798087f,-25.1117771718f,-26.7768079079f,-28.5493847563f,-30.4363209847f,-32.4448551076f,-34.582677115f,-36.8579563051f,-39.2793708149f,-41.8561389542f,-44.59805245f,-47.5155117192f,-50.6195632917f};
+static const float Lateralus_tune_176400_c2[129] = {0.0287526529941f,0.0303525994983f,0.0320415753111f,0.0338245344842f,0.0357067067385f,0.0376936128037f,0.0397910806112f,0.042005262389f,0.0443426527067f,0.0468101075255f,0.0494148643079f,0.0521645632459f,0.0550672696718f,0.0581314977146f,0.0613662352733f,0.0647809703804f,0.0683857190316f,0.0721910545644f,0.0762081386716f,0.0804487541406f,0.0849253394137f,0.0896510250725f,0.0946396723529f,0.0999059138011f,0.105465196194f,0.111333825847f,0.117529016444f,0.124068939526f,0.130972777795f,0.138260781376f,0.145954327216f,0.154075981786f,0.162649567274f,0.171700231455f,0.181254521459f,0.191340461634f,0.201987635749f,0.213227273767f,0.225092343447f,0.237617647046f,0.250839923398f,0.264797955675f,0.279532685148f,0.295087331271f,0.311507518451f,0.328841409876f,0.347139848781f,0.366456507583f,0.386848045308f,0.408374273788f,0.43109833309f,0.455086876726f,0.480410267152f,0.507142782154f,0.53536283272f,0.565153193033f,0.596601243262f,0.629799225853f,0.664844516109f,0.701839907789f,0.740893914638f,0.782121088663f,0.825642356142f,0.871585372313f,0.920084895811f,0.971283183945f,1.02533040995f,1.08238510349f,1.14261461563f,1.20619560972f,1.27331457956f,1.34416839645f,1.41896488661f,1.49792344082f,1.58127565785f,1.66926602387f,1.7621526295f,1.86020792687f,1.96371952875f,2.07299105217f,2.18834300901f,2.31011374606f,2.43866043749f,2.5743601325f,2.71761086124f,2.86883280232f,3.0284695153f,3.19698924163f,3.3748862782f,3.5626824271f,3.7609285262f,3.97020606483f,4.19112888943f,4.42434500403f,4.67053847091f,4.93043141716f,5.20478615277f,5.49440740655f,5.80014468668f,6.1228947723f,6.46360434399f,6.82327276056f,7.20295499031f,7.60376470548f,8.02687754871f,8.47353458162f,8.94504592476f,9.44279460066f,9.96824059043f,10.522925116f,11.108475161f,11.7266082427f,12.3791374499f,13.0679767612f,13.7951466589f,14.5627800552f,15.3731285488f,16.2285690289f,17.1316106471f,18.0849021771f,19.0912397843f,20.1535752273f,21.2750245155f,22.4588770493f,23.7086052684f,25.0278748373f,26.4205553966f,27.8907319139f,29.4427166659f};
+float Lateralus_tune_176400(float cut);
+
+static const float Lateralus_tune_192000_c0[129] = {0.00107020957544f,0.00107029990139f,0.00107068002788f,0.00107158188985f,0.00107327346397f,0.00107606268078f,0.00108030169495f,0.00108639154362f,0.0010947872244f,0.00110600322792f,0.00112061956154f,0.00113928830468f,0.00116274073822f,0.00119179509477f,0.00122736497916f,0.00127046851302f,0.00132223826092f,0.00138393200012f,0.00145694440045f,0.00154281968605f,0.00164326535588f,0.00176016704574f,0.00189560462069f,0.0020518695933f,0.00223148397026f,0.00243722063761f,0.00267212540258f,0.00293954081913f,0.00324313193347f,0.00358691409547f,0.00397528299324f,0.0044130470789f,0.00490546256619f,0.00545827119353f,0.00607774096035f,0.00677071005919f,0.00754463424241f,0.00840763787952f,0.00936856897928f,0.0104370584707f,0.0116235840583f,0.0129395389881f,0.0143973060874f,0.0160103374653f,0.0177932402877f,0.0197618690729f,0.0219334249829f,0.0243265626193f,0.02696150487f,0.0298601663912f,0.0330462863474f,0.0365455710815f,0.0403858474278f,0.0445972274363f,0.0492122853262f,0.0542662475472f,0.0597971968836f,0.0658462916078f,0.0724580007546f,0.0796803566626f,0.0875652260139f,0.0961686006793f,0.105550909775f,0.115777354431f,0.126918266866f,0.139049495504f,0.152252817934f,0.166616383695f,0.182235188967f,0.199211585403f,0.217655825492f,0.237686647009f,0.259431899265f,0.283029214084f,0.308626724605f,0.336383835233f,0.366472046289f,0.399075837155f,0.434393611937f,0.472638711987f,0.514040499885f,0.558845519803f,0.607318739514f,0.65974487966f,0.71642983624f,0.777702202752f,0.843914898783f,0.915446912319f,0.992705163564f,1.07612649858f,1.1661798215f,1.26336837492f,1.36823217829f,1.48135063535f,1.60334532174f,1.73488296535f,1.87667863213f,2.02949913146f,2.19416665588f,2.3715626709f,2.56263207186f,2.76838762582f,2.98991471755f,3.22837642018f,3.48501891224f,3.76117726435f,4.05828162032f,4.37786379912f,4.72156434582f,5.0911400615f,5.48847204408f,5.91557427433f,6.37460278305f,6.86786543865f,7.39783239581f,7.96714724951f,8.57863894126f,9.23533446746f,9.94047244262f,10.6975175751f,11.5101761147f,12.3824123365f,13.3184661304f,14.3228717686f,15.400477928f,16.5564690522f,17.7963881394f,19.1261610513f,20.5521224426f};
+static const float Lateralus_tune_192000_c1[129] = {0.00741627744094f,0.00739323172833f,0.00734465759344f,0.00726778532745f,0.00715961602553f,0.00701690465559f,0.00683614195245f,0.00661353505913f,0.00634498683187f,0.00602607372005f,0.00565202212666f,0.00521768314847f,0.00471750558896f,0.00414550713005f,0.00349524354092f,0.00275977579528f,0.00193163495913f,0.00100278470314f,-3.541871639e-05f,-0.00119226917324f,-0.00247775626008f,-0.0039026139379f,-0.00547837244553f,-0.00721741368093f,-0.00913303028065f,-0.0112394886374f,-0.0135520961101f,-0.0160872726994f,-0.0188626274769f,-0.0218970400736f,-0.0252107475573f,-0.0288254370434f,-0.0327643444092f,-0.0370523595047f,-0.0417161382767f,-0.0467842222493f,-0.0522871658336f,-0.0582576719677f,-0.0647307366174f,-0.0717438027084f,-0.0793369240879f,-0.0875529401573f,-0.0964376618546f,-0.106040069712f,-0.116412524751f,-0.127610993037f,-0.139695284756f,-0.152729308736f,-0.166781343386f,-0.181924325112f,-0.19823615528f,-0.215800026935f,-0.234704772502f,-0.255045233791f,-0.27692265573f,-0.300445105301f,-0.325727917276f,-0.352894168436f,-0.382075182057f,-0.413411064574f,-0.447051276436f,-0.483155239296f,-0.521892981805f,-0.563445826439f,-0.608007119917f,-0.655783009944f,-0.706993271156f,-0.761872183356f,-0.820669465295f,-0.883651267452f,-0.951101227492f,-1.02332159234f,-1.10063441096f,-1.18338280221f,-1.2719323026f,-1.36667229868f,-1.46801754951f,-1.57640980465f,-1.69231952372f,-1.81624770373f,-1.94872782083f,-2.09032789369f,-2.24165267588f,-2.40334598528f,-2.57609317909f,-2.76062378314f,-2.95771428543f,-3.16819110354f,-3.39293373708f,-3.6328781163f,-3.88902015896f,-4.16241954844f,-4.45420374643f,-4.76557225482f,-5.09780114199f,-5.45224784991f,-5.83035629895f,-6.23366230893f,-6.66379935574f,-7.12250468403f,-7.61162579773f,-8.13312735174f,-8.6890984691f,-9.28176050981f,-9.91347531868f,-10.5867539819f,-11.3042661227f,-12.0688497701f,-12.8835218345f,-13.7514892275f,-14.6761606663f,-15.6611592025f,-16.7103355204f,-17.827782053f,-19.0178479618f,-20.2851550377f,-21.6346145743f,-23.0714452766f,-24.6011922654f,-26.2297472449f,-27.9633699047f,-29.8087106301f,-31.7728345994f,-33.8632473553f,-36.0879219362f,-38.4553276642f,-40.9744606885f,-43.654876392f,-46.5067237741f};
+static const float Lateralus_tune_192000_c2[129] = {0.0264164999383f,0.027886450789f,0.029438197317f,0.0310762910574f,0.032805536816f,0.0346310067634f,0.0365580553115f,0.0385923348199f,0.0407398121743f,0.0430067862891f,0.0453999065829f,0.0479261924822f,0.050593054011f,0.0534083135253f,0.0563802286573f,0.059517516537f,0.0628293793602f,0.066325531381f,0.0700162274046f,0.0739122928667f,0.0780251555863f,0.0823668792854f,0.0869501989743f,0.0917885583047f,0.096896149003f,0.102287952497f,0.107979783858f,0.11398833819f,0.120331239599f,0.127027092889f,0.13409553813f,0.141557308266f,0.149434289933f,0.157749587649f,0.16652759159f,0.175794049127f,0.185576140345f,0.195902557774f,0.206803590542f,0.218311213224f,0.230459179621f,0.243283121776f,0.25682065448f,0.271111485605f,0.286197532577f,0.302123045323f,0.318934736067f,0.336681916342f,0.355416641627f,0.375193864042f,0.396071593527f,0.418111067992f,0.441376932946f,0.465937431104f,0.491864602562f,0.5192344961f,0.548127392246f,0.578628038752f,0.610825899175f,0.644815415281f,0.680696284074f,0.718573750209f,0.758558914705f,0.800769060813f,0.845327998027f,0.89236642525f,0.942022314146f,0.994441313835f,1.04977717811f,1.10819221643f,1.16985776997f,1.23495471424f,1.30367398958f,1.37621716125f,1.45279701065f,1.53363815943f,1.61897772835f,1.70906603281f,1.80416731703f,1.90456052918f,2.01054013953f,2.1224170042f,2.24051927695f,2.36519337174f,2.49680497876f,2.63574013713f,2.78240636718f,2.93723386575f,3.1006767681f,3.2732144799f,3.45535308344f,3.64762682206f,3.85059966717f,4.06486697245f,4.29105722015f,4.52983386452f,4.78189727785f,5.04798680478f,5.32888293089f,5.62540957205f,5.93843649104f,6.26888184877f,6.61771489736f,6.98595882315f,7.37469374789f,7.78505989686f,8.21826094337f,8.67556753937f,9.15832104244f,9.66793745033f,10.2059115541f,10.7738213229f,11.3733325321f,12.0062036494f,12.6742909929f,13.3795541758f,14.1240618542f,14.9099977953f,15.739667282f,16.6155038752f,17.5400765519f,18.5160972401f,19.5464287735f,20.634093289f,21.7822810903f,22.9943600067f,24.2738852707f,25.624609946f,27.0504959368f};
+float Lateralus_tune_192000(float cut);
+
+float Lateralus_getTune(float cut, float fs);
+
+typedef struct Lateralus__ctx_type_8 {
+ float p3;
+ float p2;
+ float p1;
+ float p0;
+} Lateralus__ctx_type_8;
+
+typedef Lateralus__ctx_type_8 Lateralus_heun_type;
+
+void Lateralus__ctx_type_8_init(Lateralus__ctx_type_8 &_output_);
+
+void Lateralus_heun_init(Lateralus__ctx_type_8 &_output_);
+
+void Lateralus_heun(Lateralus__ctx_type_8 &_ctx, float input, float fh, float res, _tuple___real_real__ &_output_);
+
+typedef struct Lateralus__ctx_type_9 {
+ Lateralus__ctx_type_8 h;
+ float fh;
+ Util__ctx_type_3 _inst276;
+ Util__ctx_type_3 _inst275;
+} Lateralus__ctx_type_9;
+
+typedef Lateralus__ctx_type_9 Lateralus_process_heun_type;
+
+void Lateralus__ctx_type_9_init(Lateralus__ctx_type_9 &_output_);
+
+void Lateralus_process_heun_init(Lateralus__ctx_type_9 &_output_);
+
+void Lateralus_process_heun(Lateralus__ctx_type_9 &_ctx, float input, float cut, float res, _tuple___real_real__ &_output_);
+
+typedef struct Lateralus__ctx_type_10 {
+ Lateralus__ctx_type_9 _inst284;
+ Util__ctx_type_18 _inst283;
+} Lateralus__ctx_type_10;
+
+typedef Lateralus__ctx_type_10 Lateralus_process_type;
+
+void Lateralus__ctx_type_10_init(Lateralus__ctx_type_10 &_output_);
+
+void Lateralus_process_init(Lateralus__ctx_type_10 &_output_);
+
+void Lateralus_process(Lateralus__ctx_type_10 &_ctx, float input, float cut_in, float res_in, _tuple___real_real__ &_output_);
+
+static const float Debriatus_saturate_c0[242] = {-0.999999999997f,-1.00000000001f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-1.f,-1.f,-1.f,-0.999999999997f,-1.f,-0.999999999994f,-1.f,-1.f,-1.f,-1.f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-1.f,-0.999999999997f,-1.f,-0.999999999997f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-0.999999999997f,-0.999999999997f,-0.999999999997f,-0.999999999997f,-1.f,-1.f,-0.999999999995f,-1.f,-0.999999999999f,-0.999999999997f,-0.999999999997f,-0.999999999994f,-0.999999999988f,-0.999999999977f,-0.999999999965f,-0.999999999956f,-0.999999999927f,-0.999999999902f,-0.999999999851f,-0.999999999785f,-0.99999999969f,-0.999999999555f,-0.999999999346f,-0.999999999056f,-0.999999998636f,-0.999999998022f,-0.999999997141f,-0.999999995866f,-0.999999994018f,-0.999999991363f,-0.999999987522f,-0.999999981986f,-0.999999974009f,-0.999999962514f,-0.99999994597f,-0.99999992216f,-0.999999887929f,-0.999999838733f,-0.99999976808f,-0.999999666681f,-0.999999521258f,-0.999999312852f,-0.9999990144f,-0.999998587338f,-0.999997976745f,-0.999997104493f,-0.999995859554f,-0.999994084334f,-0.999991555413f,-0.999987956431f,-0.999982840035f,-0.999975574507f,-0.999965269101f,-0.999950669783f,-0.999930013967f,-0.999900828606f,-0.999859650259f,-0.999801638058f,-0.999720040171f,-0.999605460715f,-0.999444856034f,-0.999220165743f,-0.998906453716f,-0.998469395542f,-0.997861900902f,-0.997019600469f,-0.995854857304f,-0.994248884102f,-0.992041465289f,-0.989017708666f,-0.984891207544f,-0.979283022499f,-0.971696063447f,-0.961484889131f,-0.947821842616f,-0.929662129669f,-0.90571342178f,-0.874420561407f,-0.833983940339f,-0.782442143682f,-0.717865836239f,-0.63872814745f,-0.544526816711f,-0.436707847777f,-0.319822453429f,-0.202551570965f,-0.0977039508554f,-0.019758230215f,0.0211020337687f,0.0266706341736f,0.0132847925228f,0.00178842066124f,-0.f,-0.00178842066124f,-0.0132847925228f,-0.0266706341736f,-0.0211020337687f,0.019758230215f,0.0977039508554f,0.202551570965f,0.319822453429f,0.436707847777f,0.544526816711f,0.63872814745f,0.717865836239f,0.782442143682f,0.833983940339f,0.874420561407f,0.90571342178f,0.929662129669f,0.947821842616f,0.961484889131f,0.971696063447f,0.979283022499f,0.984891207544f,0.989017708666f,0.992041465289f,0.994248884102f,0.995854857305f,0.997019600469f,0.997861900902f,0.998469395542f,0.998906453716f,0.999220165743f,0.999444856034f,0.999605460715f,0.999720040171f,0.999801638058f,0.999859650259f,0.999900828606f,0.999930013967f,0.999950669783f,0.999965269101f,0.999975574507f,0.999982840035f,0.999987956431f,0.999991555414f,0.999994084334f,0.999995859556f,0.999997104492f,0.999997976747f,0.999998587339f,0.999999014399f,0.99999931285f,0.999999521258f,0.999999666681f,0.999999768081f,0.999999838734f,0.99999988793f,0.999999922162f,0.999999945968f,0.999999962516f,0.999999974009f,0.999999981985f,0.999999987524f,0.999999991361f,0.99999999402f,0.999999995864f,0.999999997141f,0.999999998024f,0.999999998634f,0.99999999906f,0.999999999346f,0.999999999555f,0.99999999969f,0.999999999787f,0.999999999853f,0.999999999898f,0.999999999931f,0.99999999995f,0.999999999963f,0.999999999976f,0.999999999988f,0.999999999994f,0.999999999995f,0.999999999995f,0.999999999994f,1.f,0.999999999997f,0.999999999995f,1.f,0.999999999997f,0.999999999999f,0.999999999997f,1.f,1.f,1.f,1.f,0.999999999997f,1.f,0.999999999997f,0.999999999997f,1.f,1.f,1.00000000001f,0.999999999997f,1.f,1.f,1.f,1.f,0.999999999997f,0.999999999997f,0.999999999997f,1.f,1.f,0.999999999997f,1.f,1.00000000001f,0.999999999994f,1.f,1.f,1.f,1.f,1.f};
+static const float Debriatus_saturate_c1[242] = {-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,2.14608423625e-13f,-0.f,-0.f,2.07919329901e-13f,2.05689631994e-13f,2.03459934086e-13f,1.1148489539e-15f,2.00115387224e-13f,2.22969790779e-15f,1.97885689316e-13f,1.96770840362e-13f,7.80394267726e-15f,3.86852587001e-13f,5.72474937825e-13f,9.4037509261e-13f,1.12265289657e-12f,1.66391206369e-12f,2.90529637385e-12f,4.12884310075e-12f,5.85797382824e-12f,8.75936823075e-12f,1.31362652237e-11f,1.94451954538e-11f,2.8291521903e-11f,4.17048270918e-11f,6.11489076966e-11f,9.02191515939e-11f,1.32198231528e-10f,1.94338239945e-10f,2.85207348479e-10f,4.1845799742e-10f,6.14375978332e-10f,9.01463519572e-10f,1.32209157048e-09f,1.93919614163e-09f,2.84345291525e-09f,4.16813427985e-09f,6.10850881683e-09f,8.94979390829e-09f,1.31092323663e-08f,1.9196204531e-08f,2.81013492961e-08f,4.11248765343e-08f,6.01657530625e-08f,8.79940546678e-08f,1.28650026289e-07f,1.88024632924e-07f,2.74702547642e-07f,4.01186990429e-07f,5.85680750671e-07f,8.54668831744e-07f,1.24666649572e-06f,1.81764986988e-06f,2.64892375631e-06f,3.85850464773e-06f,5.61758149518e-06f,8.1742958983e-06f,1.1888060402e-05f,1.72790390729e-05f,2.50994083945e-05f,3.64358664387e-05f,5.28569071684e-05f,7.66241236978e-05f,0.000110994935749f,0.000160655609716f,0.000232339582388f,0.000335708717038f,0.000484606688928f,0.000698837523793f,0.00100668279495f,0.00144845384436f,0.00208148781465f,0.00298714697674f,0.00428057945633f,0.00612425507066f,0.00874660722177f,0.0124674825401f,0.0177324863575f,0.025158612767f,0.0355935336301f,0.05019011422f,0.0704951858152f,0.0985455818471f,0.136951834283f,0.188925705597f,0.258164950663f,0.348441184889f,0.462649955551f,0.601023389603f,0.758326606895f,0.92048941242f,1.06269068911f,1.15321373675f,1.16781524601f,1.11212351166f,1.03336916564f,0.996707332772f,1.03336916564f,1.11212351166f,1.16781524601f,1.15321373675f,1.06269068911f,0.92048941242f,0.758326606895f,0.601023389603f,0.462649955551f,0.348441184889f,0.258164950663f,0.188925705597f,0.136951834283f,0.0985455818471f,0.0704951858152f,0.05019011422f,0.0355935336301f,0.025158612767f,0.0177324863575f,0.0124674825401f,0.00874660722177f,0.00612425507066f,0.00428057945633f,0.00298714697674f,0.00208148781465f,0.00144845384436f,0.00100668279495f,0.000698837523793f,0.000484606688928f,0.000335708717038f,0.000232339582388f,0.000160655609716f,0.000110994935749f,7.66241236978e-05f,5.28569071684e-05f,3.64358664387e-05f,2.50994083945e-05f,1.72790390729e-05f,1.1888060402e-05f,8.1742958983e-06f,5.61758149518e-06f,3.85850464773e-06f,2.64892375631e-06f,1.81764986988e-06f,1.24666649572e-06f,8.54668831744e-07f,5.85680750671e-07f,4.0118699043e-07f,2.74702547642e-07f,1.88024632924e-07f,1.28650026289e-07f,8.79940546678e-08f,6.01657530625e-08f,4.11248765343e-08f,2.81013492962e-08f,1.9196204531e-08f,1.31092323663e-08f,8.94979390829e-09f,6.10850881683e-09f,4.16813427985e-09f,2.84345291525e-09f,1.93919614163e-09f,1.32209157048e-09f,9.01463519572e-10f,6.14375978333e-10f,4.1845799742e-10f,2.85207348479e-10f,1.94338239945e-10f,1.32198231528e-10f,9.02191515939e-11f,6.11489076966e-11f,4.17048270918e-11f,2.8291521903e-11f,1.94451954538e-11f,1.31362652237e-11f,8.75936823075e-12f,5.85797382824e-12f,4.12884310075e-12f,2.90529637385e-12f,1.66391206369e-12f,1.12265289657e-12f,9.4037509261e-13f,5.72474937825e-13f,3.86852587001e-13f,7.80394267738e-15f,1.96770840362e-13f,1.97885689316e-13f,2.22969790779e-15f,2.00115387224e-13f,1.1148489539e-15f,2.03459934086e-13f,2.05689631994e-13f,2.07919329901e-13f,-0.f,-0.f,2.14608423625e-13f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f};
+static const float Debriatus_saturate_c2[242] = {0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,5.59747078934e-15f,0.f,0.f,5.59747078934e-15f,5.59747078934e-15f,5.59747078934e-15f,-0.f,5.59747078934e-15f,-0.f,5.59747078935e-15f,5.59747078934e-15f,-0.f,1.11949415787e-14f,1.6792412368e-14f,2.79873539467e-14f,3.35848247361e-14f,5.03772371041e-14f,8.95595326295e-14f,1.28741828155e-13f,1.84716536048e-13f,2.79873539467e-13f,4.2540777999e-13f,6.38111669985e-13f,9.4037509261e-13f,1.40496516813e-12f,2.08785660443e-12f,3.12338870045e-12f,4.64030328437e-12f,6.91847389563e-12f,1.02993462524e-11f,1.5331472492e-11f,2.28432782913e-11f,3.40214274576e-11f,5.06571106436e-11f,7.54539062404e-11f,1.12380421038e-10f,1.67369974072e-10f,2.49272166662e-10f,3.71252250103e-10f,5.52929359513e-10f,8.23505499999e-10f,1.22648981201e-09f,1.82666182498e-09f,2.72054432522e-09f,4.05185237522e-09f,6.03462206305e-09f,8.9876573375e-09f,1.33857748532e-08f,1.99361086925e-08f,2.96918621667e-08f,4.42215977226e-08f,6.58614757689e-08f,9.80908225761e-08f,1.46091625469e-07f,2.17581649185e-07f,3.24055333575e-07f,4.82631960911e-07f,7.18808083405e-07f,1.07055694289e-06f,1.59443387851e-06f,2.37466933403e-06f,3.53671128912e-06f,5.26739423965e-06f,7.84497691072e-06f,1.16838766444e-05f,1.74012896348e-05f,2.59164006462e-05f,3.85981165108e-05f,5.74850385979e-05f,8.56129576976e-05f,0.000127502340411f,0.000189883771609f,0.000282777072037f,0.000421095554734f,0.000627028834216f,0.000933577280689f,0.00138978420091f,0.00206845786871f,0.00307751640704f,0.00457654006323f,0.00680066519634f,0.0100945068507f,0.014959048568f,0.0221136089886f,0.0325712903199f,0.047715952507f,0.0693445311141f,0.0995887097365f,0.140541482915f,0.193291614148f,0.255993897283f,0.320850540815f,0.370984773824f,0.380471594512f,0.322614518926f,0.187810383488f,-0.f,-0.187810383488f,-0.322614518926f,-0.380471594512f,-0.370984773824f,-0.320850540815f,-0.255993897283f,-0.193291614148f,-0.140541482915f,-0.0995887097365f,-0.0693445311141f,-0.047715952507f,-0.0325712903199f,-0.0221136089886f,-0.014959048568f,-0.0100945068507f,-0.00680066519634f,-0.00457654006323f,-0.00307751640704f,-0.00206845786871f,-0.00138978420091f,-0.000933577280689f,-0.000627028834216f,-0.000421095554734f,-0.000282777072037f,-0.000189883771609f,-0.000127502340411f,-8.56129576976e-05f,-5.74850385979e-05f,-3.85981165108e-05f,-2.59164006462e-05f,-1.74012896348e-05f,-1.16838766444e-05f,-7.84497691072e-06f,-5.26739423965e-06f,-3.53671128912e-06f,-2.37466933403e-06f,-1.59443387851e-06f,-1.07055694289e-06f,-7.18808083405e-07f,-4.82631960911e-07f,-3.24055333575e-07f,-2.17581649185e-07f,-1.46091625469e-07f,-9.80908225761e-08f,-6.58614757689e-08f,-4.42215977226e-08f,-2.96918621667e-08f,-1.99361086925e-08f,-1.33857748532e-08f,-8.9876573375e-09f,-6.03462206305e-09f,-4.05185237522e-09f,-2.72054432522e-09f,-1.82666182498e-09f,-1.22648981201e-09f,-8.23505499999e-10f,-5.52929359513e-10f,-3.71252250103e-10f,-2.49272166662e-10f,-1.67369974072e-10f,-1.12380421038e-10f,-7.54539062404e-11f,-5.06571106436e-11f,-3.40214274576e-11f,-2.28432782913e-11f,-1.5331472492e-11f,-1.02993462524e-11f,-6.91847389563e-12f,-4.64030328437e-12f,-3.12338870045e-12f,-2.08785660443e-12f,-1.40496516813e-12f,-9.4037509261e-13f,-6.38111669985e-13f,-4.2540777999e-13f,-2.79873539467e-13f,-1.84716536048e-13f,-1.28741828155e-13f,-8.95595326295e-14f,-5.03772371041e-14f,-3.35848247361e-14f,-2.79873539467e-14f,-1.6792412368e-14f,-1.11949415787e-14f,-3.19505124043e-27f,-5.59747078934e-15f,-5.59747078934e-15f,-0.f,-5.59747078934e-15f,-0.f,-5.59747078934e-15f,-5.59747078934e-15f,-5.59747078934e-15f,-0.f,-0.f,-5.59747078934e-15f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f,-0.f};
+float Debriatus_saturate(float x);
+
+static const float Debriatus_factor_c0[129] = {24.7875217667f,24.7873663495f,24.7867581898f,24.7854208747f,24.7830979317f,24.7795518931f,24.7745633973f,24.7679303251f,24.75946697f,24.7490032403f,24.736383894f,24.7214678032f,24.7041272476f,24.6842472375f,24.6617248627f,24.6364686682f,24.608398056f,24.5774427099f,24.5435420453f,24.5066446805f,24.4667079314f,24.4236973255f,24.3775861376f,24.3283549447f,24.2759911997f,24.2204888236f,24.1618478144f,24.1000738742f,24.0351780511f,23.9671763984f,23.8960896472f,23.8219428943f,23.7447653046f,23.6645898257f,23.5814529165f,23.495394288f,23.406456655f,23.3146855013f,23.2201288539f,23.1228370698f,23.0228626311f,22.9202599511f,22.8150851901f,22.7073960791f,22.5972517531f,22.4847125931f,22.3698400745f,22.2526966254f,22.1333454904f,22.0118506029f,21.8882764638f,21.7626880258f,21.6351505853f,21.5057296798f,21.3744909911f,21.2415002541f,21.1068231703f,20.9705253273f,20.8326721225f,20.693328692f,20.5525598435f,20.4104299935f,20.2670031086f,20.1223426507f,19.9765115267f,19.8295720404f,19.6815858487f,19.5326139203f,19.3827164988f,19.2319530677f,19.0803823184f,18.9280621211f,18.7750494977f,18.6214005981f,18.4671706786f,18.3124140815f,18.1571842181f,18.0015335527f,17.8455135892f,17.6891748595f,17.5325669132f,17.375738309f,17.2187366075f,17.0616083663f,16.9043991356f,16.7471534557f,16.5899148547f,16.432725849f,16.2756279434f,16.1186616331f,15.9618664064f,15.8052807485f,15.6489421456f,15.4928870908f,15.3371510894f,15.1817686668f,15.0267733749f,14.8721978005f,14.7180735746f,14.5644313805f,14.4113009643f,14.2587111447f,14.1066898237f,13.9552639974f,13.8044597675f,13.6543023528f,13.5048161012f,13.3560245017f,13.2079501973f,13.0606149973f,12.91403989f,12.7682450562f,12.6232498818f,12.4790729717f,12.3357321627f,12.1932445371f,12.0516264364f,11.9108934747f,11.7710605524f,11.6321418699f,11.4941509413f,11.3571006079f,11.2210030518f,11.0858698099f,10.9517117869f,10.8185392691f,10.6863619379f,10.555188883f,10.4250286157f};
+static const float Debriatus_factor_c1[129] = {-74.3591910074f,-74.3193457686f,-74.2414442209f,-74.1272708928f,-73.9785480573f,-73.7969376589f,-73.5840431834f,-73.3414114757f,-73.0705345028f,-72.7728510667f,-72.4497484665f,-72.1025641123f,-71.7325870927f,-71.3410596953f,-70.9291788835f,-70.4980977308f,-70.048926809f,-69.5827355414f,-69.1005535122f,-68.6033717381f,-68.0921439039f,-67.567787558f,-67.0311852767f,-66.4831857916f,-65.924605084f,-65.3562274475f,-64.7788065159f,-64.1930662654f,-63.5997019827f,-62.9993812066f,-62.3927446405f,-61.7804070359f,-61.1629580525f,-60.5409630903f,-59.9149640973f,-59.2854803536f,-58.6530092277f,-58.0180269157f,-57.3809891552f,-56.7423319166f,-56.1024720759f,-55.4618080624f,-54.8207204925f,-54.1795727801f,-53.5387117295f,-52.8984681107f,-52.2591572136f,-51.6210793905f,-50.9845205773f,-50.349752801f,-49.7170346717f,-49.0866118557f,-48.4587175373f,-47.8335728664f,-47.21138739f,-46.5923594723f,-45.9766766985f,-45.3645162678f,-44.7560453755f,-44.1514215806f,-43.5507931632f,-42.9542994685f,-42.3620712413f,-41.7742309507f,-41.190893103f,-40.6121645454f,-40.0381447584f,-39.468926139f,-38.9045942778f,-38.3452282232f,-37.79090074f,-37.2416785563f,-36.6976226041f,-36.1587882534f,-35.6252255372f,-35.0969793685f,-34.5740897504f,-34.0565919788f,-33.5445168408f,-33.0378908036f,-32.5367361989f,-32.0410713995f,-31.5509109898f,-31.0662659333f,-30.5871437321f,-30.1135485815f,-29.6454815176f,-29.1829405634f,-28.7259208668f,-28.2744148351f,-27.8284122644f,-27.3879004654f,-26.9528643828f,-26.5232867127f,-26.0991480144f,-25.6804268192f,-25.2670997337f,-24.8591415418f,-24.4565253007f,-24.0592224353f,-23.6672028273f,-23.2804349029f,-22.8988857157f,-22.5225210278f,-22.1513053872f,-21.785202202f,-21.4241738126f,-21.0681815609f,-20.7171858565f,-20.3711462409f,-20.0300214485f,-19.6937694662f,-19.3623475903f,-19.0357124801f,-18.7138202114f,-18.3966263263f,-18.0840858815f,-17.7761534944f,-17.4727833885f,-17.1739294348f,-16.8795451935f,-16.589583953f,-16.303998767f,-16.0227424912f,-15.7457678168f,-15.4730273042f,-15.2044734139f,-14.9400585369f,-14.6797350231f};
+static const float Debriatus_factor_c2[129] = {110.245584411f,107.6917482f,105.197071539f,102.760184001f,100.379746901f,98.05445257f,95.7830236233f,93.5642122708f,91.3967996273f,89.2795950435f,87.2114354527f,85.1911847271f,83.2177330585f,81.2899963481f,79.4069156096f,77.5674563919f,75.7706082002f,74.0153839517f,72.3008194288f,70.6259727498f,68.989923854f,67.3917739896f,65.8306452266f,64.305679972f,62.8160404989f,61.3609084889f,59.9394845751f,58.5509879105f,57.1946557361f,55.8697429622f,54.575521761f,53.3112811614f,52.0763266635f,50.8699798553f,49.6915780404f,48.5404738756f,47.4160350099f,46.3176437418f,45.2446966799f,44.1966044095f,43.1727911716f,42.1726945416f,41.1957651248f,40.2414662533f,39.309273691f,38.3986753472f,37.5091709909f,36.6402719811f,35.7915009946f,34.9623917664f,34.1524888335f,33.3613472824f,32.5885325052f,31.8336199626f,31.0961949498f,30.3758523697f,29.6721965079f,28.9848408162f,28.3134077018f,27.6575283183f,27.016842365f,26.3909978861f,25.7796510786f,25.1824661045f,24.599114905f,24.0292770219f,23.4726394197f,22.9288963133f,22.3977490023f,21.8789057049f,21.3720814002f,20.8769976682f,20.3933825382f,19.9209703404f,19.4595015591f,19.008722691f,18.5683861045f,18.1382499038f,17.7180777972f,17.3076389668f,16.9067079419f,16.5150644746f,16.1324934182f,15.7587846105f,15.3937327579f,15.0371373229f,14.688802412f,14.3485366706f,14.0161531766f,13.691469338f,13.3743067924f,13.0644913093f,12.761852694f,12.4662246948f,12.1774449107f,11.8953547032f,11.6197991083f,11.3506267518f,11.0876897663f,10.8308437095f,10.5799474853f,10.3348632657f,10.095456416f,9.86159542005f,9.6331518082f,9.41000008694f,9.1920176697f,8.97908480966f,8.77108453412f,8.5679025797f,8.36942733024f,8.17554975493f,7.98616334883f,7.8011640741f,7.62045030299f,7.4439227618f,7.27148447681f,7.10304072028f,6.93849895924f,6.77776880396f,6.62076195871f,6.46739217319f,6.31757519476f,6.17122872305f,6.02827236366f,5.88862758476f,5.7522176737f,5.6189676948f,5.48880444834f};
+float Debriatus_factor(float cv);
+
+float Debriatus_crush(float i, float cv);
+
+float Debriatus_fold(float signal, float level);
+
+float Debriatus_process(float input, float fold, float crush, float distort, float saturate);
+
+typedef struct VultEngine__ctx_type_0 {
+ Rescomb__ctx_type_2 inst;
+} VultEngine__ctx_type_0;
+
+typedef VultEngine__ctx_type_0 VultEngine_rescomb_type;
+
+void VultEngine__ctx_type_0_init(VultEngine__ctx_type_0 &_output_);
+
+void VultEngine_rescomb_init(VultEngine__ctx_type_0 &_output_);
+
+float VultEngine_rescomb(VultEngine__ctx_type_0 &_ctx, float in, float cv_in, float tone_in, float res_in);
+
+typedef struct VultEngine__ctx_type_1 {
+ Stabile__ctx_type_8 _inst388;
+} VultEngine__ctx_type_1;
+
+typedef VultEngine__ctx_type_1 VultEngine_stabile_type;
+
+void VultEngine__ctx_type_1_init(VultEngine__ctx_type_1 &_output_);
+
+void VultEngine_stabile_init(VultEngine__ctx_type_1 &_output_);
+
+void VultEngine_stabile(VultEngine__ctx_type_1 &_ctx, float in, float cut_in, float res_in, float semblance_in, _tuple___real_real_real_real__ &_output_);
+
+typedef struct VultEngine__ctx_type_2 {
+ Lateralus__ctx_type_10 _inst390;
+} VultEngine__ctx_type_2;
+
+typedef VultEngine__ctx_type_2 VultEngine_lateralus_type;
+
+void VultEngine__ctx_type_2_init(VultEngine__ctx_type_2 &_output_);
+
+void VultEngine_lateralus_init(VultEngine__ctx_type_2 &_output_);
+
+void VultEngine_lateralus(VultEngine__ctx_type_2 &_ctx, float in, float cut, float res, _tuple___real_real__ &_output_);
+
+typedef struct VultEngine__ctx_type_3 {
+ Tangents__ctx_type_11 _inst392;
+} VultEngine__ctx_type_3;
+
+typedef VultEngine__ctx_type_3 VultEngine_tangents_type;
+
+void VultEngine__ctx_type_3_init(VultEngine__ctx_type_3 &_output_);
+
+void VultEngine_tangents_init(VultEngine__ctx_type_3 &_output_);
+
+float VultEngine_tangents(VultEngine__ctx_type_3 &_ctx, float lp, float bp, float hp, float cut, float res);
+
+float VultEngine_debriatus(float in, float fold_in, float crush_in, float distort_in, float saturate_in);
+
+typedef struct VultEngine__ctx_type_5 {
+ Trummor__ctx_type_0 processor;
+} VultEngine__ctx_type_5;
+
+typedef VultEngine__ctx_type_5 VultEngine_trummor_type;
+
+void VultEngine__ctx_type_5_init(VultEngine__ctx_type_5 &_output_);
+
+void VultEngine_trummor_init(VultEngine__ctx_type_5 &_output_);
+
+void VultEngine_trummor(VultEngine__ctx_type_5 &_ctx, float gate, float osc_in, float noise_in, _tuple___real_real_real_real__ &_output_);
+
+typedef struct VultEngine__ctx_type_6 {
+ Tohe__ctx_type_2 _inst396;
+} VultEngine__ctx_type_6;
+
+typedef VultEngine__ctx_type_6 VultEngine_tohe_type;
+
+void VultEngine__ctx_type_6_init(VultEngine__ctx_type_6 &_output_);
+
+void VultEngine_tohe_init(VultEngine__ctx_type_6 &_output_);
+
+float VultEngine_tohe(VultEngine__ctx_type_6 &_ctx, float x, float tone_in);
+
+
+
+#endif // VULTENGINE_H
diff --git a/plugins/community/repos/VultModules/src/VultModules.cpp b/plugins/community/repos/VultModules/src/VultModules.cpp
new file mode 100644
index 00000000..200f88c6
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/VultModules.cpp
@@ -0,0 +1,42 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include
+#include "VultModules.hpp"
+
+float getSampleRate()
+{
+ return engineGetSampleRate();
+}
+
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Rescomb);
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Stabile);
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Lateralus);
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Debriatus);
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Splie);
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Trummor);
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Tohe);
+RACK_PLUGIN_MODEL_DECLARE(VultModules, Tangents);
+
+RACK_PLUGIN_INIT(VultModules) {
+ RACK_PLUGIN_INIT_ID();
+
+ RACK_PLUGIN_MODEL_ADD(VultModules, Rescomb);
+ RACK_PLUGIN_MODEL_ADD(VultModules, Stabile);
+ RACK_PLUGIN_MODEL_ADD(VultModules, Lateralus);
+ RACK_PLUGIN_MODEL_ADD(VultModules, Debriatus);
+ RACK_PLUGIN_MODEL_ADD(VultModules, Splie);
+ RACK_PLUGIN_MODEL_ADD(VultModules, Trummor);
+ RACK_PLUGIN_MODEL_ADD(VultModules, Tohe);
+ RACK_PLUGIN_MODEL_ADD(VultModules, Tangents);
+}
diff --git a/plugins/community/repos/VultModules/src/VultModules.hpp b/plugins/community/repos/VultModules/src/VultModules.hpp
new file mode 100644
index 00000000..4f75c736
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/VultModules.hpp
@@ -0,0 +1,145 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "rack.hpp"
+
+using namespace rack;
+
+RACK_PLUGIN_DECLARE(VultModules);
+
+#ifdef USE_VST2
+#define plugin "VultModules"
+#endif // USE_VST2
+
+
+struct VultKnobBig : SVGKnob
+{
+ VultKnobBig()
+ {
+ box.size = Vec(60, 60);
+ minAngle = -0.75 * M_PI;
+ maxAngle = 0.75 * M_PI;
+ setSVG(SVG::load(assetPlugin(plugin, "res/KnobBig.svg")));
+ }
+};
+
+struct VultKnob : SVGKnob
+{
+ VultKnob()
+ {
+ box.size = Vec(40, 40);
+ minAngle = -0.75 * M_PI;
+ maxAngle = 0.75 * M_PI;
+ setSVG(SVG::load(assetPlugin(plugin, "res/Knob.svg")));
+ }
+};
+
+struct VultKnobAlt : SVGKnob
+{
+ VultKnobAlt()
+ {
+ box.size = Vec(30, 30);
+ minAngle = -0.75 * M_PI;
+ maxAngle = 0.75 * M_PI;
+ setSVG(SVG::load(assetPlugin(plugin, "res/KnobAlt.svg")));
+ }
+};
+
+struct VultKnobSmall : SVGKnob
+{
+ VultKnobSmall()
+ {
+ box.size = Vec(18, 18);
+ minAngle = -0.75 * M_PI;
+ maxAngle = 0.75 * M_PI;
+ setSVG(SVG::load(assetPlugin(plugin, "res/KnobSmall.svg")));
+ }
+};
+
+struct VultScrew : SVGScrew
+{
+ VultScrew()
+ {
+ sw->svg = SVG::load(assetPlugin(plugin, "res/Screw.svg"));
+ sw->wrap();
+ box.size = sw->box.size;
+ }
+};
+
+struct VultJack : SVGPort
+{
+ VultJack()
+ {
+ background->svg = SVG::load(assetPlugin(plugin, "res/Jack.svg"));
+ background->wrap();
+ box.size = background->box.size;
+ }
+};
+
+struct VultSelector3 : SVGSwitch, ToggleSwitch
+{
+ VultSelector3()
+ {
+ addFrame(SVG::load(assetPlugin(plugin, "res/Select3_A.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/Select3_B.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/Select3_C.svg")));
+ sw->wrap();
+ box.size = sw->box.size;
+ }
+};
+
+struct VultSelector2 : SVGSwitch, ToggleSwitch
+{
+ VultSelector2()
+ {
+ addFrame(SVG::load(assetPlugin(plugin, "res/Select2_A.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/Select2_B.svg")));
+ sw->wrap();
+ box.size = sw->box.size;
+ }
+};
+
+struct TrummodOscSelector : SVGSwitch, ToggleSwitch
+{
+ TrummodOscSelector()
+ {
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Tune.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Bend.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Drive.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Attack.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Hold.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Release.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Speed.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Source.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Level.svg")));
+ sw->wrap();
+ box.size = sw->box.size;
+ }
+};
+
+struct TrummodNoiseSelector : SVGSwitch, ToggleSwitch
+{
+ TrummodNoiseSelector()
+ {
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Tone.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Decimate.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Attack.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Hold.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Release.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Speed.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Source.svg")));
+ addFrame(SVG::load(assetPlugin(plugin, "res/LCD-Level.svg")));
+ sw->wrap();
+ box.size = sw->box.size;
+ }
+};
diff --git a/plugins/community/repos/VultModules/src/vult-src/LICENSE b/plugins/community/repos/VultModules/src/vult-src/LICENSE
new file mode 100644
index 00000000..5d73c06a
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/LICENSE
@@ -0,0 +1,10 @@
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/vult-src/VultEngine.vult b/plugins/community/repos/VultModules/src/vult-src/VultEngine.vult
new file mode 100644
index 00000000..57a41929
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/VultEngine.vult
@@ -0,0 +1,52 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun rescomb(in, cv_in, tone_in, res_in) {
+ val i = clip(in, -10.0, 10.0);
+ val cv = clip(cv_in, 0.0 , 1.0);
+ val tone = clip(tone_in, -1.05 , 1.05);
+ val res = clip(res_in, -1.1 , 1.1);
+ return inst:Rescomb.do(i, cv, tone, res);
+}
+
+fun stabile(in, cut_in, res_in, semblance_in) {
+ val cut = clip(cut_in, 0.0 , 0.92);
+ val res = clip(res_in, 0.0 , 4.0);
+ val semblance = clip(semblance_in, 0.0 , 1.0);
+ return Stabile.process(in, cut, res, semblance);
+}
+
+fun lateralus(in, cut, res) {
+ return Lateralus.process(in, cut, res);
+}
+
+fun tangents(lp, bp, hp, cut, res) {
+ return Tangents.process(lp, bp, hp, cut, res);
+}
+
+fun debriatus(in, fold_in, crush_in, distort_in, saturate_in) {
+ val fold = clip(fold_in, 0.0 , 1.0);
+ val crush = clip(crush_in, 0.0 , 1.0);
+ val distort = clip(distort_in, 0.0 , 1.0);
+ val saturate = clip(saturate_in, 0.0 , 1.0);
+ return Debriatus.process(in, fold, crush, distort, saturate);
+}
+
+fun trummor(gate, osc_in, noise_in) {
+ return processor:Trummor.do(gate, osc_in, noise_in);
+}
+
+fun tohe(x, tone_in) {
+ val tone = clip(tone_in, -1.0, 1.0);
+ return Tohe.do(x, tone);
+}
diff --git a/plugins/community/repos/VultModules/src/vult-src/ahr.vult b/plugins/community/repos/VultModules/src/vult-src/ahr.vult
new file mode 100644
index 00000000..b93b6c04
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/ahr.vult
@@ -0,0 +1,93 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun do(gate:real, a:real, h:real, r:real) {
+ mem state;
+ mem out;
+ mem rate;
+ mem target;
+ mem hold_phase;
+
+ val release = 0;
+ val attack = 1;
+ val hold = 2;
+ val reset = 3;
+
+ val bgate = gate > 0.0;
+
+ if(Util.edge(bgate)) {
+ state = reset;
+ }
+
+ val resetting = if state == reset then 1.0 else 0.0;
+
+ // transitions
+
+ if(Util.edge(out > 1024.0)) {
+ hold_phase = 0.0;
+ state = hold;
+ }
+ if(out < 10.0 && state == reset) {
+ state = attack;
+ }
+ if(hold_phase > 100.0 && state == hold) {
+ state = release;
+ }
+
+ // states
+
+ if(state == reset) {
+ rate = 1.0 / (100.0 * 0.005 + 0.05);
+ target = 0.0;
+ }
+ if(state == attack) {
+ rate = 1.0 / (100.0 * a + 0.05);
+ target = 1.2 * 1024.0;
+ }
+ if(state == hold) {
+ val hrate = 1.0 / (100.0 * h + 0.05);
+ hold_phase = hold_phase + hrate;
+ }
+ if(state == release) {
+ rate = 1.0 / (200.0 * r + 0.01);
+ target = 0.0;
+ }
+
+ out = out + (target - out) * rate * 0.005 * Util.sampleRateScale();
+
+
+ return clip(out / 1024.0, 0.0, 1.0), resetting;
+}
+
+fun process(gate:real) {
+ mem knob1, knob2, knob3;
+
+ return do(gate,knob1,knob2,knob3);
+}
+and noteOn(note:int, velocity:int, channel:int) {
+}
+and noteOff(note:int, channel:int) {
+}
+and controlChange(control:int, value: int, channel:int) {
+ if(control == 1)
+ knob1 = real(value)/127.0;
+ if(control == 2)
+ knob2 = real(value)/127.0;
+ if(control == 3)
+ knob3 = real(value)/127.0;
+}
+and default() {
+ knob1 = 0.0;
+ knob2 = 0.5;
+ knob3 = 0.5;
+}
diff --git a/plugins/community/repos/VultModules/src/vult-src/debriatus.vult b/plugins/community/repos/VultModules/src/vult-src/debriatus.vult
new file mode 100644
index 00000000..4cfc2598
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/debriatus.vult
@@ -0,0 +1,51 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun saturate(x) @[table(min = -24.0, max = 24.0, size = 241)]{
+ return tanh(x);
+}
+
+fun factor(cv) @[table(min = 0.0, max = 1.0, size = 128)] {
+ val x = 0.6 + 0.3 * cv;
+ return 10000.0 * exp(-x * 10.0);
+}
+
+fun crush(i:real, cv:real) {
+ val out = i;
+ if(cv == 0.0){
+ out = i;
+ }
+ else {
+ val b = factor(cv);
+ val x = int(i * b);
+ out = real(x)/b;
+ }
+ return out;
+}
+
+fun fold(signal:real, level:real) : real {
+ val sign = if signal > 0.0 then 1.0 else -1.0;
+ val amp = abs(signal) * (8.0 * level + 1.0);
+ val base = floor(amp);
+ val delta = amp - base;
+ val out = if int(base) % 2 <> 0 then 1.0 - delta else delta;
+ return sign * out;
+}
+
+fun process(input, fold, crush, distort, saturate) {
+ val x = fold(input, fold);
+ val y = crush(x, crush);
+ val z = y * (1.0 - 2.0 * distort) + y * y * y * distort * 8.0 - distort;
+ val out = saturate(z * (1.0 + saturate * 8.0));
+ return out;
+}
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/vult-src/decimate.vult b/plugins/community/repos/VultModules/src/vult-src/decimate.vult
new file mode 100644
index 00000000..9bc7a599
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/decimate.vult
@@ -0,0 +1,25 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun decimate(in:real, factor) {
+ mem count;
+ mem out;
+ val n = int(127.0 * factor);
+ n = clip(n, 0, 127);
+ count = count + 1;
+ if(count > n){
+ count = 0;
+ out = in;
+ }
+ return out;
+}
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/vult-src/lateralus.vult b/plugins/community/repos/VultModules/src/vult-src/lateralus.vult
new file mode 100644
index 00000000..30858e38
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/lateralus.vult
@@ -0,0 +1,129 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun tune(cut, fs, oversampling) {
+ val f = Util.cvTokHz(cut);
+ val fh = (2.0 * pi()) * f / (oversampling * fs);
+ return fh;
+}
+
+fun tune_44100(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 44.1, 4.0);
+}
+
+fun tune_48000(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 48.0, 4.0);
+}
+
+fun tune_88200(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 88.2, 2.0);
+}
+
+fun tune_96000(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 96.0, 2.0);
+}
+
+fun tune_176400(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 176.4, 1.0);
+}
+
+fun tune_192000(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 192.0, 1.0);
+}
+
+fun getTune(cut, fs) {
+ if (fs == 44100.0)
+ return tune_44100(cut);
+ else if (fs == 48000.0)
+ return tune_48000(cut);
+ else if (fs == 88200.0)
+ return tune_88200(cut);
+ else if (fs == 96000.0)
+ return tune_96000(cut);
+ else if (fs == 176400.0)
+ return tune_176400(cut);
+ else if (fs == 192000.0)
+ return tune_192000(cut);
+ else
+ return tune(cut, fs, 4.0);
+}
+
+fun heun(input, fh, res) {
+ mem p0, p1, p2, p3;
+
+ val wt0 = Util.cubic_clipper(input - 4.0 * res * p3);
+ val wt1 = Util.cubic_clipper(p0);
+ val dpt0 = (wt0 - wt1) * fh;
+ val wt3 = Util.cubic_clipper(p1);
+ val dpt1 = (wt1 - wt3) * fh;
+ val wt5 = Util.cubic_clipper(p2);
+ val dpt2 = (wt3 - wt5) * fh;
+ val wt7 = Util.cubic_clipper(p3);
+ val dpt3 = (wt5 - wt7) * fh;
+
+ val pt0 = p0 + dpt0;
+ val pt1 = p1 + dpt1;
+ val pt2 = p2 + dpt2;
+ val pt3 = p3 + dpt3;
+
+ val w0 = Util.cubic_clipper(input - 4.0 * res * pt3);
+ val w1 = Util.cubic_clipper(pt0);
+ val dp0 = (w0 - w1) * fh;
+ val w3 = Util.cubic_clipper(pt1);
+ val dp1 = (w1 - w3) * fh;
+ val w5 = Util.cubic_clipper(pt2);
+ val dp2 = (w3 - w5) * fh;
+ val w7 = Util.cubic_clipper(pt3);
+ val dp3 = (w5 - w7) * fh;
+
+ p0 = p0 + (dp0 + dpt0)/ 2.0;
+ p1 = p1 + (dp1 + dpt1)/ 2.0;
+ p2 = p2 + (dp2 + dpt2)/ 2.0;
+ p3 = p3 + (dp3 + dpt3)/ 2.0;
+
+ return p1, p3;
+}
+
+fun process_heun(input:real, cut:real, res:real) {
+ mem fh;
+ val fs = Util.getSampleRate();
+ if(Util.change(cut) || Util.change(fs)) {
+ fh = getTune(cut, fs);
+ }
+ val db12, db24 = 0.0, 0.0;
+
+ if(fs == 176400.0 || fs == 192000.0) {
+ db12, db24 = h:heun(input, fh, res);
+ }
+ else if(fs == 88200.0 || fs == 96000.0) {
+ db12, db24 = h:heun(input, fh, res);
+ db12, db24 = h:heun(input, fh, res);
+ }
+ else {
+ db12, db24 = h:heun(input, fh, res);
+ db12, db24 = h:heun(input, fh, res);
+ db12, db24 = h:heun(input, fh, res);
+ db12, db24 = h:heun(input, fh, res);
+ }
+ return db12 * (1.0 + res * 0.5), db24 * (1.0 + res);
+}
+
+
+fun process(input:real, cut_in:real, res_in:real) {
+ val res = Util.polylog(res_in);
+ val comp = Util.map(res, 0.9, 1.0, 0.0, 0.25);
+ val limit = if comp > 0.0 then 0.9 - comp else 0.9;
+ val cut = clip(cut_in, 0.0, limit);
+ val noise = Util.simple_noise() * 0.005;
+ return process_heun(input + noise, cut, res * 1.1);
+}
diff --git a/plugins/community/repos/VultModules/src/vult-src/noise.vult b/plugins/community/repos/VultModules/src/vult-src/noise.vult
new file mode 100644
index 00000000..b0ca5977
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/noise.vult
@@ -0,0 +1,29 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun process(gate) {
+ mem x1 = (x1 * 17389 + 7919) % 32768;
+ val y1 = real(x1) / 32768.0;
+ mem x2 = (x2 * 27449 + 12553) % 32768;
+ val y2 = real(x2) / 32768.0;
+ val out = y1 - y2;
+ if(Util.edge(gate > 0.1)) {
+ x1 = 0;
+ x2 = 0;
+ }
+ return out;
+}
+and noteOn(note:int,velocity:int,channel:int){ }
+and noteOff(note:int,channel:int){ }
+and controlChange(control:int,value:int,channel:int){ }
+and default(){ }
diff --git a/plugins/community/repos/VultModules/src/vult-src/rescomb.vult b/plugins/community/repos/VultModules/src/vult-src/rescomb.vult
new file mode 100644
index 00000000..77138829
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/rescomb.vult
@@ -0,0 +1,49 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+fun delay(x:real, cv:real) : real {
+ mem buffer : array(real, 3000);
+ mem write_pos = (write_pos+1) % size(buffer);
+ _ = set(buffer, write_pos, x);
+ // Gets the position in the buffer to read
+ val r_size = real(size(buffer));
+ val r_index = (real(write_pos) - Util.cvToperiodUnit(cv) * Util.getSampleRate()) % r_size;
+ r_index = if r_index < 0.0 then r_size + r_index else r_index;
+ val t1 = int(floor(r_index)) % size(buffer);
+ val t2 = (t1 + 1) % size(buffer);
+ // Gets the decimal part of the position
+ val decimal = r_index - real(t1);
+ // Reads the values in the buffer
+ val x1 = get(buffer,t1);
+ val x2 = get(buffer,t2);
+ // Interpolates the value
+ val ret = (x2-x1) * decimal + x1;
+ return ret;
+}
+
+fun toneCurve(tone) @[table(min=-1.2,max=1.2,size=64)] {
+ val sign = if tone < 0.0 then -1.0 else 1.0;
+ return sign * sqrt(abs(tone));
+}
+
+fun do(in, cv, tone, res) {
+ mem output, stone;
+ if(Util.change(tone)){
+ stone = toneCurve(tone);
+ }
+ val feedback = Util.dcblock(output * res);
+ val saturated_input = Util.stanh(in + feedback);
+ output = stone * delay(saturated_input, cv) + in;
+ return Util.stanh(output);
+}
diff --git a/plugins/community/repos/VultModules/src/vult-src/stabile.vult b/plugins/community/repos/VultModules/src/vult-src/stabile.vult
new file mode 100644
index 00000000..d7210289
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/stabile.vult
@@ -0,0 +1,93 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+fun calc_g(cv, fs) {
+ val pitch = Util.cvToPitch(cv);
+ val f = 8.175798915643707 * exp(0.057762265046662105 * pitch);
+ val wd = 2.0 * pi() * f;
+ val T = 1.0 / fs;
+ val wa = (2.0 / T) * tan(wd * T / 2.0);
+ val g = wa * T / 2.0;
+ return g;
+}
+
+fun calc_g_44100(cv) @[table(size=128, min=0.0, max=1.0)]{
+ return calc_g(cv, 44100.0);
+}
+
+fun calc_g_48000(cv) @[table(size=128, min=0.0, max=1.0)]{
+ return calc_g(cv, 48000.0);
+}
+
+fun calc_g_88200(cv) @[table(size=128, min=0.0, max=1.0)]{
+ return calc_g(cv, 88200.0);
+}
+
+fun calc_g_96000(cv) @[table(size=128, min=0.0, max=1.0)]{
+ return calc_g(cv, 96000.0);
+}
+
+fun calc_g_176400(cv) @[table(size=128, min=0.0, max=1.0)]{
+ return calc_g(cv, 176400.0);
+}
+
+fun calc_g_192000(cv) @[table(size=128, min=0.0, max=1.0)]{
+ return calc_g(cv, 192000.0);
+}
+
+fun tune(cv) {
+ val fs = Util.getSampleRate ();
+ val g = 0.0;
+ if (fs == 44100.0)
+ g = calc_g_44100(cv);
+ else if (fs == 48000.0)
+ g = calc_g_48000(cv);
+ else if (fs == 88200.0)
+ g = calc_g_88200(cv);
+ else if (fs == 96000.0)
+ g = calc_g_96000(cv);
+ else if (fs == 176400.0)
+ g = calc_g_176400(cv);
+ else if (fs == 192000.0)
+ g = calc_g_192000(cv);
+ else
+ g = calc_g(cv, Util.getSampleRate());
+ return g;
+}
+
+fun process(x, cv, q, semblance) {
+ mem z1, z2;
+ mem g,inv_den, R;
+ q = q + 0.5;
+ if(Util.change(cv) || Util.change(q)) {
+ g = tune(cv);
+ R = 1.0 / (2.0 * (q + eps()));
+ inv_den = 1.0/(1.0 + 2.0 * R * g + g * g);
+ }
+
+ val high = (x - (2.0 * R + g) * z1 - z2) * inv_den;
+ val band = g * high + z1;
+ val low = g * band + z2;
+
+ z1 = g * high + band;
+ z2 = g * band + low;
+
+ val sem = Util.fadeA(semblance) * low + Util.fadeB(semblance) * high;
+ return low, band, high, sem;
+}
+and default() @[init] {
+ g = calc_g(0.0, Util.getSampleRate());
+ R = 1.0 / (2.0 * 0.5);
+ inv_den = 1.0 / (1.0 + g * g);
+ }
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/vult-src/swept.vult b/plugins/community/repos/VultModules/src/vult-src/swept.vult
new file mode 100644
index 00000000..00102722
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/swept.vult
@@ -0,0 +1,26 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun process(gate, start, end, rate) {
+ mem out;
+ val bgate = gate > 0.5;
+ out = out + (end - out) * rate * 0.004 * Util.sampleRateScale();
+ if(Util.edge(bgate))
+ out = start;
+ return out;
+}
+
+and noteOn(note:int,velocity:int,channel:int){ }
+and noteOff(note:int,channel:int){ }
+and controlChange(control:int,value:int,channel:int){ }
+and default(){ }
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/vult-src/tangents.vult b/plugins/community/repos/VultModules/src/vult-src/tangents.vult
new file mode 100644
index 00000000..f15976ee
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/tangents.vult
@@ -0,0 +1,121 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun tune(cut, fs, oversampling) {
+ val f = Util.cvTokHz(cut);
+ val fh = (2.0 * pi()) * f / (oversampling * fs);
+ return fh;
+}
+
+fun tune_44100(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 44.1, 4.0);
+}
+
+fun tune_48000(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 48.0, 4.0);
+}
+
+fun tune_88200(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 88.2, 2.0);
+}
+
+fun tune_96000(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 96.0, 2.0);
+}
+
+fun tune_176400(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 176.4, 1.0);
+}
+
+fun tune_192000(cut) @[table(min = 0.0, max = 1.0, size = 128)]{
+ return tune(cut, 192.0, 1.0);
+}
+
+fun getTune(cut, fs) {
+ if (fs == 44100.0)
+ return tune_44100(cut);
+ else if (fs == 48000.0)
+ return tune_48000(cut);
+ else if (fs == 88200.0)
+ return tune_88200(cut);
+ else if (fs == 96000.0)
+ return tune_96000(cut);
+ else if (fs == 176400.0)
+ return tune_176400(cut);
+ else if (fs == 192000.0)
+ return tune_192000(cut);
+ else
+ return tune(cut, fs, 4.0);
+}
+
+fun heun(lp, bp, hp, wh, cut, res) {
+ mem p0, p1;
+ val resfactor = 3.0;
+
+ val yt = Util.cubic_clipper(hp + p0);
+ val feedt = resfactor * res * yt;
+ val dpt0 = (bp - hp + feedt - p0 + p1) * wh;
+ val dpt1 = (-2.0 * bp + hp + lp - 2.0 * feedt + p0 - 2.0 * p1) * wh;
+
+ val pt0 = p0 + dpt0;
+ val pt1 = p1 + dpt1;
+
+ val yn = Util.cubic_clipper(hp + pt0);
+ val feed = resfactor * res * yn;
+ val dp0 = (bp - hp + feed - pt0 + pt1) * wh;
+ val dp1 = (-2.0 * bp + hp + lp - 2.0 * feed + pt0 - 2.0 * pt1) * wh;
+
+ p0 = p0 + (dp0 + dpt0)/ 2.0;
+ p1 = p1 + (dp1 + dpt1)/ 2.0;
+
+ return Util.cubic_clipper(hp + p0);
+}
+
+fun process_heun(lp, bp, hp, cut, res) {
+ mem fh;
+ val fs = Util.getSampleRate();
+ if(Util.change(cut) || Util.change(fs)) {
+ fh = getTune(cut, fs);
+ }
+ val out = 0.0;
+
+ if(fs == 176400.0 || fs == 192000.0) {
+ out = h:heun(lp, bp, hp, fh, cut, res);
+ }
+ else if(fs == 88200.0 || fs == 96000.0) {
+ out = h:heun(lp, bp, hp, fh, cut, res);
+ out = h:heun(lp, bp, hp, fh, cut, res);
+ }
+ else {
+ out = h:heun(lp, bp, hp, fh, cut, res);
+ out = h:heun(lp, bp, hp, fh, cut, res);
+ out = h:heun(lp, bp, hp, fh, cut, res);
+ out = h:heun(lp, bp, hp, fh, cut, res);
+ }
+ return out;
+}
+
+fun simple_noise() {
+ mem x1 = (x1 * 17389 + 7919) % 32768;
+ val y1 = real(x1) / 32768.0;
+ return y1;
+}
+
+fun process(lp, bp, hp, cut_in, res_in) {
+ val res = Util.polylog(res_in);
+ val comp = Util.map(res, 0.9, 1.0, 0.0, 0.25);
+ val limit = if comp > 0.0 then 0.9 - comp else 0.9;
+ val cut = clip(cut_in, 0.0, limit);
+ val noise = Util.simple_noise() * 0.005;
+ return process_heun(lp + noise,bp, hp, cut, res);
+}
diff --git a/plugins/community/repos/VultModules/src/vult-src/tohe.vult b/plugins/community/repos/VultModules/src/vult-src/tohe.vult
new file mode 100644
index 00000000..dba7ac73
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/tohe.vult
@@ -0,0 +1,43 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun tone_k1(g) @[table(size=32, min=-1.0, max=1.0)] {
+ val k = exp(0.115129 * -abs(g * 16.0));
+ return k - 1.0;
+}
+
+fun tone_k0(g) @[table(size=32, min=-1.0, max=1.0)] {
+ val k = exp(0.115129 * -abs(g * 16.0));
+ val wc = Util.map(g,-1.0, 1.0, 0.001, 0.1);
+ return (tan(pi() * wc / 2.0) - k) / (tan(pi()* wc / 2.0) + k);
+}
+
+fun do(x, gain) {
+ mem k0, k1;
+ mem w1, comp;
+ if(Util.change(gain)) {
+ k1 = tone_k1(gain);
+ k0 = tone_k0(gain);
+ comp = Util.map(abs(gain),0.0, 1.0, 1.0, 1.8);
+ }
+ val w0 = x - k0 * w1;
+ val y0 = k0 * w0 + w1;
+ w1 = w0;
+ val sign = if gain < 0.0 then -1.0 else 1.0;
+ return (k1 * (x + sign * y0) / 2.0 + x) * comp;
+}
+and start() @[init] {
+ k1 = tone_k1(0.0);
+ k0 = tone_k0(0.0);
+ comp = 1.0;
+}
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/vult-src/tricore.vult b/plugins/community/repos/VultModules/src/vult-src/tricore.vult
new file mode 100644
index 00000000..f075cb5a
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/tricore.vult
@@ -0,0 +1,52 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun process(cv:real, reset:real, disable:real) : real {
+ mem reset_state;
+ mem phase, reset_phase;
+ // Determine the next value
+ val bdisable = disable > 0.5;
+ if(not(reset_state)){
+ phase = phase + Util.cvToRate(cv);
+ if (phase > 1.0)
+ phase = phase - 1.0;
+ }
+
+ val sine_out = Util.sine(phase);
+
+ // if reset or disable were triggered, then enter reset state
+ if(Util.edge(reset > 0.0) || Util.edge(bdisable)) {
+ // this is gonna be the initial value from which the oscillator starts resetting
+ reset_phase = 1.0;
+ // enter the reset state
+ reset_state = true;
+ }
+
+ val reset_out = 1.0;
+ if(reset_state) {
+ // exponentially reduce the value until, if it's reseted and not dissable
+ // when the value is very small goes out of reset state
+ if(abs(reset_phase) > 0.001) {
+ // dissable produces a softer transition
+ val reset_speed = 0.01;
+ reset_phase = reset_phase - reset_phase * reset_speed;
+ }
+ else {
+ reset_phase = if reset_phase > 0.001 then reset_phase else 0.0;
+ reset_state = false;
+ phase = 0.0;
+ }
+ reset_out = reset_phase;
+ }
+ return reset_out * sine_out;
+}
\ No newline at end of file
diff --git a/plugins/community/repos/VultModules/src/vult-src/trummor.vult b/plugins/community/repos/VultModules/src/vult-src/trummor.vult
new file mode 100644
index 00000000..33d23f70
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/trummor.vult
@@ -0,0 +1,96 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+fun do(gate, osc_in, noise_in) {
+ mem level1, level2;
+ mem env1_a, env1_h, env1_r;
+ mem env2_a, env2_h, env2_r;
+ mem pitch, bend, drive;
+ mem tone, decimate;
+ mem int_osc, ext_osc;
+ mem int_noise, ext_noise;
+ mem env1_scale, env2_scale;
+ // Envelope of the drum. One parameter affects the hold and relase
+ val osc_env, env_reset = Ahr.do(gate, env1_scale * env1_a, env1_scale * env1_h, env1_scale * env1_r);
+ // Change of pitch
+ val cv = Swept.process(1.0 - env_reset, pitch + bend * 0.4, pitch, 0.1);
+ // Main triangle oscillator
+ // Note: the oscillator is dissabled while the nevelop resets
+ val osc = int_osc * Tricore.process(cv, 0.0, env_reset) + ext_osc * osc_in;
+ // Saturates the triangle to get a sine with some harmonics
+ val osc_sat = Util.saturate((drive + 1.0) * osc);
+
+ val noise_env, _ = Ahr.do(gate, env2_scale * env2_a, env2_scale * env2_h, env2_scale * env2_r);
+ val noise_osc =
+ if decimate == 0.0 then
+ int_noise * (random() - 0.5) + ext_noise * noise_in
+ else
+ Decimate.decimate(int_noise * Noise.process(gate) + ext_noise * noise_in, decimate);
+ noise_osc = Tohe.do(noise_osc, tone);
+
+ val output = level1 * osc_env * osc_sat + level2 * noise_env * noise_osc;
+ return output, cv, osc_env, noise_env;
+}
+and setLevel1(value) {
+ level1 = clip(value, 0.0, 1.0);
+}
+and setLevel2(value) {
+ level2 = clip(value, 0.0, 1.0);
+}
+and setEnv1A(value) {
+ env1_a = clip(value, 0.0, 1.0);
+}
+and setEnv1H(value) {
+ env1_h = clip(value, 0.0, 1.0);
+}
+and setEnv1R(value) {
+ env1_r = clip(value, 0.0, 1.0);
+}
+and setEnv2A(value) {
+ env2_a = clip(value, 0.0, 1.0);
+}
+and setEnv2H(value) {
+ env2_h = clip(value, 0.0, 1.0);
+}
+and setEnv2R(value) {
+ env2_r = clip(value, 0.0, 1.0);
+}
+and setPitch(value) {
+ pitch = clip(value, -1.0, 1.0);
+}
+and setBend(value) {
+ bend = clip(value, -1.0, 1.0);
+}
+and setDrive(value) {
+ drive = clip(value, 0.0, 1.0);
+}
+and setTone(value) {
+ tone = clip(value, -1.0, 1.0);
+}
+and setOscBlend(value) {
+ int_osc = Util.fadeA(value);
+ ext_osc = Util.fadeB(value);
+}
+and setNoiseBlend(value) {
+ int_noise = Util.fadeA(value);
+ ext_noise = Util.fadeB(value);
+}
+and setEnv1Scale(value) {
+ env1_scale = if value < 0.5 then 1.0 else 0.2;
+}
+and setEnv2Scale(value) {
+ env2_scale = if value < 0.5 then 1.0 else 0.2;
+}
+and setDecimate(value) {
+ decimate = clip(value, 0.0, 1.0);
+}
diff --git a/plugins/community/repos/VultModules/src/vult-src/util.vult b/plugins/community/repos/VultModules/src/vult-src/util.vult
new file mode 100644
index 00000000..aba95690
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vult-src/util.vult
@@ -0,0 +1,130 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+external getSampleRate() : real "getSampleRate";
+
+fun sampleRateScale() {
+ return 44100.0 / Util.getSampleRate();
+}
+
+fun edge(x:bool) : bool {
+ mem pre;
+ val ret = x && not(pre);
+ pre = x;
+ return ret;
+}
+
+fun change(x:real):bool {
+ mem pre_x;
+ val v:bool = pre_x <> x;
+ pre_x = x;
+ return v;
+}
+
+fun cubic_clipper(x) {
+ if(x <= -2.0/3.0)
+ return -2.0/3.0;
+ else if(x >= 2.0/3.0)
+ return 2.0/3.0;
+ else
+ return 27.0/23.0 * (x - (x * x * x) / 3.0);
+}
+
+fun stanh(x) @[table(min = -24.0, max = 24.0, size = 241)] {
+ return 16.0 * tanh(x / 16.0);
+}
+
+fun sine(x) @[table(min = 0.0, max = 1.0, size = 101)] {
+ return sin(x * 2.0 * pi());
+}
+
+fun saturate(x) @[table(min = -24.0, max = 24.0, size = 241)] {
+ return tanh(x);
+}
+
+fun map(x:real,x0,x1,y0,y1) : real {
+ return (x-x0)*(y1-y0)/(x1-x0) + y0;
+}
+
+fun dcblock(x0){
+ mem x1,y1;
+ val y0 = x0-x1+y1*0.995;
+ x1,y1 = x0,y0;
+ return y0;
+}
+
+fun smooth(input){
+ mem x;
+ x = x+(input-x)*0.005;
+ return x;
+}
+
+fun cvToPitch(cv) {
+ return cv * 120.0 + 24.0;
+}
+
+fun cvToperiodUnit(cv) @[table(size=32,min=0.0,max=1.0)] {
+ val pitch = cvToPitch(cv);
+ val f = 8.175798915643707 * exp(0.057762265046662105 * pitch); //440. 2^((pitch - 69)/12.)
+ return 1.0 / f / 2.0;
+}
+
+/* Returns the frequency in kHz of the corresponding CV */
+fun cvTokHz(cv) @[table(size=32,min=0.0,max=1.0)] {
+ val pitch = Util.cvToPitch(cv);
+ val f = 8.175798915643707 * exp(0.057762265046662105 * pitch); //440. 2^((pitch - 69)/12.)
+ return f/1000.0;
+}
+
+fun pitchToRateUnit(pitch) @[table(size=32, min=0.0, max=127.0)] {
+ return 8.175798915643707 * exp(0.057762265046662105 * pitch);
+}
+
+fun cvToRateUnit(cv) @[table(size=128, min=0.0, max=0.9)] {
+ return pitchToRateUnit(cvToPitch(cv));
+}
+
+fun pitchToRate(pitch) {
+ mem rate;
+ val fs = getSampleRate();
+ if(change(pitch) || change(fs))
+ rate = pitchToRateUnit(pitch) / getSampleRate();
+ return rate;
+}
+
+fun cvToRate(cv) {
+ mem rate;
+ val fs = getSampleRate();
+ if(change(cv) || change(fs))
+ rate = cvToRateUnit(cv) / fs;
+ return rate;
+}
+
+fun simple_noise() {
+ mem x1 = (x1 * 17389 + 7919) % 32768;
+ val y1 = real(x1) / 32768.0;
+ return y1;
+}
+
+fun polylog(x){
+ val xx = clip(x, 0.0, 1.0);
+ return (2.0 - xx) * xx;
+}
+
+fun fadeA(x) @[table(size=32, min=0.0, max=1.0)]{
+ return cos(2.0 * pi() * x / 4.0);
+}
+
+fun fadeB(x) @[table(size=32, min=0.0, max=1.0)]{
+ return sin(2.0 * pi() * x / 4.0);
+}
diff --git a/plugins/community/repos/VultModules/src/vultin.c b/plugins/community/repos/VultModules/src/vultin.c
new file mode 100644
index 00000000..2070e171
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vultin.c
@@ -0,0 +1,263 @@
+/*
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Leonardo Laguna Ruiz
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+NOTE: The code for the fixed-point operations is based on the project:
+ https://code.google.com/p/libfixmath/
+
+*/
+#include "vultin.h"
+#include "stdio.h"
+
+fix16_t fix_exp(fix16_t inValue)
+{
+ if (inValue == 0)
+ return 0x00010000;
+ if (inValue == 0x00010000)
+ return 178145;
+ if (inValue >= 681391)
+ return 0x7FFFFFFF;
+ if (inValue <= -772243)
+ return 0;
+ // The power-series converges much faster on positive values
+ // and exp(-x) = 1/exp(x).
+ int neg = (inValue < 0);
+ if (neg)
+ inValue = -inValue;
+ fix16_t result = inValue + 0x00010000;
+ fix16_t term = inValue;
+ uint_fast8_t i;
+ for (i = 2; i < 30; i++)
+ {
+ term = fix_mul(term, fix_div(inValue, int_to_fix(i)));
+ result += term;
+ if ((term < 500) && ((i > 15) || (term < 20)))
+ break;
+ }
+ if (neg)
+ result = fix_div(0x00010000, result);
+ return result;
+}
+
+fix16_t fix_sin(fix16_t x0)
+{
+ fix16_t x1 = (x0 % 0x6487e /* 6.283185 */);
+ uint8_t sign = (x1 > 0x3243f /* 3.141593 */);
+ fix16_t x2 = (x1 % 0x3243f /* 3.141593 */);
+ fix16_t x3;
+ if (x2 > 0x1921f /* 1.570796 */)
+ x3 = fix_add(0x3243f /* 3.141593 */, (-x2));
+ else
+ x3 = x2;
+ fix16_t xp2 = fix_mul(x3, x3);
+ fix16_t acc = fix_mul(x3, fix_add(0x10000 /* 1.000000 */, fix_mul(fix_add((0xffffd556 /* -0.166667 */), fix_mul(0x222 /* 0.008333 */, xp2)), xp2)));
+ return (sign ? (-acc) : acc);
+}
+
+fix16_t fix_cos(fix16_t inAngle)
+{
+ return fix_sin(inAngle + (fix_pi() >> 1));
+}
+
+fix16_t fix_tan(fix16_t inAngle)
+{
+ return fix_div(fix_sin(inAngle), fix_cos(inAngle));
+}
+
+fix16_t fix_sinh(fix16_t inAngle)
+{
+ return fix_mul(fix_exp(inAngle) - fix_exp(-inAngle), 0x8000);
+}
+
+fix16_t fix_cosh(fix16_t inAngle)
+{
+ return fix_mul(fix_exp(inAngle) + fix_exp(-inAngle), 0x8000);
+}
+
+fix16_t fix_tanh(fix16_t inAngle)
+{
+ fix16_t e_x = fix_exp(inAngle);
+ fix16_t m_e_x = fix_exp(-inAngle);
+ return fix_div(e_x - m_e_x, e_x + m_e_x);
+}
+
+fix16_t fix_sqrt(fix16_t inValue)
+{
+ uint8_t neg = (inValue < 0);
+ uint32_t num = (neg ? -inValue : inValue);
+ uint32_t result = 0;
+ uint32_t bit;
+ uint8_t n;
+
+ // Many numbers will be less than 15, so
+ // this gives a good balance between time spent
+ // in if vs. time spent in the while loop
+ // when searching for the starting value.
+ if (num & 0xFFF00000)
+ bit = (uint32_t)1 << 30;
+ else
+ bit = (uint32_t)1 << 18;
+
+ while (bit > num)
+ bit >>= 2;
+
+ // The main part is executed twice, in order to avoid
+ // using 64 bit values in computations.
+ for (n = 0; n < 2; n++)
+ {
+ // First we get the top 24 bits of the answer.
+ while (bit)
+ {
+ if (num >= result + bit)
+ {
+ num -= result + bit;
+ result = (result >> 1) + bit;
+ }
+ else
+ {
+ result = (result >> 1);
+ }
+ bit >>= 2;
+ }
+
+ if (n == 0)
+ {
+ // Then process it again to get the lowest 8 bits.
+ if (num > 65535)
+ {
+ // The remainder 'num' is too large to be shifted left
+ // by 16, so we have to add 1 to result manually and
+ // adjust 'num' accordingly.
+ // num = a - (result + 0.5)^2
+ // = num + result^2 - (result + 0.5)^2
+ // = num - result - 0.5
+ num -= result;
+ num = (num << 16) - 0x8000;
+ result = (result << 16) + 0x8000;
+ }
+ else
+ {
+ num <<= 16;
+ result <<= 16;
+ }
+
+ bit = 1 << 14;
+ }
+ }
+ return (neg ? -(int32_t)result : (int32_t)result);
+}
+
+/* Array initialization */
+void float_init_array(int size, float value, float *data)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ data[i] = value;
+}
+
+void int_init_array(int size, int value, int *data)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ data[i] = value;
+}
+
+void bool_init_array(int size, uint8_t value, uint8_t *data)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ data[i] = value;
+}
+
+void fix_init_array(int size, fix16_t value, fix16_t *data)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ data[i] = value;
+}
+
+void float_copy_array(int size, float *dest, float *src)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ dest[i] = src[i];
+}
+
+void int_copy_array(int size, int *dest, int *src)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ dest[i] = src[i];
+}
+
+void bool_copy_array(int size, uint8_t *dest, uint8_t *src)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ dest[i] = src[i];
+}
+
+void fix_copy_array(int size, fix16_t *dest, fix16_t *src)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ dest[i] = src[i];
+}
+
+float float_random()
+{
+ return (float)rand() / RAND_MAX;
+}
+
+fix16_t fix_random()
+{
+ float temp = ((float)rand() / RAND_MAX) * 0x00010000;
+ return (fix16_t)temp;
+}
+
+int irandom()
+{
+ return (int)rand();
+}
+
+void float_print(float value)
+{
+ printf("%f\n", value);
+}
+void fix_print(fix16_t value)
+{
+ printf("%f\n", fix_to_float(value));
+}
+void int_print(int value)
+{
+ printf("%i\n", value);
+}
+void string_print(char *value)
+{
+ printf("%s\n", value);
+}
+void bool_print(uint8_t value)
+{
+ printf("%s\n", value ? "true" : "false");
+}
diff --git a/plugins/community/repos/VultModules/src/vultin.h b/plugins/community/repos/VultModules/src/vultin.h
new file mode 100644
index 00000000..37b3eb38
--- /dev/null
+++ b/plugins/community/repos/VultModules/src/vultin.h
@@ -0,0 +1,235 @@
+/*
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Leonardo Laguna Ruiz
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+NOTE: The code for the fixed-point operations is based on the project:
+ https://code.google.com/p/libfixmath/
+
+*/
+
+#ifndef VULTIN_H
+#define VULTIN_H
+
+#include
+#include
+
+#ifdef _MSC_VER
+#define static_inline static __inline
+#else
+#define static_inline static inline
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int32_t fix16_t;
+
+// Type conversion
+static_inline float fix_to_float(fix16_t a)
+{
+ return (float)a / 0x00010000;
+}
+static_inline fix16_t float_to_fix(float a)
+{
+ float temp = a * 0x00010000;
+ return (fix16_t)temp;
+}
+
+static_inline float int_to_float(int a)
+{
+ return (float)a;
+}
+
+static_inline int float_to_int(float a)
+{
+ return (int)a;
+}
+
+static_inline fix16_t int_to_fix(int a)
+{
+ return a * 0x00010000;
+}
+
+static_inline int fix_to_int(fix16_t a)
+{
+ return (a >> 16);
+}
+
+static_inline int int_clip(int v, int minv, int maxv)
+{
+ return v > maxv ? maxv : (v < minv ? minv : v);
+}
+
+// Basic operations for fixed point numbers
+static_inline fix16_t fix_add(fix16_t x, fix16_t y)
+{
+ return x + y;
+}
+
+static_inline fix16_t fix_sub(fix16_t x, fix16_t y)
+{
+ return x - y;
+}
+
+static_inline fix16_t fix_mul(fix16_t x, fix16_t y)
+{
+ int64_t res = (int64_t)x * y;
+ return (fix16_t)(res >> 16);
+}
+
+static_inline fix16_t fix_div(fix16_t a, fix16_t b)
+{
+ if (b == 0)
+ return 0;
+ fix16_t result = (((int64_t)a) << 16) / ((int64_t)b);
+ return result;
+}
+
+static_inline fix16_t fix_minus(fix16_t x)
+{
+ return -x;
+}
+
+static_inline fix16_t fix_abs(fix16_t x)
+{
+ return x < 0 ? (-x) : x;
+}
+
+static_inline fix16_t fix_min(fix16_t a, fix16_t b)
+{
+ return a < b ? a : b;
+}
+
+static_inline fix16_t fix_max(fix16_t a, fix16_t b)
+{
+ return a > b ? a : b;
+}
+
+static_inline fix16_t fix_clip(fix16_t v, fix16_t minv, fix16_t maxv)
+{
+ return v > maxv ? maxv : (v < minv ? minv : v);
+}
+
+static_inline fix16_t fix_floor(fix16_t x)
+{
+ return (x & 0xFFFF0000);
+}
+
+static_inline fix16_t fix_not(fix16_t x)
+{
+ return ~x;
+}
+
+static_inline float float_eps()
+{
+ return 1e-18f;
+}
+
+static_inline fix16_t fix_eps()
+{
+ return 1;
+}
+
+static_inline float float_pi()
+{
+ return 3.1415926535897932384f;
+}
+
+static_inline fix16_t fix_pi()
+{
+ return 205887;
+}
+
+fix16_t fix_exp(fix16_t inValue);
+
+fix16_t fix_sin(fix16_t inAngle);
+
+fix16_t fix_cos(fix16_t inAngle);
+
+fix16_t fix_tan(fix16_t inAngle);
+
+fix16_t fix_sinh(fix16_t inAngle);
+
+fix16_t fix_cosh(fix16_t inAngle);
+
+fix16_t fix_tanh(fix16_t inAngle);
+
+fix16_t fix_sqrt(fix16_t inValue);
+
+/* Floating point operations */
+
+static_inline float float_clip(float value, float low, float high)
+{
+ return value < low ? low : (value > high ? high : value);
+}
+
+/* Array get and set */
+static_inline void float_set(float a[], int i, float value) { a[i] = value; }
+static_inline float float_get(float a[], int i) { return a[i]; }
+static_inline void fix_set(fix16_t a[], int i, fix16_t value) { a[i] = value; }
+static_inline fix16_t fix_get(fix16_t a[], int i) { return a[i]; }
+static_inline void int_set(int a[], int i, int value) { a[i] = value; }
+static_inline int int_get(int a[], int i) { return a[i]; }
+static_inline void bool_set(uint8_t a[], int i, uint8_t value) { a[i] = value; }
+static_inline uint8_t bool_get(uint8_t a[], int i) { return a[i]; }
+
+/* Array initialization */
+void float_init_array(int size, float value, float *data);
+void int_init_array(int size, int value, int *data);
+void bool_init_array(int size, uint8_t value, uint8_t *data);
+void fix_init_array(int size, fix16_t value, fix16_t *data);
+
+/* Array copy */
+void float_copy_array(int size, float *dest, float *src);
+void int_copy_array(int size, int *dest, int *src);
+void bool_copy_array(int size, uint8_t *dest, uint8_t *src);
+void fix_copy_array(int size, fix16_t *dest, fix16_t *src);
+
+static_inline uint8_t bool_not(uint8_t x)
+{
+ return !x;
+}
+
+/* Tables */
+static_inline fix16_t *fix_wrap_array(const fix16_t x[]) { return (fix16_t *)x; };
+static_inline float *float_wrap_array(const float x[]) { return (float *)x; };
+
+/* Random numbers */
+float float_random();
+fix16_t fix_random();
+int irandom();
+
+/* Print values */
+void float_print(float value);
+void fix_print(fix16_t value);
+void int_print(int value);
+void string_print(char *value);
+void bool_print(uint8_t value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // VULTIN_H
diff --git a/vst2_bin/plugins/VultModules/LICENSE.txt b/vst2_bin/plugins/VultModules/LICENSE.txt
new file mode 100644
index 00000000..0b8a131c
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/LICENSE.txt
@@ -0,0 +1,12 @@
+Based on the VCVRack example provided by Andrew Belt
+
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3.- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+4.- Commercial use requires explicit permission of the author.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/README.md b/vst2_bin/plugins/VultModules/README.md
new file mode 100644
index 00000000..9ba83e27
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/README.md
@@ -0,0 +1,52 @@
+# Vult Modules for Rack
+
+A set of modules for [VCVRack](https://vcvrack.com) written in [Vult](http://modlfo.github.io/vult/). Read more about these modules here: http://modlfo.github.io/projects/vult-modules/
+
+I provide precompiled binaries for: [Linux, Mac and Windows](https://github.com/modlfo/VultModules/releases).
+
+
+
+
+
+
+
+
+
+
+*This repository builds against the latest released version of Rack (the latest tag). It may take a day or two for me to catch up when a new version of Rack is released. Let me know if I haven't fixed that.*
+
+## Donate
+
+I’m glad to publish these modules for free so anyone can use them. Behind every module there are many hours of work (and many litters of coffee). If you enjoy these modules you can support the development by making a donation. As a suggestion, you can send me the amount to buy 1 kg of roasted coffee beans in your country. That will make me very happy. Here's the link: [DONATE](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RRMY2QPYEZT2S)
+
+## Use
+
+Download from the [releases page](https://github.com/modlfo/VultModules/releases) the file corresponding to the VCVRack version you have. Place the `VultModules` directory in the plugins folder.
+
+
+## Build
+
+First you need to build the latest release version of [Rack](https://github.com/VCVRack/Rack) following the instructions in its [README](https://github.com/VCVRack/Rack/blob/master/README.md).
+
+Then clone this repository inside the `plugins` folder of Rack and use `make`.
+
+```
+$ cd plugins
+$ git clone https://github.com/modlfo/VultModules.git
+$ make
+```
+
+## Modify
+
+To change the DSP code you need to have Vult installed. Vult can be installed by downloading it from the [Releases](https://github.com/modlfo/vult/releases) page or installed with [npm](https://www.npmjs.com/package/vult).
+
+Once you have Vult installed you can regenerate the code with the following line:
+```
+$ vultc src/VultEngine.vult -ccode -o src/VultEngine
+```
+
+## License
+
+The license is a BSD 3-Clause with the addition that any commercial use requires explicit permission of the author. That applies for the source code.
+
+For the image resources (all SVG files), any use requires explicit permission of the author.
diff --git a/vst2_bin/plugins/VultModules/images/Debriatus-render.png b/vst2_bin/plugins/VultModules/images/Debriatus-render.png
new file mode 100644
index 00000000..aaa7fa09
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Debriatus-render.png differ
diff --git a/vst2_bin/plugins/VultModules/images/Lateralus-render.png b/vst2_bin/plugins/VultModules/images/Lateralus-render.png
new file mode 100644
index 00000000..5252d88e
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Lateralus-render.png differ
diff --git a/vst2_bin/plugins/VultModules/images/Rescomb-render.png b/vst2_bin/plugins/VultModules/images/Rescomb-render.png
new file mode 100644
index 00000000..ad92f676
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Rescomb-render.png differ
diff --git a/vst2_bin/plugins/VultModules/images/Splie-render.png b/vst2_bin/plugins/VultModules/images/Splie-render.png
new file mode 100644
index 00000000..adb0fb07
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Splie-render.png differ
diff --git a/vst2_bin/plugins/VultModules/images/Stabile-render.png b/vst2_bin/plugins/VultModules/images/Stabile-render.png
new file mode 100644
index 00000000..689d5ec7
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Stabile-render.png differ
diff --git a/vst2_bin/plugins/VultModules/images/Tangents-render.png b/vst2_bin/plugins/VultModules/images/Tangents-render.png
new file mode 100644
index 00000000..303e8a7a
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Tangents-render.png differ
diff --git a/vst2_bin/plugins/VultModules/images/Tohe-render.png b/vst2_bin/plugins/VultModules/images/Tohe-render.png
new file mode 100644
index 00000000..d3dcdd38
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Tohe-render.png differ
diff --git a/vst2_bin/plugins/VultModules/images/Trummor-render.png b/vst2_bin/plugins/VultModules/images/Trummor-render.png
new file mode 100644
index 00000000..753f6fc9
Binary files /dev/null and b/vst2_bin/plugins/VultModules/images/Trummor-render.png differ
diff --git a/vst2_bin/plugins/VultModules/res/Debriatus.svg b/vst2_bin/plugins/VultModules/res/Debriatus.svg
new file mode 100644
index 00000000..715f15c3
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Debriatus.svg
@@ -0,0 +1,297 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Jack.svg b/vst2_bin/plugins/VultModules/res/Jack.svg
new file mode 100644
index 00000000..ffccddcf
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Jack.svg
@@ -0,0 +1,15 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Knob.svg b/vst2_bin/plugins/VultModules/res/Knob.svg
new file mode 100644
index 00000000..e8d8b467
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Knob.svg
@@ -0,0 +1,18 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/KnobAlt.svg b/vst2_bin/plugins/VultModules/res/KnobAlt.svg
new file mode 100644
index 00000000..ebf6e5be
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/KnobAlt.svg
@@ -0,0 +1,20 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/KnobBig.svg b/vst2_bin/plugins/VultModules/res/KnobBig.svg
new file mode 100644
index 00000000..3bc343d4
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/KnobBig.svg
@@ -0,0 +1,18 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/KnobSmall.svg b/vst2_bin/plugins/VultModules/res/KnobSmall.svg
new file mode 100644
index 00000000..cab75f48
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/KnobSmall.svg
@@ -0,0 +1,15 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Attack.svg b/vst2_bin/plugins/VultModules/res/LCD-Attack.svg
new file mode 100644
index 00000000..0f422991
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Attack.svg
@@ -0,0 +1,61 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Bend.svg b/vst2_bin/plugins/VultModules/res/LCD-Bend.svg
new file mode 100644
index 00000000..59ea7fcb
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Bend.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Decimate.svg b/vst2_bin/plugins/VultModules/res/LCD-Decimate.svg
new file mode 100644
index 00000000..25f22b4a
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Decimate.svg
@@ -0,0 +1,65 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Drive.svg b/vst2_bin/plugins/VultModules/res/LCD-Drive.svg
new file mode 100644
index 00000000..dcb689df
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Drive.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Hold.svg b/vst2_bin/plugins/VultModules/res/LCD-Hold.svg
new file mode 100644
index 00000000..c3c813b9
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Hold.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Level.svg b/vst2_bin/plugins/VultModules/res/LCD-Level.svg
new file mode 100644
index 00000000..7438a44f
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Level.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Release.svg b/vst2_bin/plugins/VultModules/res/LCD-Release.svg
new file mode 100644
index 00000000..5e683946
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Release.svg
@@ -0,0 +1,63 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Source.svg b/vst2_bin/plugins/VultModules/res/LCD-Source.svg
new file mode 100644
index 00000000..6c77fc5a
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Source.svg
@@ -0,0 +1,61 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Speed.svg b/vst2_bin/plugins/VultModules/res/LCD-Speed.svg
new file mode 100644
index 00000000..986cf6c9
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Speed.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Tone.svg b/vst2_bin/plugins/VultModules/res/LCD-Tone.svg
new file mode 100644
index 00000000..a6ae9399
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Tone.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LCD-Tune.svg b/vst2_bin/plugins/VultModules/res/LCD-Tune.svg
new file mode 100644
index 00000000..65053a88
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LCD-Tune.svg
@@ -0,0 +1,57 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/LICENSE b/vst2_bin/plugins/VultModules/res/LICENSE
new file mode 100644
index 00000000..2c1397ff
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/LICENSE
@@ -0,0 +1,5 @@
+/*
+Copyright (c) 2017 Leonardo Laguna Ruiz (modlfo@gmail.com), All rights reserved.
+
+Theses image files included in this directory cannot be used without explicit permission of the author.
+*/
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Lateralus.svg b/vst2_bin/plugins/VultModules/res/Lateralus.svg
new file mode 100644
index 00000000..31b8a7c6
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Lateralus.svg
@@ -0,0 +1,213 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Rescomb.svg b/vst2_bin/plugins/VultModules/res/Rescomb.svg
new file mode 100644
index 00000000..81735d08
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Rescomb.svg
@@ -0,0 +1,223 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Screw.svg b/vst2_bin/plugins/VultModules/res/Screw.svg
new file mode 100644
index 00000000..ade19b95
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Screw.svg
@@ -0,0 +1,13 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Select2_A.svg b/vst2_bin/plugins/VultModules/res/Select2_A.svg
new file mode 100644
index 00000000..9e3284f6
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Select2_A.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Select2_B.svg b/vst2_bin/plugins/VultModules/res/Select2_B.svg
new file mode 100644
index 00000000..3be80cb5
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Select2_B.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Select3_A.svg b/vst2_bin/plugins/VultModules/res/Select3_A.svg
new file mode 100644
index 00000000..e653f34b
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Select3_A.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Select3_B.svg b/vst2_bin/plugins/VultModules/res/Select3_B.svg
new file mode 100644
index 00000000..11b7766e
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Select3_B.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Select3_C.svg b/vst2_bin/plugins/VultModules/res/Select3_C.svg
new file mode 100644
index 00000000..d7d9aeb1
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Select3_C.svg
@@ -0,0 +1,43 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Splie.svg b/vst2_bin/plugins/VultModules/res/Splie.svg
new file mode 100644
index 00000000..f00fb6ce
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Splie.svg
@@ -0,0 +1,131 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Stabile.svg b/vst2_bin/plugins/VultModules/res/Stabile.svg
new file mode 100644
index 00000000..98613fcc
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Stabile.svg
@@ -0,0 +1,273 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Tangents.svg b/vst2_bin/plugins/VultModules/res/Tangents.svg
new file mode 100644
index 00000000..6ea97dfc
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Tangents.svg
@@ -0,0 +1,217 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Tohe.svg b/vst2_bin/plugins/VultModules/res/Tohe.svg
new file mode 100644
index 00000000..afcb28be
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Tohe.svg
@@ -0,0 +1,132 @@
+
+
+
\ No newline at end of file
diff --git a/vst2_bin/plugins/VultModules/res/Trummor.svg b/vst2_bin/plugins/VultModules/res/Trummor.svg
new file mode 100644
index 00000000..a8b97a29
--- /dev/null
+++ b/vst2_bin/plugins/VultModules/res/Trummor.svg
@@ -0,0 +1,622 @@
+
+
+
\ No newline at end of file