7 #ifndef __zitarevdsp_H__
8 #define __zitarevdsp_H__
48 #define FAUSTFLOAT float
102 virtual void init(
int sample_rate) = 0;
226 #include <xmmintrin.h>
228 #define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8040)
230 #define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8000)
233 #define AVOIDDENORMALS
302 virtual void declare(
const char* key,
const char* value) = 0;
336 #define FAUSTFLOAT float
348 template <
typename REAL>
363 virtual void addButton(
const char* label, REAL* zone) = 0;
365 virtual void addVerticalSlider(
const char* label, REAL* zone, REAL init, REAL min, REAL max, REAL step) = 0;
366 virtual void addHorizontalSlider(
const char* label, REAL* zone, REAL init, REAL min, REAL max, REAL step) = 0;
367 virtual void addNumEntry(
const char* label, REAL* zone, REAL init, REAL min, REAL max, REAL step) = 0;
376 virtual void addSoundfile(
const char* label,
const char* filename, Soundfile** sf_zone) = 0;
380 virtual void declare(REAL* zone,
const char* key,
const char* val) {}
383 struct UI :
public UIReal<FAUSTFLOAT>
415 #ifndef FAUST_PATHBUILDER_H
416 #define FAUST_PATHBUILDER_H
441 std::string res =
"/";
447 std::replace(res.begin(), res.end(),
' ',
'_');
453 std::replace(label.begin(), label.end(),
' ',
'_');
462 #endif // FAUST_PATHBUILDER_H
488 #ifndef __ValueConverter__
489 #define __ValueConverter__
561 Range(
double x,
double y) : fLo(std::min<double>(x,y)), fHi(std::max<double>(x,y)) {}
562 double operator()(
double x) {
return (x<fLo) ? fLo : (x>fHi) ? fHi : x; }
572 Interpolator(
double lo,
double hi,
double v1,
double v2) : fRange(lo,hi)
576 fCoef = (v2-v1)/(hi-lo);
577 fOffset = v1 - lo*fCoef;
586 double x = fRange(v);
587 return fOffset + x*fCoef;
613 fSegment1(lo, mi, v1, vm),
614 fSegment2(mi, hi, vm, v2),
616 double operator()(
double x) {
return (x < fMid) ? fSegment1(x) : fSegment2(x); }
655 virtual void setMappingValues(
double amin,
double amid,
double amax,
double min,
double init,
double max) = 0;
678 fUI2F(umin,umax,fmin,fmax), fF2UI(fmin,fmax,umin,umax)
683 virtual double ui2faust(
double x) {
return fUI2F(x); }
684 virtual double faust2ui(
double x) {
return fF2UI(x); }
702 fUI2F(amin, amid, amax, min, init, max), fF2UI(min, init, max, amin, amid, amax)
705 LinearValueConverter2() : fUI2F(0.,0.,0.,0.,0.,0.), fF2UI(0.,0.,0.,0.,0.,0.)
708 virtual double ui2faust(
double x) {
return fUI2F(x); }
709 virtual double faust2ui(
double x) {
return fF2UI(x); }
711 virtual void setMappingValues(
double amin,
double amid,
double amax,
double min,
double init,
double max)
733 LinearValueConverter(umin, umax, std::log(std::max<double>(DBL_MIN, fmin)), std::log(std::max<double>(DBL_MIN, fmax)))
750 LinearValueConverter(umin, umax, std::min<double>(DBL_MAX, std::exp(fmin)), std::min<double>(DBL_MAX, std::exp(fmax)))
772 AccUpConverter(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax) :
773 fA2F(amin,amid,amax,fmin,fmid,fmax),
774 fF2A(fmin,fmid,fmax,amin,amid,amax)
777 virtual double ui2faust(
double x) {
return fA2F(x); }
778 virtual double faust2ui(
double x) {
return fF2A(x); }
780 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
808 AccDownConverter(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax) :
809 fA2F(amin,amid,amax,fmax,fmid,fmin),
810 fF2A(fmin,fmid,fmax,amax,amid,amin)
813 virtual double ui2faust(
double x) {
return fA2F(x); }
814 virtual double faust2ui(
double x) {
return fF2A(x); }
816 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
844 fA2F(amin,amid,amax,fmin,fmax,fmin),
845 fF2A(fmin,fmax,amin,amax)
848 virtual double ui2faust(
double x) {
return fA2F(x); }
849 virtual double faust2ui(
double x) {
return fF2A(x); }
851 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
879 fA2F(amin,amid,amax,fmax,fmin,fmax),
880 fF2A(fmin,fmax,amin,amax)
883 virtual double ui2faust(
double x) {
return fA2F(x); }
884 virtual double faust2ui(
double x) {
return fF2A(x); }
886 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
916 virtual void setMappingValues(
int curve,
double amin,
double amid,
double amax,
double min,
double init,
double max) {}
958 std::vector<UpdatableValueConverter*> fValueConverters;
965 assert(curve >= 0 && curve <= 3);
966 fValueConverters.push_back(
new AccUpConverter(amin, amid, amax, min, init, max));
967 fValueConverters.push_back(
new AccDownConverter(amin, amid, amax, min, init, max));
974 std::vector<UpdatableValueConverter*>::iterator it;
975 for (it = fValueConverters.begin(); it != fValueConverters.end(); it++) {
979 void update(
double v)
const {
if (fValueConverters[fCurve]->
getActive()) *
fZone = fValueConverters[fCurve]->ui2faust(v); }
981 void setMappingValues(
int curve,
double amin,
double amid,
double amax,
double min,
double init,
double max)
983 fValueConverters[curve]->setMappingValues(amin, amid, amax, min, init, max);
989 fValueConverters[fCurve]->getMappingValues(amin, amid, amax);
994 std::vector<UpdatableValueConverter*>::iterator it;
995 for (it = fValueConverters.begin(); it != fValueConverters.end(); it++) {
996 (*it)->setActive(on_off);
1019 return (fZone !=
nullptr) ? int(fInterpolator(*fZone)) : 127;
1038 std::vector<std::string>
fPaths;
1039 std::vector<std::string>
fLabels;
1040 std::map<std::string, int>
fPathMap;
1043 std::vector<FAUSTFLOAT*>
fZone;
1044 std::vector<FAUSTFLOAT>
fInit;
1045 std::vector<FAUSTFLOAT>
fMin;
1046 std::vector<FAUSTFLOAT>
fMax;
1047 std::vector<FAUSTFLOAT>
fStep;
1049 std::vector<std::map<std::string, std::string> >
fMetaData;
1050 std::vector<ZoneControl*>
fAcc[3];
1051 std::vector<ZoneControl*>
fGyr[3];
1082 fZone.push_back(zone);
1083 fInit.push_back(init);
1084 fMin.push_back(min);
1085 fMax.push_back(max);
1086 fStep.push_back(step);
1103 std::cerr <<
"warning : 'acc' and 'gyr' metadata used for the same " << label <<
" parameter !!\n";
1110 double amin, amid, amax;
1111 iss >> axe >> curve >> amin >> amid >> amax;
1113 if ((0 <= axe) && (axe < 3) &&
1114 (0 <= curve) && (curve < 4) &&
1115 (amin < amax) && (amin <= amid) && (amid <= amax))
1119 std::cerr <<
"incorrect acc metadata : " <<
fCurrentAcc << std::endl;
1128 double amin, amid, amax;
1129 iss >> axe >> curve >> amin >> amid >> amax;
1131 if ((0 <= axe) && (axe < 3) &&
1132 (0 <= curve) && (curve < 4) &&
1133 (amin < amax) && (amin <= amid) && (amid <= amax))
1137 std::cerr <<
"incorrect gyr metadata : " <<
fCurrentGyr << std::endl;
1159 std::cerr <<
"incorrect screencolor metadata : " <<
fCurrentColor << std::endl;
1171 for (
size_t i = 0; i < table[val].size(); i++) {
1172 if (zone == table[val][i]->getZone())
return int(i);
1177 void setConverter(std::vector<ZoneControl*>* table,
int p,
int val,
int curve,
double amin,
double amid,
double amax)
1184 if (id1 != -1) table[0][id1]->setActive(
false);
1185 if (id2 != -1) table[1][id2]->setActive(
false);
1186 if (id3 != -1) table[2][id3]->setActive(
false);
1194 table[val][id4]->setMappingValues(curve, amin, amid, amax,
fMin[p],
fInit[p],
fMax[p]);
1195 table[val][id4]->setActive(
true);
1204 void getConverter(std::vector<ZoneControl*>* table,
int p,
int& val,
int& curve,
double& amin,
double& amid,
double& amax)
1212 curve = table[val][id1]->getCurve();
1213 table[val][id1]->getMappingValues(amin, amid, amax);
1214 }
else if (id2 != -1) {
1216 curve = table[val][id2]->getCurve();
1217 table[val][id2]->getMappingValues(amin, amid, amax);
1218 }
else if (id3 != -1) {
1220 curve = table[val][id3]->getCurve();
1221 table[val][id3]->getMappingValues(amin, amid, amax);
1241 for (
int i = 0; i < 3; i++) {
1242 for (
auto& it :
fAcc[i])
delete it;
1243 for (
auto& it :
fGyr[i])
delete it;
1298 virtual void addSoundfile(
const char* label,
const char* filename, Soundfile** sf_zone) {}
1307 if (strcmp(key,
"scale") == 0) {
1308 if (strcmp(val,
"log") == 0) {
1310 }
else if (strcmp(val,
"exp") == 0) {
1315 }
else if (strcmp(key,
"unit") == 0) {
1317 }
else if (strcmp(key,
"acc") == 0) {
1319 }
else if (strcmp(key,
"gyr") == 0) {
1321 }
else if (strcmp(key,
"screencolor") == 0) {
1323 }
else if (strcmp(key,
"tooltip") == 0) {
1328 virtual void declare(
const char* key,
const char* val)
1349 std::map<const char*, const char*> res;
1350 std::map<std::string, std::string> metadata =
fMetaData[p];
1351 for (
auto it : metadata) {
1352 res[it.first.c_str()] = it.second.c_str();
1420 for (
size_t i = 0; i <
fAcc[acc].size(); i++) {
1421 fAcc[acc][i]->update(value);
1468 void getAccConverter(
int p,
int& acc,
int& curve,
double& amin,
double& amid,
double& amax)
1484 void getGyrConverter(
int p,
int& gyr,
int& curve,
double& amin,
double& amid,
double& amax)
1498 for (
size_t i = 0; i <
fGyr[gyr].size(); i++) {
1499 fGyr[gyr][i]->update(value);
1512 return (acc >= 0 && acc < 3) ? int(
fAcc[acc].size()) : 0;
1524 return (gyr >= 0 && gyr < 3) ? int(
fGyr[gyr].size()) : 0;
1535 return (r<<16) | (g<<8) | b;
1555 #define FAUSTFLOAT float
1558 #include <algorithm>
1562 static float zitarevdsp_faustpower2_f(
float value) {
1563 return (value * value);
1567 #define FAUSTCLASS zitarevdsp
1571 #define exp10f __exp10f
1572 #define exp10 __exp10
1644 float fVec10[16384];
1654 float fVec12[16384];
1664 float fVec14[16384];
1674 float fVec16[16384];
1696 m->
declare(
"basics.lib/name",
"Faust Basic Element Library");
1697 m->
declare(
"basics.lib/version",
"0.1");
1698 m->
declare(
"delays.lib/name",
"Faust Delay Library");
1699 m->
declare(
"delays.lib/version",
"0.1");
1700 m->
declare(
"filename",
"zitarevdsp.dsp");
1701 m->
declare(
"filters.lib/allpass_comb:author",
"Julius O. Smith III");
1702 m->
declare(
"filters.lib/allpass_comb:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1703 m->
declare(
"filters.lib/allpass_comb:license",
"MIT-style STK-4.3 license");
1704 m->
declare(
"filters.lib/fir:author",
"Julius O. Smith III");
1705 m->
declare(
"filters.lib/fir:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1706 m->
declare(
"filters.lib/fir:license",
"MIT-style STK-4.3 license");
1707 m->
declare(
"filters.lib/iir:author",
"Julius O. Smith III");
1708 m->
declare(
"filters.lib/iir:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1709 m->
declare(
"filters.lib/iir:license",
"MIT-style STK-4.3 license");
1710 m->
declare(
"filters.lib/lowpass0_highpass1",
"MIT-style STK-4.3 license");
1711 m->
declare(
"filters.lib/lowpass0_highpass1:author",
"Julius O. Smith III");
1712 m->
declare(
"filters.lib/lowpass:author",
"Julius O. Smith III");
1713 m->
declare(
"filters.lib/lowpass:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1714 m->
declare(
"filters.lib/lowpass:license",
"MIT-style STK-4.3 license");
1715 m->
declare(
"filters.lib/name",
"Faust Filters Library");
1716 m->
declare(
"filters.lib/peak_eq_rm:author",
"Julius O. Smith III");
1717 m->
declare(
"filters.lib/peak_eq_rm:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1718 m->
declare(
"filters.lib/peak_eq_rm:license",
"MIT-style STK-4.3 license");
1719 m->
declare(
"filters.lib/tf1:author",
"Julius O. Smith III");
1720 m->
declare(
"filters.lib/tf1:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1721 m->
declare(
"filters.lib/tf1:license",
"MIT-style STK-4.3 license");
1722 m->
declare(
"filters.lib/tf1s:author",
"Julius O. Smith III");
1723 m->
declare(
"filters.lib/tf1s:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1724 m->
declare(
"filters.lib/tf1s:license",
"MIT-style STK-4.3 license");
1725 m->
declare(
"filters.lib/tf2:author",
"Julius O. Smith III");
1726 m->
declare(
"filters.lib/tf2:copyright",
"Copyright (C) 2003-2019 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1727 m->
declare(
"filters.lib/tf2:license",
"MIT-style STK-4.3 license");
1728 m->
declare(
"maths.lib/author",
"GRAME");
1729 m->
declare(
"maths.lib/copyright",
"GRAME");
1730 m->
declare(
"maths.lib/license",
"LGPL with exception");
1731 m->
declare(
"maths.lib/name",
"Faust Math Library");
1732 m->
declare(
"maths.lib/version",
"2.3");
1733 m->
declare(
"name",
"zitarevdsp");
1734 m->
declare(
"platform.lib/name",
"Generic Platform Library");
1735 m->
declare(
"platform.lib/version",
"0.1");
1736 m->
declare(
"reverbs.lib/name",
"Faust Reverb Library");
1737 m->
declare(
"reverbs.lib/version",
"0.0");
1738 m->
declare(
"routes.lib/name",
"Faust Signal Routing Library");
1739 m->
declare(
"routes.lib/version",
"0.2");
1740 m->
declare(
"signals.lib/name",
"Faust Signal Routing Library");
1741 m->
declare(
"signals.lib/version",
"0.0");
1752 switch ((channel)) {
1770 switch ((channel)) {
1791 fSampleRate = sample_rate;
1792 fConst0 = std::min<float>(192000.0f, std::max<float>(1.0f,
float(fSampleRate)));
1793 fConst1 = (6.28318548f / fConst0);
1794 fConst2 = std::floor(((0.219990999f * fConst0) + 0.5f));
1795 fConst3 = ((0.0f - (6.90775537f * fConst2)) / fConst0);
1796 fConst4 = (3.14159274f / fConst0);
1797 fConst5 = std::floor(((0.0191229992f * fConst0) + 0.5f));
1798 iConst6 = int(std::min<float>(16384.0f, std::max<float>(0.0f, (fConst2 - fConst5))));
1799 fConst7 = (0.00100000005f * fConst0);
1800 iConst8 = int(std::min<float>(1024.0f, std::max<float>(0.0f, (fConst5 + -1.0f))));
1801 fConst9 = std::floor(((0.256891012f * fConst0) + 0.5f));
1802 fConst10 = ((0.0f - (6.90775537f * fConst9)) / fConst0);
1803 fConst11 = std::floor(((0.0273330007f * fConst0) + 0.5f));
1804 iConst12 = int(std::min<float>(16384.0f, std::max<float>(0.0f, (fConst9 - fConst11))));
1805 iConst13 = int(std::min<float>(2048.0f, std::max<float>(0.0f, (fConst11 + -1.0f))));
1806 fConst14 = std::floor(((0.192303002f * fConst0) + 0.5f));
1807 fConst15 = ((0.0f - (6.90775537f * fConst14)) / fConst0);
1808 fConst16 = std::floor(((0.0292910002f * fConst0) + 0.5f));
1809 iConst17 = int(std::min<float>(8192.0f, std::max<float>(0.0f, (fConst14 - fConst16))));
1810 iConst18 = int(std::min<float>(2048.0f, std::max<float>(0.0f, (fConst16 + -1.0f))));
1811 fConst19 = std::floor(((0.210389003f * fConst0) + 0.5f));
1812 fConst20 = ((0.0f - (6.90775537f * fConst19)) / fConst0);
1813 fConst21 = std::floor(((0.0244210009f * fConst0) + 0.5f));
1814 iConst22 = int(std::min<float>(16384.0f, std::max<float>(0.0f, (fConst19 - fConst21))));
1815 iConst23 = int(std::min<float>(2048.0f, std::max<float>(0.0f, (fConst21 + -1.0f))));
1816 fConst24 = std::floor(((0.125f * fConst0) + 0.5f));
1817 fConst25 = ((0.0f - (6.90775537f * fConst24)) / fConst0);
1818 fConst26 = std::floor(((0.0134579996f * fConst0) + 0.5f));
1819 iConst27 = int(std::min<float>(8192.0f, std::max<float>(0.0f, (fConst24 - fConst26))));
1820 iConst28 = int(std::min<float>(1024.0f, std::max<float>(0.0f, (fConst26 + -1.0f))));
1821 fConst29 = std::floor(((0.127837002f * fConst0) + 0.5f));
1822 fConst30 = ((0.0f - (6.90775537f * fConst29)) / fConst0);
1823 fConst31 = std::floor(((0.0316039994f * fConst0) + 0.5f));
1824 iConst32 = int(std::min<float>(8192.0f, std::max<float>(0.0f, (fConst29 - fConst31))));
1825 iConst33 = int(std::min<float>(2048.0f, std::max<float>(0.0f, (fConst31 + -1.0f))));
1826 fConst34 = std::floor(((0.174713001f * fConst0) + 0.5f));
1827 fConst35 = ((0.0f - (6.90775537f * fConst34)) / fConst0);
1828 fConst36 = std::floor(((0.0229039993f * fConst0) + 0.5f));
1829 iConst37 = int(std::min<float>(8192.0f, std::max<float>(0.0f, (fConst34 - fConst36))));
1830 iConst38 = int(std::min<float>(2048.0f, std::max<float>(0.0f, (fConst36 + -1.0f))));
1831 fConst39 = std::floor(((0.153128996f * fConst0) + 0.5f));
1832 fConst40 = ((0.0f - (6.90775537f * fConst39)) / fConst0);
1833 fConst41 = std::floor(((0.0203460008f * fConst0) + 0.5f));
1834 iConst42 = int(std::min<float>(8192.0f, std::max<float>(0.0f, (fConst39 - fConst41))));
1835 iConst43 = int(std::min<float>(1024.0f, std::max<float>(0.0f, (fConst41 + -1.0f))));
1854 for (
int l0 = 0; (l0 < 16384); l0 = (l0 + 1)) {
1857 for (
int l1 = 0; (l1 < 16384); l1 = (l1 + 1)) {
1860 for (
int l2 = 0; (l2 < 2); l2 = (l2 + 1)) {
1863 for (
int l3 = 0; (l3 < 2); l3 = (l3 + 1)) {
1866 for (
int l4 = 0; (l4 < 2); l4 = (l4 + 1)) {
1869 for (
int l5 = 0; (l5 < 2); l5 = (l5 + 1)) {
1872 for (
int l6 = 0; (l6 < 32768); l6 = (l6 + 1)) {
1875 for (
int l7 = 0; (l7 < 2048); l7 = (l7 + 1)) {
1878 for (
int l8 = 0; (l8 < 2); l8 = (l8 + 1)) {
1881 for (
int l9 = 0; (l9 < 2); l9 = (l9 + 1)) {
1884 for (
int l10 = 0; (l10 < 2); l10 = (l10 + 1)) {
1887 for (
int l11 = 0; (l11 < 32768); l11 = (l11 + 1)) {
1890 for (
int l12 = 0; (l12 < 4096); l12 = (l12 + 1)) {
1893 for (
int l13 = 0; (l13 < 2); l13 = (l13 + 1)) {
1896 for (
int l14 = 0; (l14 < 2); l14 = (l14 + 1)) {
1899 for (
int l15 = 0; (l15 < 2); l15 = (l15 + 1)) {
1902 for (
int l16 = 0; (l16 < 16384); l16 = (l16 + 1)) {
1905 for (
int l17 = 0; (l17 < 4096); l17 = (l17 + 1)) {
1908 for (
int l18 = 0; (l18 < 2); l18 = (l18 + 1)) {
1911 for (
int l19 = 0; (l19 < 2); l19 = (l19 + 1)) {
1914 for (
int l20 = 0; (l20 < 2); l20 = (l20 + 1)) {
1917 for (
int l21 = 0; (l21 < 32768); l21 = (l21 + 1)) {
1920 for (
int l22 = 0; (l22 < 4096); l22 = (l22 + 1)) {
1923 for (
int l23 = 0; (l23 < 2); l23 = (l23 + 1)) {
1926 for (
int l24 = 0; (l24 < 2); l24 = (l24 + 1)) {
1929 for (
int l25 = 0; (l25 < 2); l25 = (l25 + 1)) {
1932 for (
int l26 = 0; (l26 < 16384); l26 = (l26 + 1)) {
1935 for (
int l27 = 0; (l27 < 2048); l27 = (l27 + 1)) {
1938 for (
int l28 = 0; (l28 < 2); l28 = (l28 + 1)) {
1941 for (
int l29 = 0; (l29 < 2); l29 = (l29 + 1)) {
1944 for (
int l30 = 0; (l30 < 2); l30 = (l30 + 1)) {
1947 for (
int l31 = 0; (l31 < 16384); l31 = (l31 + 1)) {
1950 for (
int l32 = 0; (l32 < 4096); l32 = (l32 + 1)) {
1953 for (
int l33 = 0; (l33 < 2); l33 = (l33 + 1)) {
1956 for (
int l34 = 0; (l34 < 2); l34 = (l34 + 1)) {
1959 for (
int l35 = 0; (l35 < 2); l35 = (l35 + 1)) {
1962 for (
int l36 = 0; (l36 < 16384); l36 = (l36 + 1)) {
1965 for (
int l37 = 0; (l37 < 4096); l37 = (l37 + 1)) {
1968 for (
int l38 = 0; (l38 < 2); l38 = (l38 + 1)) {
1971 for (
int l39 = 0; (l39 < 2); l39 = (l39 + 1)) {
1974 for (
int l40 = 0; (l40 < 2); l40 = (l40 + 1)) {
1977 for (
int l41 = 0; (l41 < 16384); l41 = (l41 + 1)) {
1980 for (
int l42 = 0; (l42 < 2048); l42 = (l42 + 1)) {
1983 for (
int l43 = 0; (l43 < 2); l43 = (l43 + 1)) {
1986 for (
int l44 = 0; (l44 < 3); l44 = (l44 + 1)) {
1989 for (
int l45 = 0; (l45 < 3); l45 = (l45 + 1)) {
1992 for (
int l46 = 0; (l46 < 3); l46 = (l46 + 1)) {
1995 for (
int l47 = 0; (l47 < 3); l47 = (l47 + 1)) {
1998 for (
int l48 = 0; (l48 < 3); l48 = (l48 + 1)) {
2001 for (
int l49 = 0; (l49 < 3); l49 = (l49 + 1)) {
2004 for (
int l50 = 0; (l50 < 3); l50 = (l50 + 1)) {
2007 for (
int l51 = 0; (l51 < 3); l51 = (l51 + 1)) {
2010 for (
int l52 = 0; (l52 < 3); l52 = (l52 + 1)) {
2013 for (
int l53 = 0; (l53 < 3); l53 = (l53 + 1)) {
2016 for (
int l54 = 0; (l54 < 3); l54 = (l54 + 1)) {
2019 for (
int l55 = 0; (l55 < 3); l55 = (l55 + 1)) {
2024 virtual void init(
int sample_rate) {
2043 ui_interface->
declare(0,
"0",
"");
2044 ui_interface->
declare(0,
"tooltip",
"~ ZITA REV1 FEEDBACK DELAY NETWORK (FDN) & SCHROEDER ALLPASS-COMB REVERBERATOR (8x8). See Faust's reverbs.lib for documentation and references");
2046 ui_interface->
declare(0,
"1",
"");
2048 ui_interface->
declare(&fVslider10,
"1",
"");
2049 ui_interface->
declare(&fVslider10,
"style",
"knob");
2050 ui_interface->
declare(&fVslider10,
"tooltip",
"Delay in ms before reverberation begins");
2051 ui_interface->
declare(&fVslider10,
"unit",
"ms");
2052 ui_interface->
addVerticalSlider(
"In Delay", &fVslider10, 60.0f, 20.0f, 100.0f, 1.0f);
2054 ui_interface->
declare(0,
"2",
"");
2056 ui_interface->
declare(&fVslider9,
"1",
"");
2057 ui_interface->
declare(&fVslider9,
"scale",
"log");
2058 ui_interface->
declare(&fVslider9,
"style",
"knob");
2059 ui_interface->
declare(&fVslider9,
"tooltip",
"Crossover frequency (Hz) separating low and middle frequencies");
2060 ui_interface->
declare(&fVslider9,
"unit",
"Hz");
2061 ui_interface->
addVerticalSlider(
"LF X", &fVslider9, 200.0f, 50.0f, 1000.0f, 1.0f);
2062 ui_interface->
declare(&fVslider8,
"2",
"");
2063 ui_interface->
declare(&fVslider8,
"scale",
"log");
2064 ui_interface->
declare(&fVslider8,
"style",
"knob");
2065 ui_interface->
declare(&fVslider8,
"tooltip",
"T60 = time (in seconds) to decay 60dB in low-frequency band");
2066 ui_interface->
declare(&fVslider8,
"unit",
"s");
2067 ui_interface->
addVerticalSlider(
"Low RT60", &fVslider8, 3.0f, 1.0f, 8.0f, 0.100000001f);
2068 ui_interface->
declare(&fVslider6,
"3",
"");
2069 ui_interface->
declare(&fVslider6,
"scale",
"log");
2070 ui_interface->
declare(&fVslider6,
"style",
"knob");
2071 ui_interface->
declare(&fVslider6,
"tooltip",
"T60 = time (in seconds) to decay 60dB in middle band");
2072 ui_interface->
declare(&fVslider6,
"unit",
"s");
2073 ui_interface->
addVerticalSlider(
"Mid RT60", &fVslider6, 2.0f, 1.0f, 8.0f, 0.100000001f);
2074 ui_interface->
declare(&fVslider7,
"4",
"");
2075 ui_interface->
declare(&fVslider7,
"scale",
"log");
2076 ui_interface->
declare(&fVslider7,
"style",
"knob");
2077 ui_interface->
declare(&fVslider7,
"tooltip",
"Frequency (Hz) at which the high-frequency T60 is half the middle-band's T60");
2078 ui_interface->
declare(&fVslider7,
"unit",
"Hz");
2079 ui_interface->
addVerticalSlider(
"HF Damping", &fVslider7, 6000.0f, 1500.0f, 23520.0f, 1.0f);
2081 ui_interface->
declare(0,
"3",
"");
2083 ui_interface->
declare(&fVslider4,
"1",
"");
2084 ui_interface->
declare(&fVslider4,
"scale",
"log");
2085 ui_interface->
declare(&fVslider4,
"style",
"knob");
2086 ui_interface->
declare(&fVslider4,
"tooltip",
"Center-frequency of second-order Regalia-Mitra peaking equalizer section 1");
2087 ui_interface->
declare(&fVslider4,
"unit",
"Hz");
2088 ui_interface->
addVerticalSlider(
"Eq1 Freq", &fVslider4, 315.0f, 40.0f, 2500.0f, 1.0f);
2089 ui_interface->
declare(&fVslider5,
"2",
"");
2090 ui_interface->
declare(&fVslider5,
"style",
"knob");
2091 ui_interface->
declare(&fVslider5,
"tooltip",
"Peak level in dB of second-order Regalia-Mitra peaking equalizer section 1");
2092 ui_interface->
declare(&fVslider5,
"unit",
"dB");
2093 ui_interface->
addVerticalSlider(
"Eq1 Level", &fVslider5, 0.0f, -15.0f, 15.0f, 0.100000001f);
2095 ui_interface->
declare(0,
"4",
"");
2097 ui_interface->
declare(&fVslider2,
"1",
"");
2098 ui_interface->
declare(&fVslider2,
"scale",
"log");
2099 ui_interface->
declare(&fVslider2,
"style",
"knob");
2100 ui_interface->
declare(&fVslider2,
"tooltip",
"Center-frequency of second-order Regalia-Mitra peaking equalizer section 2");
2101 ui_interface->
declare(&fVslider2,
"unit",
"Hz");
2102 ui_interface->
addVerticalSlider(
"Eq2 Freq", &fVslider2, 1500.0f, 160.0f, 10000.0f, 1.0f);
2103 ui_interface->
declare(&fVslider3,
"2",
"");
2104 ui_interface->
declare(&fVslider3,
"style",
"knob");
2105 ui_interface->
declare(&fVslider3,
"tooltip",
"Peak level in dB of second-order Regalia-Mitra peaking equalizer section 2");
2106 ui_interface->
declare(&fVslider3,
"unit",
"dB");
2107 ui_interface->
addVerticalSlider(
"Eq2 Level", &fVslider3, 0.0f, -15.0f, 15.0f, 0.100000001f);
2109 ui_interface->
declare(0,
"5",
"");
2111 ui_interface->
declare(&fVslider1,
"1",
"");
2112 ui_interface->
declare(&fVslider1,
"style",
"knob");
2113 ui_interface->
declare(&fVslider1,
"tooltip",
"Dry/Wet Mix: 0 = dry, 1 = wet");
2114 ui_interface->
addVerticalSlider(
"Wet", &fVslider1, 0.0f, 0.0f, 1.0f, 0.00999999978f);
2115 ui_interface->
declare(&fVslider0,
"2",
"");
2116 ui_interface->
declare(&fVslider0,
"style",
"knob");
2117 ui_interface->
declare(&fVslider0,
"tooltip",
"Output scale factor");
2118 ui_interface->
declare(&fVslider0,
"unit",
"dB");
2119 ui_interface->
addVerticalSlider(
"Level", &fVslider0, -3.0f, -70.0f, 20.0f, 0.100000001f);
2129 float fSlow0 = (0.00100000005f * std::pow(10.0f, (0.0500000007f *
float(fVslider0))));
2130 float fSlow1 = (0.00100000005f * float(fVslider1));
2131 float fSlow2 = float(fVslider2);
2132 float fSlow3 = std::pow(10.0f, (0.0500000007f *
float(fVslider3)));
2133 float fSlow4 = (fConst1 * (fSlow2 / std::sqrt(std::max<float>(0.0f, fSlow3))));
2134 float fSlow5 = ((1.0f - fSlow4) / (fSlow4 + 1.0f));
2135 float fSlow6 = float(fVslider4);
2136 float fSlow7 = std::pow(10.0f, (0.0500000007f *
float(fVslider5)));
2137 float fSlow8 = (fConst1 * (fSlow6 / std::sqrt(std::max<float>(0.0f, fSlow7))));
2138 float fSlow9 = ((1.0f - fSlow8) / (fSlow8 + 1.0f));
2139 float fSlow10 = float(fVslider6);
2140 float fSlow11 = std::exp((fConst3 / fSlow10));
2141 float fSlow12 = zitarevdsp_faustpower2_f(fSlow11);
2142 float fSlow13 = std::cos((fConst1 *
float(fVslider7)));
2143 float fSlow14 = (1.0f - (fSlow12 * fSlow13));
2144 float fSlow15 = (1.0f - fSlow12);
2145 float fSlow16 = (fSlow14 / fSlow15);
2146 float fSlow17 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow14) / zitarevdsp_faustpower2_f(fSlow15)) + -1.0f)));
2147 float fSlow18 = (fSlow16 - fSlow17);
2148 float fSlow19 = (fSlow11 * (fSlow17 + (1.0f - fSlow16)));
2149 float fSlow20 = float(fVslider8);
2150 float fSlow21 = ((std::exp((fConst3 / fSlow20)) / fSlow11) + -1.0f);
2151 float fSlow22 = (1.0f / std::tan((fConst4 *
float(fVslider9))));
2152 float fSlow23 = (1.0f / (fSlow22 + 1.0f));
2153 float fSlow24 = (1.0f - fSlow22);
2154 int iSlow25 = int(std::min<float>(8192.0f, std::max<float>(0.0f, (fConst7 *
float(fVslider10)))));
2155 float fSlow26 = std::exp((fConst10 / fSlow10));
2156 float fSlow27 = zitarevdsp_faustpower2_f(fSlow26);
2157 float fSlow28 = (1.0f - (fSlow27 * fSlow13));
2158 float fSlow29 = (1.0f - fSlow27);
2159 float fSlow30 = (fSlow28 / fSlow29);
2160 float fSlow31 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow28) / zitarevdsp_faustpower2_f(fSlow29)) + -1.0f)));
2161 float fSlow32 = (fSlow30 - fSlow31);
2162 float fSlow33 = (fSlow26 * (fSlow31 + (1.0f - fSlow30)));
2163 float fSlow34 = ((std::exp((fConst10 / fSlow20)) / fSlow26) + -1.0f);
2164 float fSlow35 = std::exp((fConst15 / fSlow10));
2165 float fSlow36 = zitarevdsp_faustpower2_f(fSlow35);
2166 float fSlow37 = (1.0f - (fSlow36 * fSlow13));
2167 float fSlow38 = (1.0f - fSlow36);
2168 float fSlow39 = (fSlow37 / fSlow38);
2169 float fSlow40 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow37) / zitarevdsp_faustpower2_f(fSlow38)) + -1.0f)));
2170 float fSlow41 = (fSlow39 - fSlow40);
2171 float fSlow42 = (fSlow35 * (fSlow40 + (1.0f - fSlow39)));
2172 float fSlow43 = ((std::exp((fConst15 / fSlow20)) / fSlow35) + -1.0f);
2173 float fSlow44 = std::exp((fConst20 / fSlow10));
2174 float fSlow45 = zitarevdsp_faustpower2_f(fSlow44);
2175 float fSlow46 = (1.0f - (fSlow45 * fSlow13));
2176 float fSlow47 = (1.0f - fSlow45);
2177 float fSlow48 = (fSlow46 / fSlow47);
2178 float fSlow49 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow46) / zitarevdsp_faustpower2_f(fSlow47)) + -1.0f)));
2179 float fSlow50 = (fSlow48 - fSlow49);
2180 float fSlow51 = (fSlow44 * (fSlow49 + (1.0f - fSlow48)));
2181 float fSlow52 = ((std::exp((fConst20 / fSlow20)) / fSlow44) + -1.0f);
2182 float fSlow53 = std::exp((fConst25 / fSlow10));
2183 float fSlow54 = zitarevdsp_faustpower2_f(fSlow53);
2184 float fSlow55 = (1.0f - (fSlow54 * fSlow13));
2185 float fSlow56 = (1.0f - fSlow54);
2186 float fSlow57 = (fSlow55 / fSlow56);
2187 float fSlow58 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow55) / zitarevdsp_faustpower2_f(fSlow56)) + -1.0f)));
2188 float fSlow59 = (fSlow57 - fSlow58);
2189 float fSlow60 = (fSlow53 * (fSlow58 + (1.0f - fSlow57)));
2190 float fSlow61 = ((std::exp((fConst25 / fSlow20)) / fSlow53) + -1.0f);
2191 float fSlow62 = std::exp((fConst30 / fSlow10));
2192 float fSlow63 = zitarevdsp_faustpower2_f(fSlow62);
2193 float fSlow64 = (1.0f - (fSlow63 * fSlow13));
2194 float fSlow65 = (1.0f - fSlow63);
2195 float fSlow66 = (fSlow64 / fSlow65);
2196 float fSlow67 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow64) / zitarevdsp_faustpower2_f(fSlow65)) + -1.0f)));
2197 float fSlow68 = (fSlow66 - fSlow67);
2198 float fSlow69 = (fSlow62 * (fSlow67 + (1.0f - fSlow66)));
2199 float fSlow70 = ((std::exp((fConst30 / fSlow20)) / fSlow62) + -1.0f);
2200 float fSlow71 = std::exp((fConst35 / fSlow10));
2201 float fSlow72 = zitarevdsp_faustpower2_f(fSlow71);
2202 float fSlow73 = (1.0f - (fSlow72 * fSlow13));
2203 float fSlow74 = (1.0f - fSlow72);
2204 float fSlow75 = (fSlow73 / fSlow74);
2205 float fSlow76 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow73) / zitarevdsp_faustpower2_f(fSlow74)) + -1.0f)));
2206 float fSlow77 = (fSlow75 - fSlow76);
2207 float fSlow78 = (fSlow71 * (fSlow76 + (1.0f - fSlow75)));
2208 float fSlow79 = ((std::exp((fConst35 / fSlow20)) / fSlow71) + -1.0f);
2209 float fSlow80 = std::exp((fConst40 / fSlow10));
2210 float fSlow81 = zitarevdsp_faustpower2_f(fSlow80);
2211 float fSlow82 = (1.0f - (fSlow81 * fSlow13));
2212 float fSlow83 = (1.0f - fSlow81);
2213 float fSlow84 = (fSlow82 / fSlow83);
2214 float fSlow85 = std::sqrt(std::max<float>(0.0f, ((zitarevdsp_faustpower2_f(fSlow82) / zitarevdsp_faustpower2_f(fSlow83)) + -1.0f)));
2215 float fSlow86 = (fSlow84 - fSlow85);
2216 float fSlow87 = (fSlow80 * (fSlow85 + (1.0f - fSlow84)));
2217 float fSlow88 = ((std::exp((fConst40 / fSlow20)) / fSlow80) + -1.0f);
2218 float fSlow89 = (0.0f - (std::cos((fConst1 * fSlow6)) * (fSlow9 + 1.0f)));
2219 float fSlow90 = (0.0f - (std::cos((fConst1 * fSlow2)) * (fSlow5 + 1.0f)));
2220 for (
int i = 0; (i < count); i = (i + 1)) {
2221 float fTemp0 = float(input0[i]);
2222 fVec0[(IOTA & 16383)] = fTemp0;
2223 float fTemp1 = float(input1[i]);
2224 fVec1[(IOTA & 16383)] = fTemp1;
2225 fRec0[0] = (fSlow0 + (0.999000013f * fRec0[1]));
2226 fRec1[0] = (fSlow1 + (0.999000013f * fRec1[1]));
2227 fRec15[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec15[1]) - (fRec11[1] + fRec11[2]))));
2228 fRec14[0] = ((fSlow18 * fRec14[1]) + (fSlow19 * (fRec11[1] + (fSlow21 * fRec15[0]))));
2229 fVec2[(IOTA & 32767)] = ((0.353553385f * fRec14[0]) + 9.99999968e-21f);
2230 float fTemp2 = (0.300000012f * fVec1[((IOTA - iSlow25) & 16383)]);
2231 float fTemp3 = (((0.600000024f * fRec12[1]) + fVec2[((IOTA - iConst6) & 32767)]) - fTemp2);
2232 fVec3[(IOTA & 2047)] = fTemp3;
2233 fRec12[0] = fVec3[((IOTA - iConst8) & 2047)];
2234 float fRec13 = (0.0f - (0.600000024f * fTemp3));
2235 fRec19[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec19[1]) - (fRec7[1] + fRec7[2]))));
2236 fRec18[0] = ((fSlow32 * fRec18[1]) + (fSlow33 * (fRec7[1] + (fSlow34 * fRec19[0]))));
2237 fVec4[(IOTA & 32767)] = ((0.353553385f * fRec18[0]) + 9.99999968e-21f);
2238 float fTemp4 = (((0.600000024f * fRec16[1]) + fVec4[((IOTA - iConst12) & 32767)]) - fTemp2);
2239 fVec5[(IOTA & 4095)] = fTemp4;
2240 fRec16[0] = fVec5[((IOTA - iConst13) & 4095)];
2241 float fRec17 = (0.0f - (0.600000024f * fTemp4));
2242 fRec23[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec23[1]) - (fRec9[1] + fRec9[2]))));
2243 fRec22[0] = ((fSlow41 * fRec22[1]) + (fSlow42 * (fRec9[1] + (fSlow43 * fRec23[0]))));
2244 fVec6[(IOTA & 16383)] = ((0.353553385f * fRec22[0]) + 9.99999968e-21f);
2245 float fTemp5 = (fVec6[((IOTA - iConst17) & 16383)] + (fTemp2 + (0.600000024f * fRec20[1])));
2246 fVec7[(IOTA & 4095)] = fTemp5;
2247 fRec20[0] = fVec7[((IOTA - iConst18) & 4095)];
2248 float fRec21 = (0.0f - (0.600000024f * fTemp5));
2249 fRec27[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec27[1]) - (fRec5[1] + fRec5[2]))));
2250 fRec26[0] = ((fSlow50 * fRec26[1]) + (fSlow51 * (fRec5[1] + (fSlow52 * fRec27[0]))));
2251 fVec8[(IOTA & 32767)] = ((0.353553385f * fRec26[0]) + 9.99999968e-21f);
2252 float fTemp6 = (fTemp2 + ((0.600000024f * fRec24[1]) + fVec8[((IOTA - iConst22) & 32767)]));
2253 fVec9[(IOTA & 4095)] = fTemp6;
2254 fRec24[0] = fVec9[((IOTA - iConst23) & 4095)];
2255 float fRec25 = (0.0f - (0.600000024f * fTemp6));
2256 fRec31[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec31[1]) - (fRec10[1] + fRec10[2]))));
2257 fRec30[0] = ((fSlow59 * fRec30[1]) + (fSlow60 * (fRec10[1] + (fSlow61 * fRec31[0]))));
2258 fVec10[(IOTA & 16383)] = ((0.353553385f * fRec30[0]) + 9.99999968e-21f);
2259 float fTemp7 = (0.300000012f * fVec0[((IOTA - iSlow25) & 16383)]);
2260 float fTemp8 = (fVec10[((IOTA - iConst27) & 16383)] - (fTemp7 + (0.600000024f * fRec28[1])));
2261 fVec11[(IOTA & 2047)] = fTemp8;
2262 fRec28[0] = fVec11[((IOTA - iConst28) & 2047)];
2263 float fRec29 = (0.600000024f * fTemp8);
2264 fRec35[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec35[1]) - (fRec6[1] + fRec6[2]))));
2265 fRec34[0] = ((fSlow68 * fRec34[1]) + (fSlow69 * (fRec6[1] + (fSlow70 * fRec35[0]))));
2266 fVec12[(IOTA & 16383)] = ((0.353553385f * fRec34[0]) + 9.99999968e-21f);
2267 float fTemp9 = (fVec12[((IOTA - iConst32) & 16383)] - (fTemp7 + (0.600000024f * fRec32[1])));
2268 fVec13[(IOTA & 4095)] = fTemp9;
2269 fRec32[0] = fVec13[((IOTA - iConst33) & 4095)];
2270 float fRec33 = (0.600000024f * fTemp9);
2271 fRec39[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec39[1]) - (fRec8[1] + fRec8[2]))));
2272 fRec38[0] = ((fSlow77 * fRec38[1]) + (fSlow78 * (fRec8[1] + (fSlow79 * fRec39[0]))));
2273 fVec14[(IOTA & 16383)] = ((0.353553385f * fRec38[0]) + 9.99999968e-21f);
2274 float fTemp10 = ((fTemp7 + fVec14[((IOTA - iConst37) & 16383)]) - (0.600000024f * fRec36[1]));
2275 fVec15[(IOTA & 4095)] = fTemp10;
2276 fRec36[0] = fVec15[((IOTA - iConst38) & 4095)];
2277 float fRec37 = (0.600000024f * fTemp10);
2278 fRec43[0] = (0.0f - (fSlow23 * ((fSlow24 * fRec43[1]) - (fRec4[1] + fRec4[2]))));
2279 fRec42[0] = ((fSlow86 * fRec42[1]) + (fSlow87 * (fRec4[1] + (fSlow88 * fRec43[0]))));
2280 fVec16[(IOTA & 16383)] = ((0.353553385f * fRec42[0]) + 9.99999968e-21f);
2281 float fTemp11 = ((fVec16[((IOTA - iConst42) & 16383)] + fTemp7) - (0.600000024f * fRec40[1]));
2282 fVec17[(IOTA & 2047)] = fTemp11;
2283 fRec40[0] = fVec17[((IOTA - iConst43) & 2047)];
2284 float fRec41 = (0.600000024f * fTemp11);
2285 float fTemp12 = (fRec41 + fRec37);
2286 float fTemp13 = (fRec29 + (fRec33 + fTemp12));
2287 fRec4[0] = (fRec12[1] + (fRec16[1] + (fRec20[1] + (fRec24[1] + (fRec28[1] + (fRec32[1] + (fRec36[1] + (fRec40[1] + (fRec13 + (fRec17 + (fRec21 + (fRec25 + fTemp13))))))))))));
2288 fRec5[0] = ((fRec28[1] + (fRec32[1] + (fRec36[1] + (fRec40[1] + fTemp13)))) - (fRec12[1] + (fRec16[1] + (fRec20[1] + (fRec24[1] + (fRec13 + (fRec17 + (fRec25 + fRec21))))))));
2289 float fTemp14 = (fRec33 + fRec29);
2290 fRec6[0] = ((fRec20[1] + (fRec24[1] + (fRec36[1] + (fRec40[1] + (fRec21 + (fRec25 + fTemp12)))))) - (fRec12[1] + (fRec16[1] + (fRec28[1] + (fRec32[1] + (fRec13 + (fRec17 + fTemp14)))))));
2291 fRec7[0] = ((fRec12[1] + (fRec16[1] + (fRec36[1] + (fRec40[1] + (fRec13 + (fRec17 + fTemp12)))))) - (fRec20[1] + (fRec24[1] + (fRec28[1] + (fRec32[1] + (fRec21 + (fRec25 + fTemp14)))))));
2292 float fTemp15 = (fRec41 + fRec33);
2293 float fTemp16 = (fRec37 + fRec29);
2294 fRec8[0] = ((fRec16[1] + (fRec24[1] + (fRec32[1] + (fRec40[1] + (fRec17 + (fRec25 + fTemp15)))))) - (fRec12[1] + (fRec20[1] + (fRec28[1] + (fRec36[1] + (fRec13 + (fRec21 + fTemp16)))))));
2295 fRec9[0] = ((fRec12[1] + (fRec20[1] + (fRec32[1] + (fRec40[1] + (fRec13 + (fRec21 + fTemp15)))))) - (fRec16[1] + (fRec24[1] + (fRec28[1] + (fRec36[1] + (fRec17 + (fRec25 + fTemp16)))))));
2296 float fTemp17 = (fRec41 + fRec29);
2297 float fTemp18 = (fRec37 + fRec33);
2298 fRec10[0] = ((fRec12[1] + (fRec24[1] + (fRec28[1] + (fRec40[1] + (fRec13 + (fRec25 + fTemp17)))))) - (fRec16[1] + (fRec20[1] + (fRec32[1] + (fRec36[1] + (fRec17 + (fRec21 + fTemp18)))))));
2299 fRec11[0] = ((fRec16[1] + (fRec20[1] + (fRec28[1] + (fRec40[1] + (fRec17 + (fRec21 + fTemp17)))))) - (fRec12[1] + (fRec24[1] + (fRec32[1] + (fRec36[1] + (fRec13 + (fRec25 + fTemp18)))))));
2300 float fTemp19 = (0.370000005f * (fRec5[0] + fRec6[0]));
2301 float fTemp20 = (fSlow89 * fRec3[1]);
2302 fRec3[0] = (fTemp19 - (fTemp20 + (fSlow9 * fRec3[2])));
2303 float fTemp21 = (fSlow9 * fRec3[0]);
2304 float fTemp22 = (0.5f * ((fTemp21 + (fRec3[2] + (fTemp19 + fTemp20))) + (fSlow7 * ((fTemp21 + (fTemp20 + fRec3[2])) - fTemp19))));
2305 float fTemp23 = (fSlow90 * fRec2[1]);
2306 fRec2[0] = (fTemp22 - (fTemp23 + (fSlow5 * fRec2[2])));
2307 float fTemp24 = (fSlow5 * fRec2[0]);
2308 float fTemp25 = (1.0f - fRec1[0]);
2309 output0[i] =
FAUSTFLOAT((fRec0[0] * ((0.5f * (fRec1[0] * ((fTemp24 + (fRec2[2] + (fTemp22 + fTemp23))) + (fSlow3 * ((fTemp24 + (fTemp23 + fRec2[2])) - fTemp22))))) + (fTemp0 * fTemp25))));
2310 float fTemp26 = (0.370000005f * (fRec5[0] - fRec6[0]));
2311 float fTemp27 = (fSlow89 * fRec45[1]);
2312 fRec45[0] = (fTemp26 - (fTemp27 + (fSlow9 * fRec45[2])));
2313 float fTemp28 = (fSlow9 * fRec45[0]);
2314 float fTemp29 = (0.5f * ((fTemp28 + (fRec45[2] + (fTemp26 + fTemp27))) + (fSlow7 * ((fTemp28 + (fTemp27 + fRec45[2])) - fTemp26))));
2315 float fTemp30 = (fSlow90 * fRec44[1]);
2316 fRec44[0] = (fTemp29 - (fTemp30 + (fSlow5 * fRec44[2])));
2317 float fTemp31 = (fSlow5 * fRec44[0]);
2318 output1[i] =
FAUSTFLOAT((fRec0[0] * ((0.5f * (fRec1[0] * ((fTemp31 + (fRec44[2] + (fTemp29 + fTemp30))) + (fSlow3 * ((fTemp31 + (fTemp30 + fRec44[2])) - fTemp29))))) + (fTemp1 * fTemp25))));
2320 fRec0[1] = fRec0[0];
2321 fRec1[1] = fRec1[0];
2322 fRec15[1] = fRec15[0];
2323 fRec14[1] = fRec14[0];
2324 fRec12[1] = fRec12[0];
2325 fRec19[1] = fRec19[0];
2326 fRec18[1] = fRec18[0];
2327 fRec16[1] = fRec16[0];
2328 fRec23[1] = fRec23[0];
2329 fRec22[1] = fRec22[0];
2330 fRec20[1] = fRec20[0];
2331 fRec27[1] = fRec27[0];
2332 fRec26[1] = fRec26[0];
2333 fRec24[1] = fRec24[0];
2334 fRec31[1] = fRec31[0];
2335 fRec30[1] = fRec30[0];
2336 fRec28[1] = fRec28[0];
2337 fRec35[1] = fRec35[0];
2338 fRec34[1] = fRec34[0];
2339 fRec32[1] = fRec32[0];
2340 fRec39[1] = fRec39[0];
2341 fRec38[1] = fRec38[0];
2342 fRec36[1] = fRec36[0];
2343 fRec43[1] = fRec43[0];
2344 fRec42[1] = fRec42[0];
2345 fRec40[1] = fRec40[0];
2346 fRec4[2] = fRec4[1];
2347 fRec4[1] = fRec4[0];
2348 fRec5[2] = fRec5[1];
2349 fRec5[1] = fRec5[0];
2350 fRec6[2] = fRec6[1];
2351 fRec6[1] = fRec6[0];
2352 fRec7[2] = fRec7[1];
2353 fRec7[1] = fRec7[0];
2354 fRec8[2] = fRec8[1];
2355 fRec8[1] = fRec8[0];
2356 fRec9[2] = fRec9[1];
2357 fRec9[1] = fRec9[0];
2358 fRec10[2] = fRec10[1];
2359 fRec10[1] = fRec10[0];
2360 fRec11[2] = fRec11[1];
2361 fRec11[1] = fRec11[0];
2362 fRec3[2] = fRec3[1];
2363 fRec3[1] = fRec3[0];
2364 fRec2[2] = fRec2[1];
2365 fRec2[1] = fRec2[0];
2366 fRec45[2] = fRec45[1];
2367 fRec45[1] = fRec45[0];
2368 fRec44[2] = fRec44[1];
2369 fRec44[1] = fRec44[0];