From 7be0b04326ed40d8970361efb664fe7d24e03df7 Mon Sep 17 00:00:00 2001 From: bsp2 Date: Mon, 2 Jul 2018 19:12:27 +0200 Subject: [PATCH] add (free) VultModules --- .../community/repos/VultModules/LICENSE.txt | 12 + plugins/community/repos/VultModules/Makefile | 11 + plugins/community/repos/VultModules/README.md | 52 + .../VultModules/images/Debriatus-render.png | Bin 0 -> 27520 bytes .../VultModules/images/Lateralus-render.png | Bin 0 -> 20919 bytes .../VultModules/images/Rescomb-render.png | Bin 0 -> 22529 bytes .../repos/VultModules/images/Splie-render.png | Bin 0 -> 7939 bytes .../VultModules/images/Stabile-render.png | Bin 0 -> 24190 bytes .../VultModules/images/Tangents-render.png | Bin 0 -> 21288 bytes .../repos/VultModules/images/Tohe-render.png | Bin 0 -> 10340 bytes .../VultModules/images/Trummor-render.png | Bin 0 -> 47453 bytes .../community/repos/VultModules/make.objects | 13 + .../community/repos/VultModules/makefile.msvc | 7 + .../repos/VultModules/res/Debriatus.svg | 297 +++ .../community/repos/VultModules/res/Jack.svg | 15 + .../community/repos/VultModules/res/Knob.svg | 18 + .../repos/VultModules/res/KnobAlt.svg | 20 + .../repos/VultModules/res/KnobBig.svg | 18 + .../repos/VultModules/res/KnobSmall.svg | 15 + .../repos/VultModules/res/LCD-Attack.svg | 61 + .../repos/VultModules/res/LCD-Bend.svg | 57 + .../repos/VultModules/res/LCD-Decimate.svg | 65 + .../repos/VultModules/res/LCD-Drive.svg | 59 + .../repos/VultModules/res/LCD-Hold.svg | 57 + .../repos/VultModules/res/LCD-Level.svg | 59 + .../repos/VultModules/res/LCD-Release.svg | 63 + .../repos/VultModules/res/LCD-Source.svg | 61 + .../repos/VultModules/res/LCD-Speed.svg | 59 + .../repos/VultModules/res/LCD-Tone.svg | 57 + .../repos/VultModules/res/LCD-Tune.svg | 57 + .../community/repos/VultModules/res/LICENSE | 5 + .../repos/VultModules/res/Lateralus.svg | 213 ++ .../repos/VultModules/res/Rescomb.svg | 223 ++ .../community/repos/VultModules/res/Screw.svg | 13 + .../repos/VultModules/res/Select2_A.svg | 43 + .../repos/VultModules/res/Select2_B.svg | 43 + .../repos/VultModules/res/Select3_A.svg | 43 + .../repos/VultModules/res/Select3_B.svg | 43 + .../repos/VultModules/res/Select3_C.svg | 43 + .../community/repos/VultModules/res/Splie.svg | 131 ++ .../repos/VultModules/res/Stabile.svg | 273 +++ .../repos/VultModules/res/Tangents.svg | 217 ++ .../community/repos/VultModules/res/Tohe.svg | 132 ++ .../repos/VultModules/res/Trummor.svg | 622 ++++++ .../repos/VultModules/src/Debriatus.cpp | 132 ++ .../repos/VultModules/src/Lateralus.cpp | 119 ++ .../repos/VultModules/src/Rescomb.cpp | 122 ++ .../community/repos/VultModules/src/Splie.cpp | 101 + .../repos/VultModules/src/Stabile.cpp | 141 ++ .../repos/VultModules/src/Tangents.cpp | 120 ++ .../community/repos/VultModules/src/Tohe.cpp | 98 + .../repos/VultModules/src/Trummor.cpp | 250 +++ .../repos/VultModules/src/VultEngine.cpp | 1863 +++++++++++++++++ .../repos/VultModules/src/VultEngine.h | 847 ++++++++ .../repos/VultModules/src/VultModules.cpp | 42 + .../repos/VultModules/src/VultModules.hpp | 145 ++ .../repos/VultModules/src/vult-src/LICENSE | 10 + .../VultModules/src/vult-src/VultEngine.vult | 52 + .../repos/VultModules/src/vult-src/ahr.vult | 93 + .../VultModules/src/vult-src/debriatus.vult | 51 + .../VultModules/src/vult-src/decimate.vult | 25 + .../VultModules/src/vult-src/lateralus.vult | 129 ++ .../repos/VultModules/src/vult-src/noise.vult | 29 + .../VultModules/src/vult-src/rescomb.vult | 49 + .../VultModules/src/vult-src/stabile.vult | 93 + .../repos/VultModules/src/vult-src/swept.vult | 26 + .../VultModules/src/vult-src/tangents.vult | 121 ++ .../repos/VultModules/src/vult-src/tohe.vult | 43 + .../VultModules/src/vult-src/tricore.vult | 52 + .../VultModules/src/vult-src/trummor.vult | 96 + .../repos/VultModules/src/vult-src/util.vult | 130 ++ .../community/repos/VultModules/src/vultin.c | 263 +++ .../community/repos/VultModules/src/vultin.h | 235 +++ vst2_bin/plugins/VultModules/LICENSE.txt | 12 + vst2_bin/plugins/VultModules/README.md | 52 + .../VultModules/images/Debriatus-render.png | Bin 0 -> 27520 bytes .../VultModules/images/Lateralus-render.png | Bin 0 -> 20919 bytes .../VultModules/images/Rescomb-render.png | Bin 0 -> 22529 bytes .../VultModules/images/Splie-render.png | Bin 0 -> 7939 bytes .../VultModules/images/Stabile-render.png | Bin 0 -> 24190 bytes .../VultModules/images/Tangents-render.png | Bin 0 -> 21288 bytes .../VultModules/images/Tohe-render.png | Bin 0 -> 10340 bytes .../VultModules/images/Trummor-render.png | Bin 0 -> 47453 bytes .../plugins/VultModules/res/Debriatus.svg | 297 +++ vst2_bin/plugins/VultModules/res/Jack.svg | 15 + vst2_bin/plugins/VultModules/res/Knob.svg | 18 + vst2_bin/plugins/VultModules/res/KnobAlt.svg | 20 + vst2_bin/plugins/VultModules/res/KnobBig.svg | 18 + .../plugins/VultModules/res/KnobSmall.svg | 15 + .../plugins/VultModules/res/LCD-Attack.svg | 61 + vst2_bin/plugins/VultModules/res/LCD-Bend.svg | 57 + .../plugins/VultModules/res/LCD-Decimate.svg | 65 + .../plugins/VultModules/res/LCD-Drive.svg | 59 + vst2_bin/plugins/VultModules/res/LCD-Hold.svg | 57 + .../plugins/VultModules/res/LCD-Level.svg | 59 + .../plugins/VultModules/res/LCD-Release.svg | 63 + .../plugins/VultModules/res/LCD-Source.svg | 61 + .../plugins/VultModules/res/LCD-Speed.svg | 59 + vst2_bin/plugins/VultModules/res/LCD-Tone.svg | 57 + vst2_bin/plugins/VultModules/res/LCD-Tune.svg | 57 + vst2_bin/plugins/VultModules/res/LICENSE | 5 + .../plugins/VultModules/res/Lateralus.svg | 213 ++ vst2_bin/plugins/VultModules/res/Rescomb.svg | 223 ++ vst2_bin/plugins/VultModules/res/Screw.svg | 13 + .../plugins/VultModules/res/Select2_A.svg | 43 + .../plugins/VultModules/res/Select2_B.svg | 43 + .../plugins/VultModules/res/Select3_A.svg | 43 + .../plugins/VultModules/res/Select3_B.svg | 43 + .../plugins/VultModules/res/Select3_C.svg | 43 + vst2_bin/plugins/VultModules/res/Splie.svg | 131 ++ vst2_bin/plugins/VultModules/res/Stabile.svg | 273 +++ vst2_bin/plugins/VultModules/res/Tangents.svg | 217 ++ vst2_bin/plugins/VultModules/res/Tohe.svg | 132 ++ vst2_bin/plugins/VultModules/res/Trummor.svg | 622 ++++++ 114 files changed, 11800 insertions(+) create mode 100644 plugins/community/repos/VultModules/LICENSE.txt create mode 100644 plugins/community/repos/VultModules/Makefile create mode 100644 plugins/community/repos/VultModules/README.md create mode 100644 plugins/community/repos/VultModules/images/Debriatus-render.png create mode 100644 plugins/community/repos/VultModules/images/Lateralus-render.png create mode 100644 plugins/community/repos/VultModules/images/Rescomb-render.png create mode 100644 plugins/community/repos/VultModules/images/Splie-render.png create mode 100644 plugins/community/repos/VultModules/images/Stabile-render.png create mode 100644 plugins/community/repos/VultModules/images/Tangents-render.png create mode 100644 plugins/community/repos/VultModules/images/Tohe-render.png create mode 100644 plugins/community/repos/VultModules/images/Trummor-render.png create mode 100644 plugins/community/repos/VultModules/make.objects create mode 100644 plugins/community/repos/VultModules/makefile.msvc create mode 100644 plugins/community/repos/VultModules/res/Debriatus.svg create mode 100644 plugins/community/repos/VultModules/res/Jack.svg create mode 100644 plugins/community/repos/VultModules/res/Knob.svg create mode 100644 plugins/community/repos/VultModules/res/KnobAlt.svg create mode 100644 plugins/community/repos/VultModules/res/KnobBig.svg create mode 100644 plugins/community/repos/VultModules/res/KnobSmall.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Attack.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Bend.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Decimate.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Drive.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Hold.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Level.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Release.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Source.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Speed.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Tone.svg create mode 100644 plugins/community/repos/VultModules/res/LCD-Tune.svg create mode 100644 plugins/community/repos/VultModules/res/LICENSE create mode 100644 plugins/community/repos/VultModules/res/Lateralus.svg create mode 100644 plugins/community/repos/VultModules/res/Rescomb.svg create mode 100644 plugins/community/repos/VultModules/res/Screw.svg create mode 100644 plugins/community/repos/VultModules/res/Select2_A.svg create mode 100644 plugins/community/repos/VultModules/res/Select2_B.svg create mode 100644 plugins/community/repos/VultModules/res/Select3_A.svg create mode 100644 plugins/community/repos/VultModules/res/Select3_B.svg create mode 100644 plugins/community/repos/VultModules/res/Select3_C.svg create mode 100644 plugins/community/repos/VultModules/res/Splie.svg create mode 100644 plugins/community/repos/VultModules/res/Stabile.svg create mode 100644 plugins/community/repos/VultModules/res/Tangents.svg create mode 100644 plugins/community/repos/VultModules/res/Tohe.svg create mode 100644 plugins/community/repos/VultModules/res/Trummor.svg create mode 100644 plugins/community/repos/VultModules/src/Debriatus.cpp create mode 100644 plugins/community/repos/VultModules/src/Lateralus.cpp create mode 100644 plugins/community/repos/VultModules/src/Rescomb.cpp create mode 100644 plugins/community/repos/VultModules/src/Splie.cpp create mode 100644 plugins/community/repos/VultModules/src/Stabile.cpp create mode 100644 plugins/community/repos/VultModules/src/Tangents.cpp create mode 100644 plugins/community/repos/VultModules/src/Tohe.cpp create mode 100644 plugins/community/repos/VultModules/src/Trummor.cpp create mode 100644 plugins/community/repos/VultModules/src/VultEngine.cpp create mode 100644 plugins/community/repos/VultModules/src/VultEngine.h create mode 100644 plugins/community/repos/VultModules/src/VultModules.cpp create mode 100644 plugins/community/repos/VultModules/src/VultModules.hpp create mode 100644 plugins/community/repos/VultModules/src/vult-src/LICENSE create mode 100644 plugins/community/repos/VultModules/src/vult-src/VultEngine.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/ahr.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/debriatus.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/decimate.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/lateralus.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/noise.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/rescomb.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/stabile.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/swept.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/tangents.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/tohe.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/tricore.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/trummor.vult create mode 100644 plugins/community/repos/VultModules/src/vult-src/util.vult create mode 100644 plugins/community/repos/VultModules/src/vultin.c create mode 100644 plugins/community/repos/VultModules/src/vultin.h create mode 100644 vst2_bin/plugins/VultModules/LICENSE.txt create mode 100644 vst2_bin/plugins/VultModules/README.md create mode 100644 vst2_bin/plugins/VultModules/images/Debriatus-render.png create mode 100644 vst2_bin/plugins/VultModules/images/Lateralus-render.png create mode 100644 vst2_bin/plugins/VultModules/images/Rescomb-render.png create mode 100644 vst2_bin/plugins/VultModules/images/Splie-render.png create mode 100644 vst2_bin/plugins/VultModules/images/Stabile-render.png create mode 100644 vst2_bin/plugins/VultModules/images/Tangents-render.png create mode 100644 vst2_bin/plugins/VultModules/images/Tohe-render.png create mode 100644 vst2_bin/plugins/VultModules/images/Trummor-render.png create mode 100644 vst2_bin/plugins/VultModules/res/Debriatus.svg create mode 100644 vst2_bin/plugins/VultModules/res/Jack.svg create mode 100644 vst2_bin/plugins/VultModules/res/Knob.svg create mode 100644 vst2_bin/plugins/VultModules/res/KnobAlt.svg create mode 100644 vst2_bin/plugins/VultModules/res/KnobBig.svg create mode 100644 vst2_bin/plugins/VultModules/res/KnobSmall.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Attack.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Bend.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Decimate.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Drive.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Hold.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Level.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Release.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Source.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Speed.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Tone.svg create mode 100644 vst2_bin/plugins/VultModules/res/LCD-Tune.svg create mode 100644 vst2_bin/plugins/VultModules/res/LICENSE create mode 100644 vst2_bin/plugins/VultModules/res/Lateralus.svg create mode 100644 vst2_bin/plugins/VultModules/res/Rescomb.svg create mode 100644 vst2_bin/plugins/VultModules/res/Screw.svg create mode 100644 vst2_bin/plugins/VultModules/res/Select2_A.svg create mode 100644 vst2_bin/plugins/VultModules/res/Select2_B.svg create mode 100644 vst2_bin/plugins/VultModules/res/Select3_A.svg create mode 100644 vst2_bin/plugins/VultModules/res/Select3_B.svg create mode 100644 vst2_bin/plugins/VultModules/res/Select3_C.svg create mode 100644 vst2_bin/plugins/VultModules/res/Splie.svg create mode 100644 vst2_bin/plugins/VultModules/res/Stabile.svg create mode 100644 vst2_bin/plugins/VultModules/res/Tangents.svg create mode 100644 vst2_bin/plugins/VultModules/res/Tohe.svg create mode 100644 vst2_bin/plugins/VultModules/res/Trummor.svg 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). + +![Rescomb](/images/Rescomb-render.png?raw=true "Rescomb") +![Stabile](/images/Stabile-render.png?raw=true "Stabile") +![Lateralus](/images/Lateralus-render.png?raw=true "Lateralus") +![Debriatus](/images/Debriatus-render.png?raw=true "Debriatus") +![Splie](/images/Splie-render.png?raw=true "Splie") +![Tohe](/images/Tohe-render.png?raw=true "Tohe") +![Trummor](/images/Trummor-render.png?raw=true "Trummor") +![Tangents](/images/Tangents-render.png?raw=true "Tangents") + +*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 0000000000000000000000000000000000000000..aaa7fa093dfeda5ebecbbd679acdfa031b1dbdf9 GIT binary patch literal 27520 zcmZsDcRZEv8^7H#;vgg0WUuU%agvptkYtmUy)wf=*&};}gk*)R>?Fy`3Rxk9?7e=M z&u{+mJFoBe^~pM(=YH<{y58&ZQcFYWDgg}v1_s7e6=ek-_-`@>2BseZ3;vbYGqMOD z+_2R(a5qp_leBPp%4cTjWNyXh{nQ!0j)5U9>+Ni2VQ=NmXm0hy*6}v;Mq>*zqpjs_ zW_=NL0d?m)RyMZEKCV{xeKd3}eC#bGESY6x2&BCw;SHWzxtlS1KXq_)lk~pL{NMXZ z!oM#+&CksE-?zBi-)1&Y*J8ZmS( z$FMJ2D+cQUZGjCo;H*UCI`JQIxP9E;JnVI=7e+mEp`Ymv|{Qu{A;e-Ek$5xJTo33y_G^!hCeH&sT8Tu zTL3)adIh&)aeGakhrK;=Tub+8yHNez$Payu;3^ zT*g)Pg+Ma$O}EyoX)Yd>y*HmwH>#O`1Xe{sGT)P)q1$6&j~f#tM4>8dHJCo|KoFi?2FwbI9%y zVe-3?k9zm+u5#PqmUQC2t9#D)8N+PGob1B}Q;!;3kLCW}^bA9P_=zz)Q`kZuM!DaG z>c3xUZX5ppB$g!lpJi`Q4cQ1UvpHH;l0asH0(vG*Zad}FodF8kRTjKc8klS24Zc2|w&B10OZZwJ8 zC$#F*~LZ$LCavUZk z0*Nv%uPrI*v97`oMd5|yYH@^xhx1bQC^)UNV@@#qsr!}o;sqk7|4G$2E7{9V^Xs&< z?vh#3^!*N^zD>sUMtzH}Pen5fc!)_zT2>~au1+wpSxA?Lg@yS@)1#3Yy?P}h4x*Ee zwIsyEK265)%B(3pbHcTgbTl-QX_F_M&-cS6_{bv^n9Iiq1BKFLseMCHOh>h2s}zx) z^PduPcx(bw=LK^|>9w7RyMDO@!>fC0Z1*{?H5ioz1!0P2(2j z9Lx(?Q~KB|f%D>yHHK}RN(gv%uy=Njil*zeI2Lw}5V>=6W-k&py`|%o7rf#_LPB77 z@lf`xduH@ni&Illh9N&pu2-aX2&fh7Ms%8&kJ$^Rsj&^c$>~*azN*F%ul!acOZ9f% z*y`%vzq3JH*CG}cEVo%`yGZCHSt%o7n|FuM#}?-1V&Y{M6&3ybX|T-_%$S~@J~25- zilT{T6BPVmSCcL75-iPh`!?Nl*y!l!pFh@UEdv7sJG*x?cj<5Y2y=3(Fvn99g?;;` zDxR8@6l!L0|Ni|)k8XsS4ZT&*|I$hW+elK9?ZAO8*rk*Z8z-X|?~EVLpqN-n+hJR$ z0S{%>xY|C(^FbSTaaspaDL%d!AKEULkha+^ZvmovYHGCOB^b={FV=dwk_b8k&~aV! zw=#N(!$T(c#(T=qU%x6>%(S+)7TimrC06qCIyl_OQZx!NR?f@IYoBwr5l%;=adNe& z85l^Wu$+%~ZE3sCntx18e4BIr@Zkdv7G_8rqvobhQ&LirV4A~3wJn0F(!im{Q0Zfl zPB9Wi9~<6l4Rs(*O;kX@RDhZYFGRIKRZ~+5ktG|LO&igLAu%yFHa6)X`nMD3`q&35 zW;7z$#@_x0J-s4=^BTclB{It2Jq?wtpl%-rn9 zB=_|2kdM^X)+TRu75tc%l9G~^rqb8d)+Hj!gpokf+QXQuQw%rsO7-TRskgVdL!4{9 z(IIxLb=8yJblgO9FRxk?QEWyYo~VvF#>@BL^SOAp_WAt1m`%Z|uvXgK~^X;E5QDw6|sO{?jh z>2I2hxNb`}Hnw2=v%H3<|Gffa+BY|y_4TRhHUb*$d3kvexkW`Bu4AtVh{Lfvcrtpk z1+55Hc4KZO2ZvzaBSa&Qsszv<40sB3Y-=YoGBQq%k7s?#hOMw8>{t4}r``&o?Sevh zCcT}P$BahC%r7o3F0{c87tOeOhvWMbR@lWX%*>z7U97GDbSJWBX|V4N!FKU(&dSOf zh{nMR(kUjw#}E4Y^=r@S>gxSsU0UM8ii!cp+Hf?Q5iLzm@=30;veK}0)V#88$}vq1 zZ)_(&z=6@3*O%#M|LUHnyL;ws-_ecp`V{%waMoG_pbPNFX(AQW)vwAU2l`KwIR+-- z3gOLf{P&u(bRSozd)eG9L;Xd9Hb$4rN`M+l`^S&TY8i|O6rAiuSE3GD;;x#Bf_gkm zQOd}>KFr4DV{^`0(Oq-SMbmWhNXp32V~SwLUyfqeasO<2(-L3NxPyScz?S&(vKTms zLTQ*6CmvToFx5_~uV=x@flebx2FEV&n|Y;Hxe~`UC>6xvP}|hl$bZH<7&6B@*BdDZ z)ayk?WZe33gMMt9rRk;0@3;6)-lrx4bKld1Ong=fOh4ASE~>ux@|fhX#k4&x4%s69 zD+x(S={fe;>*%R(v*>zk&g$0Z}vu06a&c=>g82IXVr29;Q%w0fn6xb;>>d}93kPIK*{TuI*?Yh}+5 z=exVR#bau#tKYnRyT89r6RpUX@<>ZdOGoFoYyI)b2`Q>}$}>Z?AR;m{L+DA&pbf2v z;XVG~K|&}K?V*G35?^E&_iM#!QqAck&E!{Z9m(p{ChUWPAIN)S*2F1MiEr~ln zKc5uEtzRab(K|j4IO@dV@#CqcgXu>)I;gYplZ}=@_%6HJJaNIGMQ!=*yIdj*f0Q-zyK?ugYOUZ*Omp zzJGY%z(Cx0e{G~h|H|AJUI&^ovY@6$gqzzQs$@+~&GqZo;nJ!2j2ID6ny~hp#~nNs z6cp~>4ehq%;^cf88QCH59%@2e-A@P6t}kCCvo!wd351yeD}a+4PQt*)%^ecr?5d^~ z)w39!sLpoZ(sBV7@9*j=Da!OY^ph7|KGNBRIRQQ!(@iYp4-0f|vatp14k~rUGVpVA z3#F-bbaViy*p$KuMa3s4@53U|N_noqE~&Ea4W94q?d5OU{gHboJed5DSm*gVENg#X zA2B}uv-O%W*o_jjU2|<`$73yUXrAHJrKi(WVAj&0z2)Nk1lA2!HBei7usmRod%JNnylbAx%ZC)@AbNxH zWI-Z;Df`wR*}o0+!Pvu$a&n}sUT^dAP=!Mto}TTD$q5OrTfgtZ!Vay#VRXPm?caI$ zFwKA``?jwrTCwNbH)a-=#KgoSKN%5%pm}dAtHsjV=?3fG^qcpRTiZIqNqQEyzkgSg z$zfn%h($Kc$4D9R>04N^$Rnx4JUl!|akOFIE@4tfE9Ufj&G;XjZN&!SRC#!LiHV7o z8`Xb!{dzX}k)u2Ut_Etg4xM)XpuwX@jow?oKYjYNGE~R_4Zc;=#T}<3OCE9c>ea2I zQx>Hd=z@(?#?az`g(d~IP%EPVT4V(4$vP*4;AGE=m8^eDryR6|pf0nST* z;JJ{1z^t=)Lqo&w`FSZx$u-Z$PV;*2EoRi$`7L)ZFSq(%nleY9SKI-Z>>nI30Ely} zePV6hF!c{kTTBcwUI-~YeE=+Rkerr@iIXsmW~TVumUluzg6GDx|LLI%8X4Qw=)R(( zq;w^`<5rrQJR)FRr&{8@3USq~uMP@oz98s~xeUqo?<*H!`m@fZ{ApTcA^{%f-a5 zT|SnQoE&hnUYq~N-h{;9gXK#jK9aZiA#_=70z5)OZi9Ju7l^f;ocMPuzI;(k>|W3} z1@I52WN2te2*BLXP}{Ud;m&MZi0{F_P~HZ6V&ZV2Cw-Z3-mumf(os-^nxz_-Z~XlW z^@N9)_v&u4nU;Ey76-lWT4i;$FgmVhQPO*JR&2&kC?K1hEio-VzS3qe4>lk=u77E= z#(r!mCotft1WhvE;|B9i0=$r0!otIolQ*tk?_S!05(ss|Qt*0WH@vz3QkEB1N**;U zxjD6-uI}z;2g%NnUu5U@h`tG(xU*?{h?$??>F>@+LIMILN?l$3QLSSrK@uYi3yVcZ z*j1=+P(d!2B3EzwXeoz;kkA(@!(8TKPYSTik zVRHZTJ*{@y$3CjEbH%+~k0G|}M&oa87MA(SE_&>USU4mpzYebw>*(lY2c94O`ST~m zBp{6k=ZRn%j{I}kKaIcE#cBJF_g0^LPp$Mn*@yoP2HeD)arnLEogw=4+qZA7l39}< zpH4y}DsrdA3Sv~_3qQq+SN=TbyyhvD(xH7<@wd3l-+f!aT5!}+xi4a4`+Iw93`^l2 zF`KB!1k=_QQ%oFfY<^bTCJwDERE&3Xa^lFtZr_+{JowkR5wKcXo0p$I|ND2CI$Ld* z+waf#xmtDRoe>igh7(zTThrlgpZ==5b@Qf`v$OO3muT2<0qie2&7&0)(-W8pua*{< z))??WyPome>7A&t=jP@%+quoneXno?_G#_px_;p5mbXThq*bNC2OtR_J_K7pjjHij z)eG;~+8xpaeBpN$3ZH3)gxenjp5)8+>nuqQY*vH)+RN|ORVIZFj*ejp#qZzq0Bb1SC&r=o+id&%`EwUTARPTi zrF!sbk2m*JRRO-eNy3l_?=*+E~; zk*>*>Kv~psZaBTqX4{p?$;o0B)oK=g{>#dz6)NGx57bkueCV5rRg(z zzwoi#yot-Su;rbp@gy)%_Pt!I)$+f8f1Jey)1nv=e;-|JbunmWNj}IQd~e+31KT{P zuBP!{Lyx84-v0gvgZJ@GSIeAr$v>p3QARHA`2c2L>d(>4x2K6SuCwl?Db_W7^yp-7 z%%p>~WW=t<5L$k@v1ScJPQRwI@{8!`PJ!=>t`AG~KFm@!1KJWGx?eJakB_e#fKxkJ zI<^YB!JM%8@}5tvIu`=MYPX;nb)AQoF6=(Xd?Qv zn;{@5_yIuu>R$8KmmAJPt-E5|msL4haX#g{1Q#tawCk7A(GN;SSY-EnnilK_$H(jK z$N10#+lxKyzU=v!9RhWnGC5Amt2dstbC-YG{^iymEj>LpcBSJaNpS){B!HaHuo}@( zk*^fH|G2p$zVUAB;O9lx@^4L^;YEU>&5t#q1^3GawcPk%SG!sdR(0^ZkV zRrP%j;1_)YinOq>0UJ$=gxBL}(2Mrh#u2&vEvE_6%5)f*Dk>_By6!bC8+$%XPD2~w zHTdBjF0-we=mDsX<@*O+*xo^G6)1+9F%5d*3}?V{4x%S(<5jwqG>as*S-*e(h9-qJ zQT*z0FmDR7%5YgdTub?w6d=@DzBinis8+S#2Wz;a0@VZG*eb(EjuUAfYqBO7Z*U0-mQO6F`AC=|gYss3I7 z$29_up93rI6%hr5?tEN_e$5(%9WJyVeqq|xG`u9^!zUpry!mOtvoT3^v9%TB)V|U% zF)_i1BT?(YgORA~LV`jT z8Fdren<}ce1qHXLqu#z{`=RV0`iLzt{)B99ZjL&_3Shu{AU3~1STg?l?# zTeGb%*0F13DyymjvkW|1H5swniyb8*#0@s6IVQ;v6B8Exo+(jPS{gmwbVt&cN%u_m z!Gm}uVBTS7Z}2axiRwpKPj5#uRu@M1Cm#)9mvUWuoYLXi)YNo#b_PNekj7SldzT9` zv;hzi4mu+D{QNvMHMMg7*)2N{w|kNOOTJs3RIr2Z`EJJc8B^2K#~|}$`0pB|cFaA$ z3);!NrQhjn2#L($Y{*t-_o8cV^7r{ISbHuyHhE+P-od<1ru27fp`Rp7ID3m0pLbx1 zjmz1W&Y=hYC}WX(!jD!b;S!ECGneo&^x@kN3#;QVN5-eJ(OmODvx`Ni$qw<8z~ z3BUeOrZH{Uj14@+{#{EQMkncR)1Q62Re|jq;*CzRG!N08qL!8!OTqCq&jibV)4m&_ z30>^j-k1FckZ9hj&$2L+G!Ivgcx)GoJ{26NeO4;ku5LLieJ?LHHKM)y-f5?5Urhy0 z?Yz41Uvx2FiWA+qGH8ClkSRTT$9`wn*k>uXdCvM5E3DzH7`jI(^#0L)jesn+gPq zwQRNZcBfM3x;`n2(GPW&^5x?xO{iyMV?$Btb6(qBW%i5v3;~C87zG(WuqNoa<&m?` z60oUa=0$317Vt5@wdbEZJbg^(@jfgoh*6*=iUCN_7K>_@^zz#E&5GGJrb}(WL+ffV zzRDgF18HEa&qjoUWrLF47&osx-0IMv2MVwG{rPcB>{@8zubXu;gzm6RZ@Lm4b4_YN z8QSkDNR@`Zne&}^kFz7`@F{02@ym_BxB8xAcem3E57?p*(FvdTSo~!t3WMThl|{J{ zyJ5v2^Xc2$bMN77a|RFLhUVntjAO;RMQE2E3TQea zBCjV7_Npd(OwVEhCgY3!kptXyf86gon5B5?OuYRo3x6HDzUG@fnBY&*c~y z=VgfSEP!e1ZoKSY>QB9e&7=^Kjf+JcW@TylEAZkB6vP`M=B<{3g_=157iR}gEG=;y zgWpJGOqvS(0`O;7a|~4~;%UPUakO3u#rAhU8HV~*VF%GCZwd)RQ3xIhT4F7u^i&EnCiy>liyArf zH*Wam<^|K{J>(fB*OYEs+5zS@C3mg#W#?~T9^+L{5>e?sP4p31nHucMBobK~k)7tk zG(op9nv;@~*^*SR;&phx8vjCaY|j;?IG-uu26E~CzbQiF%&}FEdLz#6ZW-DuR5Rw4 zphvz`aILw|0w|V-hIzgWz64?;mAze&Hn%eC#@d=6tlCOr=|$)6%1|*`I)FByEkA<+ z^6?whY3b`f5ugTjT9*q{b-j`#wLvY8YckM|U)UwQo+4VL?Muqah~t#24NLK+ z&CzkjWCS-s9yG&l%Y=8Sj~_oCz7@EQP`0}N^y&In zg6W{3Agy9yQPGbDH55LDlk4=<)TUMAj9sn;SN-84%`2blrqKpd6McbZx9;hC^QOvk z1x-!OS%qd5a>=YdP^xLWVreDv79K;9!PoQ62DP} zVQIiN23RZ2&Gdq*uS>RoaOaRTV>l;|j*XopEff|MjIZsxE%lppydHyw6_t}eK>})U z>-TCWtvCdiEq=`WgOQO+I}xa9k*_6bW48K{Pz>8lb)!cwg7K+s1FG)0%_OCa<#;D8fgp;fDQC7**iLB6VY{uW42u6KWlPs zziN$|t@WM_y3)G7f8+dF!w%Ikh@q`439;n9$C&UiC(PGJ(^do^5Sy-4Js` z*D!{ep>hZ2oM**B^j#2qsHUdot$>r#k^9g3&`*W~)i^vN0@U1H@;VWoNCX~8y%!r7 zXRw4x<;VRmZ-*dLneBSFAam3iq0KZ3hZbGoyi^=3 zOQ@37&IFtkk#O+vtbtlX_aH2o@;SbRx%n4Srn>SVA*M6>6;P85c=YV;S7Ycv7@?9! zg35y{LXXU9A%jEgJ$JjQ3Hl)TDxw)rrAaeyMGRnR=P081QiQ09O7#fwtMi$qrHu-Q z0A6TQgxO-AvEg)&Bqvk;rNt=OnC%I>;!Y2|Z*XvsI*fvnGRCeGl*`~?ETRsm*4XTR znip~e`4M_01(G~*xHn!edb+s@Jz&ftXlcE=4pRK{)7QYCgvG?XJUrTtHThDMl$1IY zGZdI}X;Sxj36JxIJR8qGPC6#`EP}`h$Ej;;ZEfuegI`>)HG{Y_>>g$~GdFME48WoO z4`BeWjojxoN$kcsCEhGI;(JnQfD8m3?jBG}5N9GIL(KF_^{^8$GL7{0z5e}@@NwJ5 zZg2bOF#ZALQf4%4dQjr7wu74TB>P#|KH9N$xcI&pY@%Z&L@pdhedA|0oh`NChVS0J z8y_FPSw6HvOHExd?oe?~P7sR9)#6J@oG&yk2Qjx$tQrsT0{<3K2GE{MvPCEo%&2E4mNXn7B zVWc5%5dpqLs^m6hE*)d0^km(#Pz1pG^;9~iUte3><#>1H`Skf--Z+lAXF&S47}8Sk zA(SK(3hN;*#){@{@rWzP@BcaP3lFmu>eBd3Xn=mnkUBpuq-gce7(lmTFMLn`klJ_+Gh?t`e=x zngHSoark{Bqczw1OVy#g`S@=^iZKl>Et+ba1Q-GUknv{!MpSOy53Wrg3}r67s!n@r z6lmi#cyVGxC1PKF8S-(Er@?Yhtfvj?tR*QxpA7_QmlUO1Ajr+V+RdKB!_VK}-3`e5 z$~$GW76`S5hBWUBz#Wm7Z=3R(0X44d$a=#g)Smy)ZFwLUT#-;hD$qZe(eTg?*2b}o zf_DD&!c9z{gPc$N(#(@n>{wy(6SGWZp7;HP=e?D?jAD|0Zl7PktG$1 zU|ge+Mj`BCbLu|_Nf{VMEv);Z|2qr7zuKOWD&QC~GqqV~+kS&yOx?TV|H^LmEqpj= zG+IGP=^kqWcnougScRf=7SX+{)GEdR$@J_Oy0Nv25lxz2>7wlLG^B;|_Qf*2v(iKs8B7 zVk06z#DNzI0c*HEUbO^A0Q1{iDiMeTpjJTNYf6x@VEK8^7Yt@NInd7U@HE2rg17}j zWp1t+(Z}(Dfq~uKT@U~>Gie!dK+!%qUM+6{Hoj{1ytlvKq}lJ8fdRG1(61GDkVBG_ zlA?1m+{_W#a9kSqMjws6f7r3;iXRLn!gneYKbIO267ce26M#e*{3##KC&*bkrJrr*$I3M5XmEmCRcXL8nxw;bo#+c7g^k7ynF5`aE$>VI;naM@c1XSenpb2* z#IDa7JbqPICRz9j*-IQzGbAcEH&^rao-RmcfF!>}-@v}rfM;~~8q=E*yNlgI+0L%6 z$@P6WcRTa3vdusAuw&*yZ(nr9?4>Mnj+VaqxwiS_Un4NIQoW3%q=FH<{!9t-@8d3e ze@EPw`uul#FMm`$vHP>7An2g|OH~FupzMRFN%rzHaH92nc*bQ74L;xnt*oqoD){zH z70VG-s@M2z$GXzM=>Gkkc0&HBbOIi-m*(c?s5^J$$)3V_1Y;JCAzuo&1g8pHim!Bb zJP)aHIqdW*Iy$ z4Qd)1OIFR*qx+Y*d3b&`c&q~6gU6Vjk>R^{jI0!Amy%**3+tFm?X_;HENW~#0hbB1 zyZ@ZY{e|wtAWvLqdfEQ_x-R)}9TU|hO%Q^x&YTF67YS9&gyBvdYL)2l` zwH~Cw_g(W~q6RGLgK-AT*77dxEBpE>M@ZC6Or(Q1os*;K)MWG;%YlcI@S7;G&qk{r z%D?In3Si))vh*gWM?ZSaG*`*KzlEWVQ$BXDx6`w63aImBqZ7E*8G0qWd|cc2USFz> z3>Sw=16Ia$&SuXY2_73C(MfwF&*E-peNL)gpIrcT%ph0GXyZ8aIXoRm27t*pfMx}7 z;ri6i50r-`-~CLfz-(2U&N*jDdH{db^7-=lbCE9BUkkyEUeK~G)^_?^%HI!v={iwi z1JeX6^a#v6r6h?rxbRYA+W|dK4iRmKPurzr#YB>%N{Ry5=h^7r89^aztRttE`s!6R z*bTvq#(`%Z%1N6?e&Buol#ivoJuy11v44*(@%oJ$8LwWw8Cns4g?h@C*gfZ5ZTJ+< z7D)1GqjN-^|LZEaoZjUWPXS`5GrECG<-_EyI@0hZAC{8h18zu5$;n7*h>|o;^_f?~Eh+ZNy|zIFO3}s~ zO#6~BRXfk2CZ4?^Eoe;)GRrS>yp*S@jJ?ekTwZ705kn)_5^ml@qE7bLSr}Hoa#Oxk z0Bhc{)?@?=qsygns%*rr*aOXyAs%?{r>~!4#K+IWllk>(6#fVIXIKfZXFW_dP!*C{ ze7wB9bIz^lRI{~?5Ztn>@oDc2^lZG%#`dM0Uk7Y>tY6WckyJy*6ze-juWe-w54JFx znXeJ7)G+t5@o;j=BVbd-RU;!i3G(A^n^NPQISH2jT=(QM5k@KVC2Cjg23-S^VP7-R zEi6n1+Y}pX2_GTas&D;0bx>_^Aye8$lS>fOzN4^#8Gv3|5@Hn|XEbbir z=GgLy?Q+{+dx%D^qbhO&&m|xkA>sDcu(Yqg=f(vUAt3?8dbpBQlT>eN)eYcE-gYX` zxlT%IRy$eTfW?*c7j+l+wAWIw)BF~%gQa*3WUV-gJT$)J-fs#^KOPXF|52Q;=z z?^mN)g3PnAsib6eP>BJ4J>X&D!m8ifQ_(^1i|=oock(ABCIa0WT6tewoV%5kVuuQ)}Y4RVX3R zw)K42&)G(ql19~v02(*^fv5~0}3Mwk4GhsPYMWg3B^GpR8qX0BR zdlo^6#0zPg-(qEALUe%R@X27|(aBiLIR$eqm|p8pme(q~mK(BL?T#S!^NtY_{WSj2 zgf#J=BXze*lrHIAL|aw1+?_a56!J5)-&~p-T`ma&SZa$9Sl}!1Gox0d^8mZEREqAK=L&M(4M*sCWVOjXV#(+dvX< zPcDB@IntVj0{ExXP)zzVUUN|nat%H6rrS^K_3I&YTq^GGP@B*6iSQ2oJfPVJ+@~Ao zSR-RWpMnHy%uhr@-spKIfh4Ly3(4e193gQeO=PxvgAoEL&2Ss+LsezCy-pv;{=@`%BovkP6EqPUT9n zgY*apFV1@q2C6q|w(L%Tlw86}+-8g+52fp9xLY#M!`~@_Dl9gAfByab+pzv|655`X z)y=~Q@faZi9v}`tZ7RM9Wc0$3v(P0!=Rl*(?%gAF2hm2h@Xf*xD?6XocMnRyoo@jQ z2RmBxI9m}jwhN$4rj!?7ktPzyOn@4IDe#1o|6X98UAb}vJSiH3qFBf{`ZQ(l2P>zm zgRS#lv6O$J6x=Nt zL5T-uwh#rY0|0%)BI)*pC|=q9cX)vSWRB*Xhet>8lqv5N=*0W>K&%T0djz*ejtn?g zD&|X&(AC;2D=qE){vADR34z4x*HwD$Ql*#qBV8o309su7d3%)&Q;t=g37MG=UgEQK zU?75{03iTYvgkr7xVXY0m6#kvE`TgZ>=9B>1n}=c^brCsiVp+}aCMn}j*jYO^o~wW z`fkq3w+O^RiF9;K?pcJhwCLJq&DEf-tDtnVK!7G1B7NfzAF|%Xl1GC71CkuL+h6v- z=8z$9w0=$jeStjS`FkzKuibrc(d##ObB3&|qJ1)rA?pA+VF*}|vui|2c06mEhJVx< zm9@3C;j{9_kjqEM&(|FN^QdZMrQ z0JlxU0;ByHuEs*k0c11Co`S>yn+;$c) zmR5z|(KaaG)H!e}p8*HxuHMdnE_FOeO7`||tI8P8XEZ4I&bHY7mr1HXFoNUK7#Jb45#9j^ zsi>Zf1=CHsX+%wTzzIdv(HbBglOr2AZC7J$WyP8F4OEstFWIvh6V(-%<0sd{aB{)K zh3k80!;#W8?^5qv>sWikQsGK?7^tkh)>ZvW76Q~PId=^WCyJ7qAU^iKsEE2n>tF<{ zT6@9u=qKB!Ewm}XvDN@E251*v!GQq)C10vH^K9udl@Kx{K*W;hZdN15rXF|KXgG&% zo|pc?7#0(7tDWs_EW36fFK^zw`S|hUt!?GRgajnY;+~s2-Y!4aYy?<+ntyO69X>*{ zj5=LbnoB7<%BRlf@pbTQR)Ky8G39!r?Brz60yiLn9qsMlDHnSwOD&5rMNtQgmu)&d z$4k^Md5Q^pI>?5!)l@)^&I2kG$dds=KvN<6atxS}6a^wA=C?M5AZleMpI1pqH?I+> zXwtkBS-Hv+51OU|Xf^*&=Q2cq2a0Kro*TLrP=@5`lNU>+6tUvc!q}e6+LF zZSF!d2#Fa1f!DfRW@Bm`*8ntR^eQ41Ag8YT-wR}bj9!4CV9r`f)DuR~( zu`rRnBp@JwoDy-s{-_b3s-dchKWX5-3aW{R7c3cwV?nq!LAJ-@kr69LhP@g$&`- ziE5}0AclYt2;Qn&TQIJ8%-HBCs9Ys}G8aI&!ECzBkUV}&m)PyMH=+;GvYnkB2(80) z0!9Q!%E!kCQg1Z@XU7nF8+ueGW(Lu+ckj4}I^Zkdjoc8fnV4PIHKpGFX%P!n6R0Mn zuLc;c_QAlI0#Xf`45gc-%IfM?f@u&D1Ysp=#7Rn|r;{6=K@2-QCZ?9=_PGZD})SVA_Qc2Sn&#&$6Jw-4}xO1l|7ZH&qKY zEvC7euUR-IEkedDZQ(On3#~hCi4+ozHBBCfG-}ddKAVoN+kh1{< zQ*ZR|NshnX!-wNPevsk3OMjgXB>36RpDCz{$Ppo$Xjt>Z^OFro7zVte4DOmQc=Kjq zaS`zPody&54G@gw*E!iTWMXAqSSifGYrFPU0}8QmIo0nyc%%>tQJwt}uPva?k=PB& z+!cjuP)d4;K6Y zPVXdO=%Nd5xM%)cSNI`hHm-g7RCV9R#MXTsKj2@=rvV1MLD zdi+(L>RZ~WH{uIs^p>8cmI?+-XXM?3OVtHc1P?S?Y#QNO$`spml5=syAd}PLd*J9= zmCpDAAnTU*Cy;I8A7yuTc9O`R0^kb(aTlwyk&K8OvV6M`mX$|5(AE8P^e01~nGl+v zcua;G+Xth^%<+d5az{)6@8GtQR0|;94Kgt%U3n4sV~;*M;9tFZ29g)PKViZS$ov6k zt0orI``@_BF%mJZQNjHMp3XDq6z|3>(dT9v3C(7x-vd-yV@Dy6oU8>@=6~`vIu}`K zP^!nyep6y?|6ewJsou$U4?n;0r@H3mW(a1f7NkphaK-i?_%yNf_yfR%+$>nq!*(74 z0ReaKcK*Dp=ss6mn60X&cG~L{AS5pS)x0tmeYrsvQW_wDK~N*W#3V<7S)1#c zD9B4YFb~3OR9693c54v!?zTMcDEiIWwD)}Uop9nKe;RuF?8L0np_Mh_D+6~K(ZhCo zP60bNq7`=_y9cpxV&bcNyZc`hl)xiaQdDd(;#(!r4|l9Rfdgb%Dhe-fNDz83Kd=w` z(*(8yg!f`6pH@wR=$G3Qng?nUWhAaU3f!~YauU@T7g|~W<6X!kK}Ud%Wcw)_L-7e@ z(Axq)?v(|X6LqG{mGq}KGc7S|eaq)w%SqX%Pnq9Q;KD+V6f9O&#}DHUi(N5vT)cbU z(h%H!CiEoie6t2-TOet)4H;$zGP3P(+0&qJ3$zHHhacV)7q5U6Ods3z&-w5HPwX{C z?7O-!v<2XDd4Or6vlYv#y`rKboFRakX%}LN$DBc3w!-y8g&AStFkiF_vh88P<2zRA zFh}Pm2(uf_<1H7nxp&wSZNaJuuso!XUAoi+{QaABxp4PBV@##UF}{e12(~QMu0JS$ z^YjXPAlN0aiKEOv;xjU`q5ba2ZO*r1{npwww{q&}o`R5PZe_ zycTBGK4_pI((?ctm6WwMCrFKqSMp#&3UmwCpl(^s|fz^8SGb-M^QQ)`+1~+!)%?2#7W{9H3#CS?(&9e$%5-%+;FKgQ-cC#UZ z4Gn#aQJHq+?N~ageR#rA(*L%+TldErkvxgrr{nzrVaU7>p-~Ie z+QqtpX%1N3A;jS|Sr2$79Tad1WiMi_H>hGBRU(qgO|K>b3)!|#uW-uZ0)S9lz>?O(rm08^HEHB@+Q zOhXtDt`Uh)jN!9*-f1p>73JxhKb7X7XXI%mM4Xlu00p>X+G+*)b;#(rRlo#=&X>uRwMF z=AbRO0p1X~99xaPwkH7Nitk=v$?`q!1^?y4lKeBaBx)Q3d>b*QVR=52=2Ni4VK(j3 zHqaI&!wZR*^7ql#hYbBFIB{3-@XAc|OudbD6|ejk&{Lt%4n@gZWKOTR1CA*&t4;0Y zp#()a-o6dOahs-Ag4erg6bWCGGy(APY@~Z9|D}&Xd0=H?Vv>J!_*HVU%=TB7YW5og ztpH9_oO;mVVyzm9+70%d;6&0aeRN2?VL<7)v{znuLRuman; z@|?|v>tf{?G01}{daZ?s)^OxasTHlJpFyFK_w`+$sDWM`E4}>{r_4-uV1}?*TZ=Dz z$Rq6o3j$T4b)=4E%+_Koe%)BBd@OSQ5QL8};!COt!f)ZY?uQ`z13AuA;*!@NwnVo*BrKSCLP$d}1gW2BllNL7-SRbFN zd=sbbTICzU$bYV)r89FJcI;!v?R+yR|8Y7-w)by*AN^|_uetKXWA5W#$FfAdi*zq8 ziKG!eNDM!3iNHu7aQf`rI8{9qCHI4O4>4jvvtq1HCOSm!S;%0qO}b0pQ0?=~Xl|WL$m&e|d_WC>TP6 zBw=0kkS!5>&42&EDdHr12|s$h93U#FJ??1`fVh93!BQ}-e~INRKnIbW{PBw-457dT zC5Y(~55v&tOCJR6Krrls-iqhBF~S1VKZIE`+Muimm`3#f$6HNYH+>Q^9f|(} zXAwH3F4ss9_LbQe9dk(hP)Hg2`}=Rch5{tF^v|vlAx#Winuo^$s=!DDeMrdNrHLg37}=JePIi;9Rq0|nI|#?|gGKTrSPSpe{`v$N?_dT>8P z!Vy=ihq!TfclSKiiyQ3A2ma7%Wz!#qqtrXY!y|4AdaT7cg1? zwLD%~_*_~P0^3#NUkQXMBa?DcU@rb$fcV_?=r1tW29ObBa5boz{`6^$;pD^w5(Tm} zP@LDzw|FSIrKF^om~vrakP+GH{$gHy{rbb*15_|0F}?K9;b8^3gE{}<&tCv_yKc0@ z%)EnWvF^7;*RFqj5GU%WfYYo^UR|h}K}kd7a|}R*I=Ev_-2d2}Q9%*o4U#8j9wvZ5 z8HCIsc$-cNZ7!c6JjV!8AVg#*+>PnCPq)yfN?Fxe8cQoePrxI|&&&G?Ei}Kr{`xhT zl<-cIgWyC9~4-|>( z)YOdjcd>(BCnOt`j?S}du(IFW+uhY-xK%t5gftg~ITU1vK*@;D&6F!00$F;#r=MTW z7KIw)BZWcopq}?&Lgc~9y?)&ak;{>-0chEMbyNQ$MMPZdPgO;@VctvWfD$CA&UBiV zAi@s7%^YwOJ4Ybs1MT#xonJ zv4OkN{@9F~l8h`*m+L|wvHu~W2qxqkjX($=7<(d`VfG2)tO5HLP%Wf)qBIKg=|3$d zKVl{8zD!EAsz>`eTr!F)0}_1U_kG zp7m3D8CSm(p(Cc*<3E_Hvu#m&uFU$uu#_Ow+=0A3dn}q2CnGU2Uzbar4I-}@rtRfLMT`h@ zI8TsqlM=B}sR^HQWbjpJ7g$r361P~6g{%Q?9~y?BU~u;K?IuuYRqeGvK}u2by>a~B1pu9kwt;fXmpvVT|MuUkN|fUTv* zMo3$QIAcTiEr>a`sv#MdE<@g`47lmJ>iL7W0Jh^R zI?7*jM4uX}suC>l0KY~0;3K`vo;^E)*t-(_!I58~Mpj-^{q(dkOdxM?M0TpGs9*+7 zCM1x-pOd%;Q@eO)I;>=n5lQqPcB~z0_NPWN0ol7jK_TM1?+~phWcBUU6?$(*m|kl1t}y|khJnMD^JDvo4q?nWQ$l?FhqaD$BDD=IErC!dgYGGSJ0mN5iJqT9ABmZV zAP9s1t~P|-o~L7@Lqj3t2V*O)Q@?kPOg|tII1AsdbX34@fVzUw?RzCck))#n2LE83 zE?4X4j~}jJ{mg#dZbgN9j{Lm^wi7f;r3iU!=m0Scvj0+o@A5kmoDX1p-NB%_w+&yH z23Z;)GB%wvNfgsB2JPi|V!10;^7t>37Lr56@ zxJBG1AQ~v1sN7Abz>^FkJ||mS7^UIm;P5`%8v{zJV`M}$DF)((Xofl~S;5=4u<;@y zB22BFV$i+TQr?@4pZS8{VnqhOy{`>(L6Bqehaa4Mo6uFD!x=LV*+yu({~$ncc~C(? zg!UkNanye~y=P$XQ}%o-cIND#7d$xNSe6W><>eQkn9QzT>fDDtmoX>k2(!QXsA2f0 zt(t-0!!Tm)&Ha>Cc#A-oLSXP&&K)!M?Ttl~8DzhHKkis7CMpWJ*?9+Op_t<@_%jyd zFGM=7hR>$K+~c&*YN>ckqDKn?h7xw+QbEVKfXBH*=+W-;45CMBY(ji|e1J%sn&?D> zVDgCxf2)B@x=|1DVBDm6##Y$YfZ=i6&h;JDF}T<<>dz~C1?1|)ToNrtgb+yL8U=b`@^5S0Id`Pu25BA zJZjJ93}Q-*oS<)jNhv?-@a);MCr_T3n9LO4FPsLotE`L<4SBb+;$jKFATaFn{x==5 z5@0d8G2<~I$1*|~ch%Ks{C`GW|5NiWgLz}dcVEFoCn(OWWcaaNkiu$}cK6>_Gm@?Q z!Uj+bWDS_j6cYL$eO-AtlyARBmQj-?lqF$GND`VPWXm=oOR{ATAxV~^kYx}mJK3|8 zBvF(USte0rNs=g}ND`v7kn@?}`@ZKo*SW59`m0j2JkNc9@9+1sJv+t4b)?t-k&_0M zObRbUhXEqY#)ZWesOH+0k-G81tF7bu+G%j_qZh$wvv5Qn`XIDF>J8fy^%R9JG0d*1 z*mDGg^VnNk|DLKIva5dZ2)IyU+s8(VV@3K8I0Rf>8NRD3$+ep3kh zL<8`@yspnudBY=p)8KFo`sI_?Sq=MX;bZT}w!)=nE$YZoz_%D099#sPmi!^A;REyE%hNv9NQRi~D+e(9 zw&Ff`lSKpR!-DDigkT@JPHHG&Kn^ZBWRabgF!10$U zyjE^*hR4gAot}1fE{|oMcy-J6Fc9C@uRr-IK??6@y&b9=^qekr0G_}zxmNB$w+ADH zqB+EPXj1{P7^y8$E{!5Gqh)lLf=GKj$fy&mH_?iSe@ z%7}r2YTm%maHEjWB3#E97GfY4tA>}9s$dk3wxLp_T5!JY6){GT3I*98|R zBFz|;0_kl&NTAScy7~S+V9cl|Iyd4^!)r*S3!_{DhpvEPUj2ebDBx!-H0bohMRk5> zpxt)fw6W{x`~TQnG588@e5u~7=j-D$){z5=w|&s8w#PD-R!_0vsE;C$$Y4+$SnMJC zEb{Sh%TxNs=Xzhh3YqOQkBy$!y5q#o$$T}dl__|~h=PEAFHSlpk%p41_n%iDSLg_i6(SsO--6$7oKc5(QtnH)I;4Zr(=&U>`G16^UL>%#ynIbT zMBhUY>#+H2!ydTzOp1YmP|ac1@O}ik+!#C-O>Z3WR`(g0-t55x@Xc3I2-8NPkE8*& z*zLj8s+DMUZt+UVuU?%$X|Ij4-jTa^19=`Gc@l^2H-8Ak0#$N3yLeg3ezbZRd++1OdO(9%#O(}A1UYESwrz2Ca;lkzmveG1l76F;Y2BQ-cCFd8 z2=D6uwzc*aAFZ^+-+rivAq0Yq7TF7fFA7%Wh5W{O6ghRi^o$zs%1AviCs}@_9IxfS zOB6fqoVb-RX!lHb3l+<+xY4^@Uw3S^$Eec4Q48xb8Nyq2ZoZh%2GYRmCr?sWxb@1iWNOC@_!+~*VprEv?JZs!>Has#y?B(DJAE?KBcAZGakw%0}l+}-+!V| z#U;njs&G0%orOxUwMc)v6jIx>WEK`fe5mOh5R&h5_u+W0($S&0N7I4AzV@2;A3Mm- zaNEV|6hc@tsy4^LvhL%@QO+Itpvd7%I0i0sF-kL3Q@Cj|-(d!BES{}jj>rpM)IIn6 zU|l0rA2E*n_2M6Vd2d-&vbW5l=5^??YPj9Cme~OzPe9Sc#b&1`%NJDYJD~&Rj#hqr zq_6C7OZlH@(gU1Gfq^wc)5}AA_K3B~qfQnjw8gcLEeHPnh4Kh>3>N}KvXt@SO|Ocy z$d+|>@s5{wXteE4wVlB(O4WHX3VN9{Upa3GKTzGBK3bY{`7*MJfO(@GSiIA@h}?kt zr=|q2KYC~*ll+u&PNmaXVPOriixT|h_3g9Mb?FPkB6)?Rp9(yGw(XXX5aOa2tfp7+ zj@mH}7xYwF&oacQENrM-tJouII74{a?o_Zx2gjfux8{fpDtQU$&~Td%P&Oti>qxz8}sdJ9QVfv0E9+| z&31c=zBa&^EeCG6BT%Z{;C+FMHsQy;MCT^4>Hg`3Ihhnt&j@9Ssh{mH^iH%2Zy&ru zFXqfw$@N{89QC%noj7g%2<%5Uv(EC{wiz+%R<_oJuIhN+6^NmW`)XpbI=B0-SvsL}ZrM(bJWxpQF-Fp@af0#i6 zENR`rl9cZ(};{b>zqqfB)~mwy`JxEV88u4Q9Q^Cw{2EtCQLdEGLWoL z23ZsuMA)wA4|vFM;o^J_Ru$2Plt-4h&m?7NIxjPm@0}At`DR zcn}c2%A=j(e0(sYC${FSTSuXX#!WB$IVogOVpjdf1Da3-;n)m*?}&}XA?@dXT0*Dn zNkjxwT96K;!1sNTt%#D(v=7&6wKxZ*EjKev%#(tijKFU7^cZsh&Ge?9* zd<(j4$N?2+6F-t!l_f0GmWt~3k_ciZEil&t&$%ucmXGce<>n_Gj|~T|7H$89>=w=_ zO$)VO&YTf;(5{Vj242oac+2IC1y;7`s-!eoVo%`GnZ*9~7(O3DG`*yrjA`=HXpZm2 zdOsG|%uXRwg{-ohHw_fi)-fAmT(YyvwUH6oxY2OFQAbA?COxP9db}%}JxjLVwGM`@ z8ogNNH3&=j_O&Ez8vdPU)wfDQdM6J{ee*%1y=-2)4SRqQIl_0zXB|;S_U#CBO4QR# zBILV?apxWDW&UdPVt>tz8=t}PXSW$cb=16r(Sh2p*ZVYiPjudF$9YargmuWvpaCDn z-4sv802K^OL-&$U7{eyJGIEm;*G}T*)cyX}Ww;pp7mKu#E9v zj~oFf1Z=-4>1d74I5%RH&|AHfn z*C|AJ57a4=2uy;uux3i$>GtKrf*j$Ex$oX(1qYj!q@Wg3HxUaZrMP2^dD+Y*sNc*d zo-hLBI=G%aecE5+E8%&TkHtX~$7MZdWAM5T+Tz(F%y)co&FFI&{N(0DLfah%C1;eY z5<|k`%pH%T7)J1^s>;c!s)FDRZ*-7an;oc-&v{$zVgw_~0~25SX3G<@{Lr%jzt#Qh zmpD8`gJ|I&o9N@yOgA5a(+#YDyGWYfE0($+9E2RPw6rvC`e-I{2WGqsgI7I0blG-{hxOmfPON1;34<&7lNKUDK%Tq#Q6)Hs`d=rW~CNx!D${|l6B9LOzDw2b`W5b7!SDfY z82ZVsdH&i21A}kEJP3)>oL$%I*AImbS(g0Kk*w zr+pV`ZA6rS*Iy`O(cgZ6IhOR8#vg@xUUvKT+VvjNZAheup01s{bVaiOu9Uu8wm2_^ z=O_o-Q0lxI_vBUI}o>PWD%(O9V1Q#5*| zH*R>G3Kll(LHp_sm(-Q#d}-}TqJ$DNK?19MB}=ld+ub*?D`H0X;$uotn|)Xoa)990 zgwGQ^t~^90z;^I9E?Po zpEHh-zeI>E4nL0JxndHC;3??A_py9~Era12V|f7$*81}}FihVyPizWxz*EKU%Nr!a1jx{tZJ!4d>j<+yw1Bgj3m$bZ2O3jwu( zkx`yXpuGPbw-D4|R%Pd&J(GmXJF;_g75IsORiiRR?poKK9Az9TFDP}u?&4eKFnI1H z?o?F`K|bSQTUNU4^$-NOJ$hs(#+?I`4nwT3R$pA);&FEq4FRMh7Ujm0SG2V6pL)I~ z&827Y6{(BH2qi?XTJ6z$g8``TzxoXg!P*!tP}Shopib0#Q_9{isR;fly%9R0b66P5 zh&i!)6eK{ez({-P;>9q+CU4#?8e-gGrZL`A&nUQcIJ%bS@|J78N5b{Q(9+|D)Co&7 z(P|J0cX`~UQcfFJ9=5l)x3jY|HErrWcdxn{VqQ#;Nn*&$0*Ud|nI)+b2XE)Q%1^Ta zj2VjaLA!f|vA7u32mKOcZqL#m&0mG6kw`~Cv#;+Q?4!To_Sf08wnCCa^bJ6q1wfq0 zCY9(#V*s_(>WIdfFO{9)yfZsNzMuy|n6M@ao-4bQv~&=J1JHDAHhw5iYLbx>ZFj96 z;0$Map+Y!~h=WN$y?-GX$gKMTG_f1m}`jvT&KH_a|zMk(STRkGYpML!2Mp-G) zVl1iEQ>B?7dQu?1g>Cg_XI^ufL;7Cx$J1$h%?<8G#W z#BF|9%8lG?@`{Y#?d6))ME9IfacN0OK)O35B|~-d>fZ^_Wgosp4sX(R-jt`U*{?XAG_RUk zSy*rgCNV|RG4{G9CqqqPY3XLr^%>X`B0fgUh&xFcuaq?O^yM$wMB6)CPqNyZL9bih zw}C5qhwXzDy|2t?ZlUtwyLbyO9JAFq@z}sEr$Ya1Yyn!zwma1AACTVwNuFie-G0wn zo{p6l@zE;8+etnf!xG44Jg;aa$&;ew3@cX6s4AI_;x<12`a#=ygJ$_}_UoDQ4@=zS z4D*C7qT^g<*9RpQ@;>WyE*|8*JdgVKAMp=%(rk1^o%JSZyBwnuCJ8jW$#8dufoR`a zu8gh+ezY2^G=HTWU-odvp3FuEJ+ZzT_#?&Ja$N9@3=~|rYA%r&mn8SwbJl;ozrOBB zb5imoA$H3N+uzUf(h_VWR{sn#<#-;mh1^HokXGccUtzLgu=3;gH~JeVPS`%s59=Q9 z3kaRBmf0-7Zkr|XKTBdw?ocFr+sM|&t%6U-@8R1kt8hU;^!cG+_)kJlrj+IaL19Zv z3xKRw<@Q6}-7pPGNlAh6fm~@%!MwU?*Q-}grbo9EF{J{|f{GlQ7}fiT73@@H)^|Tc zv^V0-PtyX-*X$HFCm|sr5EYhm7XT@Ahj2S!-vV}n2@=^bkS$_+U3!4S9K})k=WKw& z$mVzz`MrCC0Xi@JS*VmgJO8O09tZ}!6!dW$nCk#E1~>{txT4ps)W)WSzzI5Wu;pVu zH4IW;P%z~0Tpq{`uzsRPJ6L&GPDmB|_@I6<@Mi!54D&WVfuay7llq&cC92RZVJ9bv z3B)yr&Xyw+s|dk$Mak7?Rkd=dOaIgmzYkP>0Y|G*4^4_M5h#DC{$N3I7TsVe;IfOr-LC zCMJRv;~4>?A`p)POUej-gIc*TDzXfjVJT2OxP0~@hB_a5%Pjb|eDA^Mynw14-|Pg? zM$LP;!70~Rod*_%7nEQG8EE}tMsEhmVx3){*!k29PI0&t($o9kNm5Y}iqS&OVI=9j zc>6DM>i#vtDwbwuDOzo>xca|u}Znt@G5ilAj=@e=Z!dSy? zWX5^Zc5;k(EAkT&Vo72})l*mT_3&8fLmNzvP@nbeqP!g(41)1mbRl96@L}ips7a#L z>#KGDSaZBQJwIFusC#D*j%VhyBrjr8Uss>7hd~py1>kM4hKMV(gVhhjb796Cg*q6N z*0Z)Y^3lh4JSl>V5nNe80Vemc56s1qp8-4!wqSr!o$uNQ9WM9)glw0z@)Z+utD9l4 z`o|iy>Si0b7OYXocvN!l-BUmm9yEN0Yyc{STHpftw`a|b5<7ao+YJFe0!fOj>D(`) z5E%RI&9QRklh=AZQrkYlX$pNP-hpC>(I$0&Z+|~F0JI~BZbvUwGa2fA>8bN?6n)0J zV(N1Z3Hgg0xAg*sw&Y5bU#mAe{;z^8dQ5E%X3O)t|9L_h(!49!$r~gzCREc zj-zSrOG{REcDtoic4WNf`NePFNFcDVC-+~yQ(oRVy)dfSv05><;1=Sq&`UzWZYd3w zZ7x$0pfrvk7&FC-InQAZ4=C|vfbP7`^1T!udP)9J+7p*@~sw$^|}IVzC`-_ zS>VENArc3ypeS^}U=>b;oC6$<#7PES`C)31sFHfqwQL`fw7INxDJw%BO{Xcq_4?=7Sj#89NF z5eK;E&jdTM>{%bD(X3o7zeXEV=%7^eLWTo>lp}wKD^(gpHVx74w6Nj2od@OfpE^H#{yZlm10Hk)6ChN!9L?7oPlZ;E&i3{X zV`CxWr`5kroy;ES-;&;De{Si!8|61lBzVHeelhM6v)>3*%~L$-6ci*Rt(7F!o-A}f z8W(hgSYu}Ws3dfu!(hUeuoyhzZCTjO8qt`MArM=jmxRDM2u_IXF23Lr_GlfaPAOM+?}1|S_3qhW`=Yn{!k&vdE3Rf`sKjkzR@%9R;iI{A&|7HSD}uCN%m;MZDhG>v$=Dtzbk^N& zDRW{t0!@ityg(BA$6zROwo1!NuCd}Z7boNcDvM}LNKfbJV_smr1)~h~DXW(okA7p? zE?j%sbw3X>K=f;E3hF0MA+={uKn$yfbSR-=>J(y>kbAq9Y-VoGt^-&VuZyRt5b5wF zg_-OX?#wQ&bE7Ej-MhLjPcbe^ll+tJsUY#hX83-~DCEirGx_|23HwX)#ODvVv4WBK zeKrpsVkE#74LDFkBh0$&n)?|~PvScx##{E}U7Ns-nw>p~OpubnD))ndfqOJa(rt_x z};--*HX0H8!5KYaVur^ai+oo~%M<(*ee6jfEd zZd<18|M>D{O5fxbDsoFnEhq7?mDK$kxuS=rVO;|rdn)}ZOa0I}j912zATAvaIo!6C zjKva+WXl_xMtE~(OXvKVIt-a9dScnWG?J6mJxt!n$Ul6fo3e3bWP=Huq`fBV>v zjJ-o2f{#Xiugti%+IUz1GMvEIWnLrmHkqsdr(#~ZOYov~nXrJshz@-UQ3!!`cqYNN zC*Ct#;*3XUV3Dg)WOs;?&fS3x7bx@^y)E@oGa*0&O6^G{BZkaQEd)O7Rn2??l%y z%?xBzCwg+nH6!63`NhK>&7&tl8?29$BW~d5|MdCu?`;37E5o;Uo=~>G-s?fWf6Gj2 oDMXF6Pfg_U<_V4+Ils>NKkog}y<%M_d_&&f>YIhm&rLgvgfnKERo%tJDhIY~$|lPO7NlFT6_^DM*N ze*gD>@B6Ox-nHI!*F9^s;yC9y&+~ouckj>sd_Ma;)6!7H$ECzY5CmUYNnRWNe}N!q z{@Cd7Q(n*LBK$&Sr)%J8psprn>Egs~ZslU}fZNB(75PRY;xfsUVsuBD%YrKlC7v=pv{j~E=l>4B#?y^oWl zvxk_EB;!BF6@#BIp5|es|K}y14w8%p>RR--T-+bf-{ii@&C4i-OE2MWWi6&Hukasl zhTkL^Z9P3*#dvtUy}h};1-M<@ZFu-ZMMZgd`FZ&Hx!@IC9=^_==004`9!wX9_}4My zA9z^0+qrt$xj55b9Mjyw<)Nn}BO}knhw%Kzr@-m*{O|LHU;g(MKX8W2bcgGqR4M%p z%M@aF>z0;>wxS%p^6gtfe4;`^T>RX82*RH5Froj3{2h`m=}&QkUk~qaa&nqb>IqPe zbSR`Lzfz{m#}g882`o9<@^fJx=a{&z;&@`XNmg<9n+oCe>*5X;q1ijpl--#VbxR&C z2ie0-OCel|cRduc2;7hIXlbvoR}G4Go;?koVW#^6ZyQRl< zLA_~8lpG_1xCEu?CM2|ESGmY;MhS;cjH+=m_;dalTnuR&dqK;ylhnDwA7t=Gu}!w3 z8u!MEDfM}$y+S`uPmkNuJJsL)0dG=j6OYpDp56bMMIJ`M^tcTpA7g8{EBZ{ z8?P7sHt(=qS9;4)^$Axjs-Roz`7{To@?Js5^JQg&wF;Wn zw>G2Yunhap2>141de!u#%AcjB;&NztUJ6J0BQnEpvkQ%Roi($bG-B)TQ)&Ocu(=UVM41c zjV^UdEgpY<-~%lMnkslP@2ZWSWRi=Y%Yn$qNjussIefxIkm6et0)!1+4>DOeE zKe)TUkF_~x%@NEcW<^wuYOfftvgzvV^ldV!nONKMS@skQZGAat+tk!V#$)0smX-7< zokEj0(z%Vug8YNyI6q#y8f((1ec{=&o<#+Dd6BF>CdJsWyVM%-k+G~KxNN)ObskH& z;c{hq4*Y4$yXP}k8>XDg^sXQ%Yz%)X(?V_a<#)p9vK;l#l*!4+QnIp~_|yCzJ-SJW zFN>nSdKsDB^3ml;9<^U|uVar?P*kLfQK%Z1$W=@m$0%QB70P_}?AexIlV0gvdQ@t! zb(Y4GtB3*Ti*BoJ9|?;}@^;?R(JxCoh1zyLwzpV(Za>jj7L{jAm{`L?c**hVjQh-Z z9fdM9ig$b@Bxp4`N!y2wxl@#w(+84mBwBC4IenhrlAt9xQOiGlL-@y3dDKI^2vI6XIJqg)(~Qx5DId4LH|VR~;N3GY34r z`h@6v5@-J)z{6u^WyQrn7s^=M^D7A=!p5+u{J!F;clYkm$#pzz!@;8mOr36%i|(?w z=#skS?+7|F(PWsBOj$99b#!(r7iuRcbu8`lT34BrkJ(qxt(^E^I}WOwwDFGNB$@JL z3X(^(j+dI0(@n3#I+8|VUaYO_hYstik|fj50|W6|>;;3i3xrSF%_|KU85vX6SS5aL z`EZh65nT*<$xcZ@frGf#8M7umlepTlyyb(3bxA@lfAD2)hoeyYevCgX%9D8!3C08^ zxU*Bvbkx+IBGhLu`a06Ea4^wjWo6Njm+#&sinWI?EG^w?H8eC76BkEAv`YjfC8w6& zTXw}hu(8o8T>Jgo-q~40L*s=?;esr67ZoMtE2rnW9KAg~myp`2^&~b;ITi%jjDlNJ zUr$LJd`gPEEGjB$X`w^tiJn>areh)^4}U*zpL_cBDLXeeE88Co*-WvA_P@K(h%?Br zsDfo=UK7#L5lDahEqC^@*IJ-@zjn$Q7E}_A_Rq$~fsX`xq_vGr(q5w9J*-ed8k)8K z;iAIA!4*&Hu19`;SXfxc$HzqvsD<&XUGdD0>ZhEsLR%Nz!{u^Y&6d|L9?3n6X=!Q5 zV*#7K_`8=8US3`;Q_~F(nuaM89UWpix}2n>&^-2(p70L@LK*l*cYLA_4}F5vP!Ph1 znNUVXdOCK9%-~81!Pp%xxFvjie8}UzK8@N}G-PDny)HQ6ZJ8Gj>es<^vM6n?5PGFj zrpA{OYtD9dXvjyFY-MR)f2Cjf|M~>2#T2a7EMJo z_LKH!aTkv#H(sHna!gH3XsM`FQSyq4m#GKovC&yZ?5hpSNW0v&KYypk=Kr}>RK)s< zF{4*QUHyKA85;Fdb-uBLu!?Kp?HD53g~KZ&mEBJvXbQDUbU8|Bm_>1&TwGk7oWgT% zGZJR>Mg(1p>a5u9e(NS;<)N;kB$T|l#Yx(uDShfW*M=$b-MnhN;#!);+mz;b#{&aS zy}&>zUkPq*=Rcz5ofa$0%bTLMRpXGv)L2zDG}bpZp5R|EA$`d4bWRE!ouxL@cdA8TpSx!``k-*+$YQw6|Z984BG`ZU1<#%#%VnvMLLS3vvfjO(9L0h~{B(rf#;OY5E|2cxd zVt*?$65j8Y%iUZ|F@M+-rCBF1EZQi}^vmT#- zfJb*C3-b7AXG!|}WG5>ttIDSTY+~jtf?mnod`^|8Nl-)tTYm*X@UZ6h#!MCO=&~kB zZgmhdO^3A4`AB3#(w+8OEfb#c7eHp;Hmv`6Z#?a z-@Q@&+l+VQyO4d(&H^DXX|ZF6 zD5ea#@uvnkCPG-&|<`)DvOFzv{(H2@gw{S*|hge!0K4}lckZ7 z5hxEX(~Z7xD>jvkj51UTIk>n0_3@`Uy5CC7&ZZ5ae*v3-1UHUO`mGjwVp39_F}EXL zQ8Z2iy5>^|J4l!SuAnr2B#rB~qQr~%^hqIE<*t#Dk(Sm=T@LBvWu}y#(W$92?Gk39 z?&+pSYhI7;-_Po{67%{)9zqYf@amKNx;lz)st6LJ07#~~x*BRO_0=w0!9a*Ux!j7< z($(FS;Q?t62pQ6-!Ve$x%JjUwygqew_@C~L!P}dg0V3r{_zo?)!{+K)^SY6&64y2F zDdynd5bzs6s`K~C%F6HGj5(RDW(H;7dQy1Asbk^V!sP}>M;|VJNxnkH4RNo`oH#vg zQf&y3D_Mob_$M}p`6Z*z#2@;?B+PMcWmkkTXhQO1<23(F{DOA@N0od#j0MlPjVR*( z|DWqj7#R|km=oW>7tGaS2TY1CD=!}=L;tv2N1Ziki^H(&1FV_zx2D!QZszExPd_(& zxp^r*5%AQnU%wzu2$rWnt&Y;oFsPnK13~cV2KUzrAoDMj+PyWkBg!-x?Yf>RQiAlM4 zhbx_PjS+W>jkOgVBBkf1#m?%UA5`_%uU~6xYZDO>L5cXhv;&a0DDbnPiAi=wMyW1G zs9(xU)mrz(FKpR9=n6T$Tb*S6*^=TX)WI_Gsi~=1$;k=Xw5>~HBj4H_)tUGO1s6QU zY!(*_iwZhEeR^lWS>82IEhGzQfK4OQwP9*}d>o>i_u~|~`H#@nPy#6fEiKp0+18iS zEVcM6Ts4#1A1@Ig$W>~Q&2gI?{Bl9)ZPF+x2nh)hgt{xatnA^#ha)(Dr@UvHe6}nw zWHquSl(E<`5Z<(}jgylQfZxT_)ryLK{c3G(o$G(8#SYn@l8&x?&=!iWsNp3PyN|?l z`b`II9UTacP7A&edaO{{{K5A%HFRR0ugc4LX1($9!r*pIHu^%jX*!q|_dl%YH^n3* zq@bXHv)RmP3J8EccNZu4lSL)>{d$aBGmo04+uG!E>`4d-`5G$XzaH|72#!ons$qR( zo7?gUIv&n}RP^`w_-waW8dLc;$!%e$AMf24VcX}A+MAoPbEiC-YYT@WTB7^Kx~e}* z{2(sqgsDQI&`jB9r&n0|a5fZqd@ut^bEBpB>{+*!watTsMQ2`edwY97#UtNl$f&%d zvbS${o*v9d{}ipPtPID*w2B*mEI%+XtD`1CyHU54t*WAen;5yX)IS3Oo76qo5_GC2Zd2-4ua(F~>X>5>5_=>rFc9ED5m z^tc!y-@hAV0h@>M+r3UBN9w+oR(yQCmaeWR>S|8lv7LLmeEy(D zrij~e!^S`XenJ=Mvpm4?JIA76 z2uO^mQA1Nx(|})U-rfhBB+oC}>9l`Zm(1*J6GOxF?xheZ!WLzIk)hzFM0tT=yC=5fPNtOWVz`v_WS(IXotfhhr^gqibFQ6wzPb zaE8#2*zdK5UKV!zzS$?f@p0sqLTKy!o=Kw*A+lL&diuJmN`Ss3?h+?MXsgfuxJ|g+ zT<)zWUK`Wuv|Vn->?oh6>GU5zpc?Tfa9ra~$w*GFHfs$5aQ{r6F}0dSN{W{C^i5eA zbOw<7u3s;C^G1z3MSvVHs`ICSe4Cqb@o@Er>W5yQAJrJW8nOfn>y6*Sedf9MPM$ku zb?l2k&);eshPB&`nN+&zJVCCQ!Tt?PH83*fArNb-7fB!NuG2J0~ zSZ9onkB=MvGgf^4)$7;WGux=ykqn7j2jU4}Ne0ZSoq+>gmb&wNsREct5_C>tU;Mx&4gqGPE5BIbW>-) zgj?oZMHJ&`A$#OOf1>a@=ZMiTI=2=%wn~%z7uDq!LhnjF)AY#O!r~`+oTLUiD?>(a z;O?Lz8uDoWPw*#!C+&P6WSRN--RD2W0A<6bnf<1`Jf}lzV$pqc>;ew(L%RuobDgpj zgqBA%%ok3?Q|!K<-!Y^sRzID@kr7?)lq;6LaXt>Ii|&VRsU=rfLrtpfM+@i>B3>Mq z=A&N#MECdi%bSmJX(=A{vR}V$cY3@B_=JqxnA}ZEAka~00ss}js&D0{1OiIYSVu~F zrF&&H)9A=#;NLY%whr>pz11<`qwud@9a{0sX>>w`&?`KT*T`>`=TmQL-~2^QOoW7#blQKXcd0LHwf@KbBTd+JkUjL@7|8w-BEPzq08kIM z_1u@mg?07>B|kqu1c9XfBB!|G@kizt?Qt1gq_*+)wziMyP8fKJUZkW%$>*)FJO57q zX#31*cxWgxDoQg;?53a~Nqj@nvS+PyrnMO$U@GiKUpu@FjK-!| z$mz9q`1|)sP6a?uNO6IOTY$l9jl~RA#Tn4)8A9kw^~uH9u!;JjbI z3;9m=oyf%6KBPVFd+)5|>8Pjs^{E}~?duyFU|ZzwndQY3{oXq!)Fh{*r0iw4A6RW2 z#UKbILU5psx8fh4oi)3A_nI%D6SqUNxSqwg_o{wD=4|gxMeDE?{PykJTazX~A7|F* z3aWWl^gwgyb=-9LruJ6oqf6_(*|5je-}<+BnGvG4@X6521c^=b!1AdpQ%vJ?8opO5 z)4SZk%qIj`oFmzO>u0A_mm9UFvU08vWQ%0ThWu%q;^L3;yzN|Eo;-_YWspAk0$21` z(LR_htc8f5JQ`RVMCSHwOkXY5B-vq{J+)`@iShBMKYxUoxwyFa)4mpqRvU2QVKK?F zGQ~kgf+UQC@a9JQ#Pc*ChV(D7v9P$+O)f7lZw2v*iHR{XhG-PCv9SdmOnDPGl@pw) zq`r6&VQ%26;LeD11x1f(%?=p-N7}!%65l)rqWUokcG8%k#-4nan~aGp#xJmk@n7xGBXi| ztUqTS;1+0H&!pGG=&|$i^O?lOGmeLWyYQFF$s9sM0B1pZ)6>(_(CB*_$Y6QFEo4gt zQ0`wCVV+7z|**75j-u1O!jv|WczDI)~ zzqkt5uaL8CH2>v}%yacQnvatXg!OiniB7tPGob-;|*z)8rR`DEZ0K`UN$ z(8)aAU5?SW_ZwKZ?3n|V*@>PZh%VEWPgZ&CDkzMHzv2@U(TSZk&{K743M26F4PVnR%(kcU`MA)RdG3 zFYpQv9yUx3Y&X)e(#Wpl&i z2vo+NNfXO5GbcwrD)K_vjLZL0&>0FCIwv?!rHnMHlROIZ?b+cUuZD@WPrP{T6%Om` zn=`L*eBp+&nt!8+HEpLbxKcvYX87v(h^I#r=d@$a^^lXT)s#GH=p7*j+C<{@O(!m!l@WCA3cu%7;*>vV``&=_d%r%{tU%I~Irdyi zSVe!a*M=ZvS!qLt-_;m}(31Gmx`Z5`CX<}?vZ~Uat`58gVagbc-DJ^wADUS(9+Ye)uT1u6e};@jszg zdMVb&x9K2qiKReD%COAKr^cpg+<^0&D_d1baHj>n_a7*$={fx#N;s_*Y3&P-`x3E3 zbai#3D|@HumA-mjX2d-pobQsjmyF@~(W zhX>%_S=z0+0o(VY9>1)tt@ZTvlUR!%&!&V8yt@e5wV3>eQ#3R*!c(5a)al0_4azdG z1BtqAGX%RYN5o7QOyT^TpYQ4EnV+A}<-PjE($@B~eRW%NXb*4@#+3$NEh-QF&myng zaCdjVK#SK*J9%)b4cDM5z!Jfej~@NCWgK7I4-O6nVpqCphD{a(8jWJA-ZqWcq`43H zzh5tj%;l81KmcyATD*c&%)^fLMK zXkfQ6Gh^qyeY;+i;ryki$HB$LhCeO8ZU(4@a5=s`B0z0}#*!$E;4=0QdaX8PgCQG` zD)vHwz9q-Q3ZVx`044e5o&-NXKLY~;3rk@`!-TD%HNd%~s(0^T_0Or^oZPQ|(qe3Y z0SaH&e2ndU3v@8hHIPh5LBkIh7!Yu}DJ@HSU@V7?;U zD!|iI0O;22tD)&X2L8*dVaireJE&_coS2dG<(oI02Gk%E^e?sFX6N8eDFu;5Ohugn z(l78&6wVXGxZ(a%GsV}+N=tW&Wni1D6f$Dxy?$-q@kya{6cR8IMy_@Vx&z<7zFd<@ zxpoOJUMMCSB7XLcTmlmasSXo*;FXW~Rs; zEiK;k{6GZMtD~bM=yf;wB6@+SQ{X5xoYT?Pepgks=JgjS(9=35YX8J5J^5&gxxv-$ z7&2{8?pmE|mKGOfZP1lGJgR`19?u;b9K2&>Bn}t-GF@#B@6Fq{Z}am*{TeG?(%;Ut zJv&;)a@P0@RKY2y-r=5ug85@MV{am8TIhmK2#vX}KJB$$U0?6}@^yFRyf0HUe|Uv; z&RaYXgoHi6(=-8_R~I}k+}Qd@ey=*oh>3L!4MB@+Io+R_l_W?ud*hB_Z8Kam69^0e z)HO@?^@=aw^y0dbq#a0i4cSEf4|$_HIXF3~#aXABW$us&jX-ZISzQ5L^_A@%Sa;3Y z8q<@XWY{5~eSJA6XC2@(`y=^!_V=#=Wsx_rvSzr1>$ta2R%a(i3$o;72*O)jD*|Ow zVtvb}`D9xaq-W@Uko_p~h~6COnbp0vsH84pt9PQEoyg-G`1m8dte#>`1qB$!Q+dDG zw66Vjh<&QYdMWq?uNff^D8nFPnMJ8s@MqY0`V}aVP!SK0kKQ))aiiAfNOlx@1mrd3 z!T$Tr2vTWatgSsXIqCoBJKyW@r|s4=p2O;J?EL(8wr0%O`C^T%A^YkS?)&Mx0gLXU zy5ZecSMl($!`sfz&IaqnN^}j4jn(o8f#08{Rx8sp^}z5{M`z6)cck62i-?FYd+wR5 zv>?!|Rif+H)C`%AgX4=8zj~i&X#Wx!2?$jfsw?r-EI_~uz>nh;* z+pR0F2ArQhbr2(uxJE)!P<)}2$6S;dPSPlll-|DOBgccpIJUA+fzV9Q4NK5J5P zN=g#LbeDl+2%D{7dSoQ-d4`q}!Yq$kfKwi?bz@rbFu8ko@9ggefvJKlikXSYQjP{m z>JFP1E*%v+>*JSYP3pE%@9kykYX@}&6oxympEPz_99DhL#@QiV@zb_E!|2PM1I(%Zh8YJntE%Nz3=$z7cPxAc?!HMeRPg9ekeNNoDy65%q z;q_z{2o0Mp1i_FsG%~tK6`*^YH9kbVj`G-l3=M4qZm zTukeCvSLd2uJdA?+~E}<_9{T?0Co-@K%>%%xYGNe6`oElUg5I8fB*i-CmKJo&gkZY zOoeEbfFBTzOZol&C8*p3 z0fOJBXUIdL%rZ|cX0^G62)edxY@M>X=e zQaF(b8)^s?87d((Sef1Zy}kWCb8@Wnj(X^wW&tc+ebT58Mv(WOumKqF5`OxQ$2L}G7ALTj1*Xua-wY#gr!zkooE(}coRVFZC! zH+ZdW&uH;;VOZNsLuvTC-asIBSA;rtqXl?po@VUY33mkejVMws6=mgMoxd_pdl{tY zc4kmDjk#;e%QueS_zNVjsL4{W(uWQ6J&_pZnUfd3qtRN_Ghp#!h>r>To&6|B>XrS0 z+*=SsezU=sO@dDMUHN7 zdRJ1ojK0mxod2on2h$Q(=p9|%1rIrW{S;8)Vcn8%=mV9w1%HJqNh9v{eQjUz(S9Rb z3C=3ec!6o-Pz0zy- z4KkuuIw;)|3Wc z2bHih29gP<{W16w6sG$5SaA@u0id5jQaR3SfsM7WurOMx-`-0#Iy!p!Ds^qH{e-RB z(g?`);c^V5Q6O~9xu?Xp9q6*kLpfwO2tFgg|xGh0CMU7KUz{zZ|GY3N9<+D)SVV-z1DCNme}eC9{0VC z6^TGP1vU{@>t2;L3p4ZPk$(;iFZ8eFV?gnN^a&44W=tEc>l_?E-Rod2aDU%_dj%&c zF;TDFMAD{@Iw$%k6dhYZu`CU#93B*Qs#+0vx|EnfE4@(eJa(4{0e6|#6Zzdwf{d7A zQ7Q7BNTZ5w<;}e+IE4BqU$97p-o*R$XVa~xi&u>!8KkOT@a|u~4UnY8mq_ny9bbO-0LKOsFg*fN`qx*5pLtz}ZA>SJH1f+@%}jIPsUOMhJ--0puwi>-^g25`$AVoZ zIvPwlKww_*l;{l!0hCaZ3K|9>%e z2$c*CfqfpZl;!=&)(FgZlV3V4DnG^IJWokEfNPBGv?v}vf~u(LhLQH>%^NZkpIj)b z$@(S?p%!iLKe|f%YBF3)Rr|FOc+da}!YM@V*?PkUy8A)NQ(QI3rP;o}(m+gk(!K>x z2Oh5!Geux7xQg7dsD!;}SSCRW!YxoC(cRHeF`aJy9R}>Dr>Brc<6>jMb>p$r2Nae{ zA^#x{27)9cB$PL9s{rXF&@VCXDw2w)V68_givm7*wiQygqYqq%75_bV_jiM4u60w= zr@O={J@;Dz11`h`tWg~{xb7do4e9B<&?ug$wCviP&GDC#26u<}jT_p`^+N+-nOf@4 z30fY=eM0N^3VMdZ!p=EYU_*G7d3)Cwmi2x8tfZ=H^xoCn#>U1&^~%HO1JJK7Awn+GCm;iQdU*-myotHd1W^Z? z8Ed(iC1l1N;vBvEfj7~}=e!<;q;{Do@sr?Sic zD<&FfCyMg&{%1!^X3r(~cxz`i=Xp;i2&7MBP#xeGIrWczIVLBS)AFE)6!{26PsQ45 z-$w%4=?SEL1+-3XmwGZ9 z1Rud0)CpoE)T0fo`O(0=Qqxwva!;`UAE!`Fk-RWZ${3B}_DvTMCU-q-DR&Kh;I3W? zZ;Ob);;&Bbw5T-T#0t&T%+LJ|o+{u*%qTAx4};0*v(otH4WPngQFX@IFJ52~%gTT^ z1+W!m%%-5v!2DJtC_=PxHb>iwuE%t)KyS>&@iQ{E@oQ_j6c3A9Fxh=DF#9?RHIhJc zO!Q934Ra{K_wJ>2&HI8dIoAVL5PLb6#IUe1@T)+q^%AB}IYY+*mRnwxcmiG{$&<;c zDg0Y%?aLczmt|3h+Kxg-6Eo5$VfP!nB*6~U9(QnX(Ecmn{R=NS4E?r?;x%G*sz2j; zXipeI4_YyKgu1PdQ_V!0nl)%4n~X1~e>QA1S52%z*Df_afsU?*Nq~@Zb#;PxZd=3{ zYC`Zf$++2)o&*=b2_7QiI*a(m|3Kt`*_d=bczV~v5q8_e8Y{7GoX?epsjHS5S{^sB zP=}Y&JMaQJ48=u5*yr9o=po1Z1b)3&vh^&3gCiaw-zxUxOVMJ7fQH@O-8~XI2v5I0 z0v*~{B0DjWC{>2(v8T6pyOCxdUzjO)lXj)u15qqctc8%-@0FGd3Exx6e=ke(^Cz~N z9oBt7=7a9!3kodn8mPDiW@&hX3lT#WJ-gl$WH`B86t|+<@&UL%@vFLui;CLry^+Rn z&~CM^f<5a-U99jvsb^6ovQC~O`Pjt-9f6zhOkS?&37-)sXyr}MHL$Iv({4JvI4?qR zfXfiJcKVo;-fAq3`0*#gZB|y+U!BtD_ZX8e*mqgfISZa1*VpcD**m%=x`~W{x*;sx z@5^x{Yvi3%;nz&47j^Pxs4*ryHJr+o^!oPZ9$MUkV?ZPitgKRdf3-B7yffx*vG&vA zev-tVvT-t;lb(?QR2wJ+C#K>T$L{ULl-48#Wf+CQz!El&TkcB(qFi>$u8)Mj6kYnd znzcX(ed4n1=-nz~Q`4D$(Pb7EjB4kE>>!ce*U`B|{F>nERaR!^Xs3SF_#UH)A5fpb zIR^WE`!V@>$lWW2+SifCh9-k|?szrOX#6lsjNCF_x~O2AK8{Qw=Hy??XT2K0U@rJz zQXYko8QM;MhSp)lFMEmr=5`QF=lkOekqO*-!1*l#Ns@RHeQp!jHG6cLg8eA?)>ob`x!=T_l3_10e|E z%`ciD#>UuGhBH1NuMTAdrK{b6Ax42IB@I1$FuM`+TwZwLyCAw)N#_lh=w&q{kN7W~Sn%?kd+Bx`TB+3vcfoeoV~B2g~ zWUjP#u^LpPNJ-N^^{sj7P>o)X9{~Q3jSB+7*oFuz@_OQc%`PD8CpN=-#H>lm+@x}^ zTDIn@2m0@ZtlETXR4|9FZ!J^|6#t-z`Bdo57jDx-p62HA7I2i36E_bRl z9X)oV)B@O$xInkIwf$b>k`u%u$g#Dx1=cMGb8`mcId>6i!!o`6LCA{^f|OO`e*l1~ zv3})BPEY4Z>A}ak_0n2I_W6KCrHr%yEX7+f3iYDKNhnWO@Ks?Gw*$j2AbM?1K4iBn zUED?kl=V*4l+Uc`8pSRXA7Xl~Tfp_w`u+VUaK3^K2kby18yES3D!-8HWTs9Kko8)D6bU1#(Sx)br%zhY!7Ls;lqx{{aeb zdHEG^;1uOpxZrV2>YlX$(rwfpNapS&HsC*JePGrDrd^U%MrUT|$jFxV{OklN-$Wru zvdV3z9X7=QZy`|A@n%|~(_<#WB_<}G_%UI==2>S9*cT5A2uc7bgQUA)n+3*^G6u*Q zE8?)cWw)HaNZfvUH7yIhpo?h~wv-Y{edAYVl_ilV0X1QF~&d6(k z=S|9CWk+*d@#Zm1&eH>%Hp5U!s82PukP&7pCRX=oCH;1RYhzV+aCP|n)QLVz!O{YR z!bML%h4hCX=i>U+>MAN+SHG1l#G3=Zd|@D~cF+g%+|1O82qV9Qpgs&_?%=v!H)?OO zEFhubV{yYRz{zTLX2PA~P&461ZBuFR^YdrebarZZpRBa?1;7Y08TKt-8~hle)K^Jv zm*@#9ffM_J^P7(+qM*1S69XqcIHAD+5+NLfmmF5S%d6nA$19xa@=VPKPlHV3?O z5FKjUMLN+e zjSzaUDc9Ka(;_l%Zd>H0yM9fsB-3C=o0tHX(Hp&0A5IZVN4YDX&IE}n4WjdG!J6jz zl7_HEH$6Qa1n`HKpPmC81hpEGF*2g6CU{)6QPN*PJ#zhWRA*wh6?O=0hnQD+x*QkN zAZm&d8p6wNM3WIDA2{G>Kq_jE)ht4G~>NWCq*6Y$_UPj zm7zi@G+yY}Lqj(jcQihx_~T<;irzrZuaictc#6Gm0d^Yt8F+v8Va!0VGobHte;Uk-VO@Pk1Q6Fk*TxOajXRl7hhlGTb8Pz1tGa(-V(t^ky zLWZaE4Ub4!h26V%&(M&v?g~;bebiDGC?CQy2THtVu*~CmA03@x z>9Z|@G_?;NOB#p8Hrc*dvhnZ?;3L2W&J!Pct@z8pJ=-3EFG1Ts=X$|70+k*6^r_Ek zSq)foU>ae?tD(kmTw6z3hpPhqdWFz~v-J?3r;+kMguN3{0|o2C zSII)u%@ijA*!~u(14wI$pfmqvd1#*aEksg3CT3>hSw7VVZ=$Cs#)d*`x~>`dH;_qz zxdV&Tg|n_i*Mi*ZaMQd{TU11()^3UKyGP=jp~eXxzbH`|_n3a4Jwr zUcbg|uK>~YGM)b>kUSBwY@0t_zotRVL*EW~B!7?>}oA@FqIBZ8vAOU@oCwKt*z zb@kD~dQ5DrHAul&m%6qHqz=vOC%3^9IeT^7j3*e=%^v1VJoT8U;-MJ>r%(CV75xce z=gH+gzg(KhHLsS(7Ir|K)eDUSX((L8!W0XIE_9;Hv+@Nef>HxM-}aJwJSv# zpXVuKe$73hW4$HU+0_NkAFx=RLk0-|jtX>KG+;|5A-<27f^|ZmuhXdrqmaiD5D*wE zGXgu%OzY1}2mlhezx1EUV15CzLZ!hQ@DS%!RG_$*+LHaKyUgPy50hc?4h(iq(~W6( z+yZa|@YeF=ef7Kno=^Y3(Ln@?a`0Y)4koUWT_*kMyMpT&Ar7=W^qAB+PW_^n*s$+}sR4E%0dn1k>kDyby5f zgXNrn#@GfA5DY9X$RXei1!{m-Pq2< zw{PDLI&7x{Ke;;)*x=WTY>b6b7Z@OzlK>weH;74a-WRhJfJrZg1i9A!{9!&Q1D`Rp z%>aBa>`{R;SlT{$5 zLGkw!a}&t~>oy=c@^&Iw6m1+Z+OzVwVp33JNTU{AMP_TjH~}7$%X1G(YOoL(zl4cJ zrW7a+-=*e70;gD0(=dk9xLDO>u-RI!{7+{JRvE7!FMyK)+S?z^kTPXaCll1I$?9 z4M;s0e|*Xe=TK>I}-FkKT+qe7D z``A}1ug1DtJI8qT>gDhwvSOLW^~KC?#x zgAmVGh8<#SZ~yw@WP`n?U~mrR>)yS4_nC<@#`?W5%otkz@>w>yQUIO7d zyRunC^rRhJFtZu4NhDLZ}l&^-| zm^-|69xBrnlVee|rCu!8=Ag%OSel7Oq@kJ^x@u9#=xMV{%tG!$X^dl@Sx6`;QS#Bv zOX>0h%B2h}rtVfQU>FnN_T#J&wP2L@ONq|Ir+H$szh2p zHGP@7!v8-9h96PyZuP1AF(zzbZvq4zcYrfT_E z+%nDaq(?uOLB%ZeS}^RT3&X^@sN-CW{gM#0q;6vv&;XJKri1DPn4#iAT((!tnLmL_ zV3QM2bkSAvaByg|lfZgZy_UuZ6d|UeY4Y8%#tPl)l0F-B6uN){?sb#SHRVuEpnU)V zg(*;#naFAU9Wcq8K8^ETaV=o3M+>TWyfdPs2?Z92KJkr4kH7nC5HIM#X7B^`)g|z6 zSr*g*12A1-e#w8l<#f#j#E^p}KJ=M*j${>Wu-B-eIxfa5p=@4juK+bKp%^U0;_J1R zU|_ZyVnIHRnFhhWcw6V{C;1VEqR?CQO#}9Jhc)xrfzQW4YQd-r+vGA9mcIt*J1u8> z<;n+MpJCWi9Tj%YLp7;jw|GjB7Wav1K35oS&NhPJ`;f)3iGT(~)j& ze0zs*Y-Lo3ZST-wTI8IXo!tsdf?W*33@Npm@q#{20JBObJN-ITnJ_WD4fxXJy)B{V zR`VI~#C5B08=8-Qmx6dQ1*iZ@ZGs{#VN@q*##YYzU%#qhg;riz)UzMO9#4T${S26& zi!oH+Hdgh4;(f4^!EZM+dV!|VE3MAULq~wc9JSwrz~IAERaXbrP%hD zj!`g0O&)Q-(I4bBGdj8ac$cwpX0NplM>0q9>#{O+W}@*muh3Q* zbzh&UHZxuzgarfzM@7+uJMJKz zJSnomt;n>%c1_s2UX??@#y)7ipkdeimy*wa`M*fnhv{F>i)dJXjn20E_Y3~dAO6c5 z7#7L|{y8Fp%dcj)q5H84pH;Ez;D@U=5lYz31)eEVU#W2zgf;3_6Vq537XCT+*J1Hg z%u|bMFHn=@E8MpNO+kEi(!(XA#LDhs>UJ8ceb~IABWlSf9zF6&zL=@LT>qpRGGJ9 zHJO;|=v09S7D8_VgYn=c1v}hDn*l>E#?|(BVJdOT889Yz6Wug5`$6I~@mnbb{|``- zg{mpd`#&5qgq$p@#{boo0-rW~DwkvxAy|MN0`z#VO-xBkOAwHifCs@b*xus)>uXwX zhVUf>MqV<&%b_+HiWN-3X#VhFHQ4KaK4Swq$XAOVB>_X^M9*MWHr#I;Z$eP)7W2r8 z=Y?$rd;%|cOf_ibQ5}o!z^^`n4h2)K4>w5?ILmVnZxiV-SJP$S!P-HsZ-mZn`)RA0 z4|G0rHt<~vV`JXX;((9~b3%d8Mh@>hm!%I=EFgLYL-03m-UNo_rjQU!(nAU)xeWu( zK(&JTK%=;{q=cd0#nx8lj-Zgx{^nf!69PK;q8Ii^sD6Tif?>OTsT9skO@yfo0dp~G z|IPI7+wv007zJ?ikVnAm0gO$-fDku~b)_j!pk3;F$eb%fAFomf#Sp&R0%UDY(&Zlj zBLK*P33*e5+5F?4z{Nxbq{XMPvFjkNt*o@VO|E$QNzlSqa2OaU6%PZm2*5)#^-{Q8 zFg>tW&n4FTe=9@E>?Q|1UpVc=Ueke84P{ux38GJ=ef0T1gIcM3sJBQ%$* z-&~}TYB1^@t{C4SdIr{OXi8wJJEIpYS=Yc0o+%w9B`)3oz2K*(xqgCR*RC}9<6Z~h z=nJF7q+(GCI@u@ zv_#ilw7fyv4hz1dZWu4-{lb8Uje(F;Q#VRcO(Uc}mh%pXc;D z-+9mXKF{<1Kma0sD>T68eEApyS|BqJ1nT`k{Uhn!zLcG36;gkhmE^|i9SS49BPtgG zMH>N2po=O7(8M)JBAA-*qO#~$rw3^2+#P`se%r_A(A{o2DS{bok$Mv;>`6G=Fqt4w zc@a#_`JY={h<9FClfLYrxhHG&wMFr6$(*mR8xg+Q>=60YeGlansDhi36Juk3UuV|< z+XM~_+Cp6cBt8D81F38k1J{C>=WsX>KO34>Z1cxrQb^fE$1Da1pWgpgIHyDK`kT&& z<~R}!sd#NThr@yI$5I+{SPQyPTm=gVGc~d4%Yp)oI2|)&t}a7_#&keF56X6v73rCV zs;cNVdsC$GYPs3jjh7zN8L#Zep_c+;(VqwP;2#XJy_la@(UHBg?`1A+)ai6dn+K`H z&MZpzOcM9WyWm0<_k8xtWE4~LqsI=81+TbZ9{NC{*1 zkx;JpB_-wX>Lj;q`8=oFJOTB?;coCG_uFXXx~a5FW@qm#31u@j@17kZ&VDW{+c0_B>oJ(el&_oPRhwQ0A zZg7QqC!o+U;aoxz81oLut-Vh_!X?hYaMGs*V&eTL@3M#mK}a>YL=t7K!)H4!5&P;% zRsDYMi?>@s9gr2*mU)+Hp)V!g*uX&f!xtM73ts{yl&p3K_FupDdCRNv8Jg9UG`IqP z%0{LYvwtho|9y1Gy;~UyKQA~KaYUDW- z7)WRS=6v49i#k-9{yZ2WUBzA^tMl_1U+G=kEb>#gnwxtwNU``L5KfhqYSu?+J+rfg z1AJRfG-e#|S}Wufgp_rVg!FpNbs2a!*DSt%Vt})7DwEIbD^bacYsJ7x9U`SK{YzdeA{BBxl+EzZL@nM@_pE2pBViPi%pJ<&WKv)+zkJ}y)L^{S4&EI38!ocS-P&1YNJ;_-SXpmxMw LktCrlKBx45hr=HE literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ad92f6766ca05f659f54057123dfaa763a943c7e GIT binary patch literal 22529 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 X$xlecs~dWLbD*NEs?2+7lfeH4$BW?K literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..753f6fc973937e8eafac73692f85d88fb8dfad3b GIT binary patch literal 47453 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 literal 0 HcmV?d00001 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). + +![Rescomb](/images/Rescomb-render.png?raw=true "Rescomb") +![Stabile](/images/Stabile-render.png?raw=true "Stabile") +![Lateralus](/images/Lateralus-render.png?raw=true "Lateralus") +![Debriatus](/images/Debriatus-render.png?raw=true "Debriatus") +![Splie](/images/Splie-render.png?raw=true "Splie") +![Tohe](/images/Tohe-render.png?raw=true "Tohe") +![Trummor](/images/Trummor-render.png?raw=true "Trummor") +![Tangents](/images/Tangents-render.png?raw=true "Tangents") + +*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 0000000000000000000000000000000000000000..aaa7fa093dfeda5ebecbbd679acdfa031b1dbdf9 GIT binary patch literal 27520 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 LktCrlKBx45hr=HE literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ad92f6766ca05f659f54057123dfaa763a943c7e GIT binary patch literal 22529 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 X$xlecs~dWLbD*NEs?2+7lfeH4$BW?K literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..753f6fc973937e8eafac73692f85d88fb8dfad3b GIT binary patch literal 47453 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 literal 0 HcmV?d00001 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