Go to the documentation of this file.
10 #ifndef __compressordsp_H__
11 #define __compressordsp_H__
51 #define FAUSTFLOAT float
105 virtual void init(
int sample_rate) = 0;
229 #include <xmmintrin.h>
231 #define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8040)
233 #define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8000)
236 #define AVOIDDENORMALS
305 virtual void declare(
const char* key,
const char* value) = 0;
339 #define FAUSTFLOAT float
351 template <
typename REAL>
366 virtual void addButton(
const char* label, REAL* zone) = 0;
368 virtual void addVerticalSlider(
const char* label, REAL* zone, REAL init, REAL min, REAL max, REAL step) = 0;
369 virtual void addHorizontalSlider(
const char* label, REAL* zone, REAL init, REAL min, REAL max, REAL step) = 0;
370 virtual void addNumEntry(
const char* label, REAL* zone, REAL init, REAL min, REAL max, REAL step) = 0;
379 virtual void addSoundfile(
const char* label,
const char* filename, Soundfile** sf_zone) = 0;
383 virtual void declare(REAL* zone,
const char* key,
const char* val) {}
418 #ifndef FAUST_PATHBUILDER_H
419 #define FAUST_PATHBUILDER_H
444 std::string res =
"/";
450 std::replace(res.begin(), res.end(),
' ',
'_');
456 std::replace(label.begin(), label.end(),
' ',
'_');
465 #endif // FAUST_PATHBUILDER_H
491 #ifndef __ValueConverter__
492 #define __ValueConverter__
564 Range(
double x,
double y) : fLo(std::min<double>(x,y)), fHi(std::max<double>(x,y)) {}
565 double operator()(
double x) {
return (x<fLo) ? fLo : (x>fHi) ? fHi : x; }
575 Interpolator(
double lo,
double hi,
double v1,
double v2) : fRange(lo,hi)
579 fCoef = (v2-v1)/(hi-lo);
580 fOffset = v1 - lo*fCoef;
589 double x = fRange(v);
590 return fOffset + x*fCoef;
616 fSegment1(lo, mi, v1, vm),
617 fSegment2(mi, hi, vm, v2),
619 double operator()(
double x) {
return (x < fMid) ? fSegment1(x) : fSegment2(x); }
658 virtual void setMappingValues(
double amin,
double amid,
double amax,
double min,
double init,
double max) = 0;
681 fUI2F(umin,umax,fmin,fmax), fF2UI(fmin,fmax,umin,umax)
686 virtual double ui2faust(
double x) {
return fUI2F(x); }
687 virtual double faust2ui(
double x) {
return fF2UI(x); }
705 fUI2F(amin, amid, amax, min, init, max), fF2UI(min, init, max, amin, amid, amax)
708 LinearValueConverter2() : fUI2F(0.,0.,0.,0.,0.,0.), fF2UI(0.,0.,0.,0.,0.,0.)
711 virtual double ui2faust(
double x) {
return fUI2F(x); }
712 virtual double faust2ui(
double x) {
return fF2UI(x); }
714 virtual void setMappingValues(
double amin,
double amid,
double amax,
double min,
double init,
double max)
736 LinearValueConverter(umin, umax, std::log(std::max<double>(DBL_MIN, fmin)), std::log(std::max<double>(DBL_MIN, fmax)))
753 LinearValueConverter(umin, umax, std::min<double>(DBL_MAX, std::exp(fmin)), std::min<double>(DBL_MAX, std::exp(fmax)))
775 AccUpConverter(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax) :
776 fA2F(amin,amid,amax,fmin,fmid,fmax),
777 fF2A(fmin,fmid,fmax,amin,amid,amax)
780 virtual double ui2faust(
double x) {
return fA2F(x); }
781 virtual double faust2ui(
double x) {
return fF2A(x); }
783 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
811 AccDownConverter(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax) :
812 fA2F(amin,amid,amax,fmax,fmid,fmin),
813 fF2A(fmin,fmid,fmax,amax,amid,amin)
816 virtual double ui2faust(
double x) {
return fA2F(x); }
817 virtual double faust2ui(
double x) {
return fF2A(x); }
819 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
847 fA2F(amin,amid,amax,fmin,fmax,fmin),
848 fF2A(fmin,fmax,amin,amax)
851 virtual double ui2faust(
double x) {
return fA2F(x); }
852 virtual double faust2ui(
double x) {
return fF2A(x); }
854 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
882 fA2F(amin,amid,amax,fmax,fmin,fmax),
883 fF2A(fmin,fmax,amin,amax)
886 virtual double ui2faust(
double x) {
return fA2F(x); }
887 virtual double faust2ui(
double x) {
return fF2A(x); }
889 virtual void setMappingValues(
double amin,
double amid,
double amax,
double fmin,
double fmid,
double fmax)
919 virtual void setMappingValues(
int curve,
double amin,
double amid,
double amax,
double min,
double init,
double max) {}
961 std::vector<UpdatableValueConverter*> fValueConverters;
968 assert(curve >= 0 && curve <= 3);
969 fValueConverters.push_back(
new AccUpConverter(amin, amid, amax, min, init, max));
970 fValueConverters.push_back(
new AccDownConverter(amin, amid, amax, min, init, max));
977 std::vector<UpdatableValueConverter*>::iterator it;
978 for (it = fValueConverters.begin(); it != fValueConverters.end(); it++) {
982 void update(
double v)
const {
if (fValueConverters[fCurve]->
getActive()) *
fZone = fValueConverters[fCurve]->ui2faust(v); }
984 void setMappingValues(
int curve,
double amin,
double amid,
double amax,
double min,
double init,
double max)
986 fValueConverters[curve]->setMappingValues(amin, amid, amax, min, init, max);
992 fValueConverters[fCurve]->getMappingValues(amin, amid, amax);
997 std::vector<UpdatableValueConverter*>::iterator it;
998 for (it = fValueConverters.begin(); it != fValueConverters.end(); it++) {
999 (*it)->setActive(on_off);
1022 return (fZone !=
nullptr) ? int(fInterpolator(*fZone)) : 127;
1085 fZone.push_back(zone);
1086 fInit.push_back(init);
1087 fMin.push_back(min);
1088 fMax.push_back(max);
1089 fStep.push_back(step);
1106 std::cerr <<
"warning : 'acc' and 'gyr' metadata used for the same " << label <<
" parameter !!\n";
1113 double amin, amid, amax;
1114 iss >> axe >> curve >> amin >> amid >> amax;
1116 if ((0 <= axe) && (axe < 3) &&
1117 (0 <= curve) && (curve < 4) &&
1118 (amin < amax) && (amin <= amid) && (amid <= amax))
1122 std::cerr <<
"incorrect acc metadata : " <<
fCurrentAcc << std::endl;
1131 double amin, amid, amax;
1132 iss >> axe >> curve >> amin >> amid >> amax;
1134 if ((0 <= axe) && (axe < 3) &&
1135 (0 <= curve) && (curve < 4) &&
1136 (amin < amax) && (amin <= amid) && (amid <= amax))
1140 std::cerr <<
"incorrect gyr metadata : " <<
fCurrentGyr << std::endl;
1162 std::cerr <<
"incorrect screencolor metadata : " <<
fCurrentColor << std::endl;
1174 for (
size_t i = 0; i < table[val].size(); i++) {
1175 if (zone == table[val][i]->getZone())
return int(i);
1180 void setConverter(std::vector<ZoneControl*>* table,
int p,
int val,
int curve,
double amin,
double amid,
double amax)
1187 if (id1 != -1) table[0][id1]->setActive(
false);
1188 if (id2 != -1) table[1][id2]->setActive(
false);
1189 if (id3 != -1) table[2][id3]->setActive(
false);
1197 table[val][id4]->setMappingValues(curve, amin, amid, amax,
fMin[p],
fInit[p],
fMax[p]);
1198 table[val][id4]->setActive(
true);
1207 void getConverter(std::vector<ZoneControl*>* table,
int p,
int& val,
int& curve,
double& amin,
double& amid,
double& amax)
1215 curve = table[val][id1]->getCurve();
1216 table[val][id1]->getMappingValues(amin, amid, amax);
1217 }
else if (id2 != -1) {
1219 curve = table[val][id2]->getCurve();
1220 table[val][id2]->getMappingValues(amin, amid, amax);
1221 }
else if (id3 != -1) {
1223 curve = table[val][id3]->getCurve();
1224 table[val][id3]->getMappingValues(amin, amid, amax);
1244 for (
int i = 0; i < 3; i++) {
1245 for (
auto& it :
fAcc[i])
delete it;
1246 for (
auto& it :
fGyr[i])
delete it;
1301 virtual void addSoundfile(
const char* label,
const char* filename, Soundfile** sf_zone) {}
1310 if (strcmp(key,
"scale") == 0) {
1311 if (strcmp(val,
"log") == 0) {
1313 }
else if (strcmp(val,
"exp") == 0) {
1318 }
else if (strcmp(key,
"unit") == 0) {
1320 }
else if (strcmp(key,
"acc") == 0) {
1322 }
else if (strcmp(key,
"gyr") == 0) {
1324 }
else if (strcmp(key,
"screencolor") == 0) {
1326 }
else if (strcmp(key,
"tooltip") == 0) {
1331 virtual void declare(
const char* key,
const char* val)
1352 std::map<const char*, const char*> res;
1353 std::map<std::string, std::string> metadata =
fMetaData[p];
1354 for (
auto it : metadata) {
1355 res[it.first.c_str()] = it.second.c_str();
1423 for (
size_t i = 0; i <
fAcc[acc].size(); i++) {
1424 fAcc[acc][i]->update(value);
1471 void getAccConverter(
int p,
int& acc,
int& curve,
double& amin,
double& amid,
double& amax)
1487 void getGyrConverter(
int p,
int& gyr,
int& curve,
double& amin,
double& amid,
double& amax)
1501 for (
size_t i = 0; i <
fGyr[gyr].size(); i++) {
1502 fGyr[gyr][i]->update(value);
1515 return (acc >= 0 && acc < 3) ? int(
fAcc[acc].size()) : 0;
1527 return (gyr >= 0 && gyr < 3) ? int(
fGyr[gyr].size()) : 0;
1538 return (r<<16) | (g<<8) | b;
1558 #define FAUSTFLOAT float
1561 #include <algorithm>
1567 #define FAUSTCLASS compressordsp
1571 #define exp10f __exp10f
1572 #define exp10 __exp10
1598 m->
declare(
"analyzers.lib/name",
"Faust Analyzer Library");
1599 m->
declare(
"analyzers.lib/version",
"0.1");
1600 m->
declare(
"author",
"Julius Smith");
1601 m->
declare(
"basics.lib/name",
"Faust Basic Element Library");
1602 m->
declare(
"basics.lib/version",
"0.1");
1603 m->
declare(
"compressors.lib/compression_gain_mono:author",
"Julius O. Smith III");
1604 m->
declare(
"compressors.lib/compression_gain_mono:copyright",
"Copyright (C) 2014-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1605 m->
declare(
"compressors.lib/compression_gain_mono:license",
"MIT-style STK-4.3 license");
1606 m->
declare(
"compressors.lib/compressor_lad_mono:author",
"Julius O. Smith III");
1607 m->
declare(
"compressors.lib/compressor_lad_mono:copyright",
"Copyright (C) 2014-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1608 m->
declare(
"compressors.lib/compressor_lad_mono:license",
"MIT-style STK-4.3 license");
1609 m->
declare(
"compressors.lib/compressor_mono:author",
"Julius O. Smith III");
1610 m->
declare(
"compressors.lib/compressor_mono:copyright",
"Copyright (C) 2014-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>");
1611 m->
declare(
"compressors.lib/compressor_mono:license",
"MIT-style STK-4.3 license");
1612 m->
declare(
"compressors.lib/name",
"Faust Compressor Effect Library");
1613 m->
declare(
"compressors.lib/version",
"0.0");
1614 m->
declare(
"description",
"Compressor demo application, adapted from the Faust Library's dm.compressor_demo in demos.lib");
1615 m->
declare(
"documentation",
"https://faustlibraries.grame.fr/libs/compressors/#cocompressor_mono");
1616 m->
declare(
"filename",
"compressordsp.dsp");
1617 m->
declare(
"license",
"MIT Style STK-4.2");
1618 m->
declare(
"maths.lib/author",
"GRAME");
1619 m->
declare(
"maths.lib/copyright",
"GRAME");
1620 m->
declare(
"maths.lib/license",
"LGPL with exception");
1621 m->
declare(
"maths.lib/name",
"Faust Math Library");
1622 m->
declare(
"maths.lib/version",
"2.3");
1623 m->
declare(
"name",
"compressor");
1624 m->
declare(
"platform.lib/name",
"Generic Platform Library");
1625 m->
declare(
"platform.lib/version",
"0.1");
1626 m->
declare(
"signals.lib/name",
"Faust Signal Routing Library");
1627 m->
declare(
"signals.lib/version",
"0.0");
1639 switch ((channel)) {
1653 switch ((channel)) {
1670 fSampleRate = sample_rate;
1671 fConst0 = (1.0f / std::min<float>(192000.0f, std::max<float>(1.0f,
float(fSampleRate))));
1684 for (
int l0 = 0; (l0 < 2); l0 = (l0 + 1)) {
1687 for (
int l1 = 0; (l1 < 2); l1 = (l1 + 1)) {
1690 for (
int l2 = 0; (l2 < 2); l2 = (l2 + 1)) {
1693 for (
int l3 = 0; (l3 < 2); l3 = (l3 + 1)) {
1696 for (
int l4 = 0; (l4 < 2); l4 = (l4 + 1)) {
1699 for (
int l5 = 0; (l5 < 2); l5 = (l5 + 1)) {
1704 virtual void init(
int sample_rate) {
1723 ui_interface->
declare(0,
"tooltip",
"References: https://faustlibraries.grame.fr/libs/compressors/ http://en.wikipedia.org/wiki/Dynamic_range_compression");
1725 ui_interface->
declare(0,
"0",
"");
1727 ui_interface->
declare(&fCheckbox0,
"0",
"");
1728 ui_interface->
declare(&fCheckbox0,
"tooltip",
"When this is checked, the compressor has no effect");
1730 ui_interface->
declare(&fHbargraph0,
"1",
"");
1731 ui_interface->
declare(&fHbargraph0,
"tooltip",
"Compressor gain in dB");
1732 ui_interface->
declare(&fHbargraph0,
"unit",
"dB");
1735 ui_interface->
declare(0,
"1",
"");
1737 ui_interface->
declare(0,
"3",
"");
1739 ui_interface->
declare(&fHslider2,
"0",
"");
1740 ui_interface->
declare(&fHslider2,
"style",
"knob");
1741 ui_interface->
declare(&fHslider2,
"tooltip",
"A compression Ratio of N means that for each N dB increase in input signal level above Threshold, the output level goes up 1 dB");
1743 ui_interface->
declare(&fHslider4,
"1",
"");
1744 ui_interface->
declare(&fHslider4,
"style",
"knob");
1745 ui_interface->
declare(&fHslider4,
"tooltip",
"When the signal level exceeds the Threshold (in dB), its level is compressed according to the Ratio");
1746 ui_interface->
declare(&fHslider4,
"unit",
"dB");
1747 ui_interface->
addHorizontalSlider(
"Threshold", &fHslider4, -24.0f, -100.0f, 10.0f, 0.100000001f);
1749 ui_interface->
declare(0,
"4",
"");
1751 ui_interface->
declare(&fHslider1,
"1",
"");
1752 ui_interface->
declare(&fHslider1,
"scale",
"log");
1753 ui_interface->
declare(&fHslider1,
"style",
"knob");
1754 ui_interface->
declare(&fHslider1,
"tooltip",
"Time constant in ms (1/e smoothing time) for the compression gain to approach (exponentially) a new lower target level (the compression `kicking in')");
1755 ui_interface->
declare(&fHslider1,
"unit",
"ms");
1756 ui_interface->
addHorizontalSlider(
"Attack", &fHslider1, 15.0f, 1.0f, 1000.0f, 0.100000001f);
1757 ui_interface->
declare(&fHslider3,
"2",
"");
1758 ui_interface->
declare(&fHslider3,
"scale",
"log");
1759 ui_interface->
declare(&fHslider3,
"style",
"knob");
1760 ui_interface->
declare(&fHslider3,
"tooltip",
"Time constant in ms (1/e smoothing time) for the compression gain to approach (exponentially) a new higher target level (the compression 'releasing')");
1761 ui_interface->
declare(&fHslider3,
"unit",
"ms");
1762 ui_interface->
addHorizontalSlider(
"Release", &fHslider3, 40.0f, 1.0f, 1000.0f, 0.100000001f);
1765 ui_interface->
declare(&fHslider0,
"5",
"");
1766 ui_interface->
declare(&fHslider0,
"tooltip",
"The compressed-signal output level is increased by this amount (in dB) to make up for the level lost due to compression");
1767 ui_interface->
declare(&fHslider0,
"unit",
"dB");
1768 ui_interface->
addHorizontalSlider(
"MakeUpGain", &fHslider0, 2.0f, -96.0f, 96.0f, 0.100000001f);
1775 int iSlow0 = int(
float(fCheckbox0));
1776 float fSlow1 = std::pow(10.0f, (0.0500000007f *
float(fHslider0)));
1777 float fSlow2 = std::max<float>(fConst0, (0.00100000005f *
float(fHslider1)));
1778 float fSlow3 = (0.5f * fSlow2);
1779 int iSlow4 = (std::fabs(fSlow3) < 1.1920929e-07f);
1780 float fSlow5 = (iSlow4 ? 0.0f : std::exp((0.0f - (fConst0 / (iSlow4 ? 1.0f : fSlow3)))));
1781 float fSlow6 = ((1.0f / std::max<float>(1.00000001e-07f,
float(fHslider2))) + -1.0f);
1782 int iSlow7 = (std::fabs(fSlow2) < 1.1920929e-07f);
1783 float fSlow8 = (iSlow7 ? 0.0f : std::exp((0.0f - (fConst0 / (iSlow7 ? 1.0f : fSlow2)))));
1784 float fSlow9 = std::max<float>(fConst0, (0.00100000005f *
float(fHslider3)));
1785 int iSlow10 = (std::fabs(fSlow9) < 1.1920929e-07f);
1786 float fSlow11 = (iSlow10 ? 0.0f : std::exp((0.0f - (fConst0 / (iSlow10 ? 1.0f : fSlow9)))));
1787 float fSlow12 = float(fHslider4);
1788 float fSlow13 = (1.0f - fSlow5);
1789 for (
int i = 0; (i < count); i = (i + 1)) {
1790 float fTemp0 = float(input0[i]);
1791 float fTemp1 = (iSlow0 ? 0.0f : fTemp0);
1792 float fTemp2 = std::fabs(fTemp1);
1793 float fTemp3 = ((fRec4[1] > fTemp2) ? fSlow11 : fSlow8);
1794 fRec5[0] = ((fRec5[1] * fTemp3) + (fTemp2 * (1.0f - fTemp3)));
1795 fRec4[0] = fRec5[0];
1796 fRec3[0] = ((fRec3[1] * fSlow5) + (fSlow6 * (std::max<float>(((20.0f * std::log10(fRec4[0])) - fSlow12), 0.0f) * fSlow13)));
1797 float fTemp4 = (fTemp1 * std::pow(10.0f, (0.0500000007f * fRec3[0])));
1798 float fTemp5 = std::fabs(fTemp4);
1799 float fTemp6 = ((fRec1[1] > fTemp5) ? fSlow11 : fSlow8);
1800 fRec2[0] = ((fRec2[1] * fTemp6) + (fTemp5 * (1.0f - fTemp6)));
1801 fRec1[0] = fRec2[0];
1802 fRec0[0] = ((fSlow5 * fRec0[1]) + (fSlow6 * (std::max<float>(((20.0f * std::log10(fRec1[0])) - fSlow12), 0.0f) * fSlow13)));
1803 fHbargraph0 =
FAUSTFLOAT((20.0f * std::log10(std::pow(10.0f, (0.0500000007f * fRec0[0])))));
1804 output0[i] =
FAUSTFLOAT((iSlow0 ? fTemp0 : (fSlow1 * fTemp4)));
1805 fRec5[1] = fRec5[0];
1806 fRec4[1] = fRec4[0];
1807 fRec3[1] = fRec3[0];
1808 fRec2[1] = fRec2[0];
1809 fRec1[1] = fRec1[0];
1810 fRec0[1] = fRec0[0];
virtual ~ZoneReader()
Definition: compressordsp.h:1018
std::vector< ZoneControl * > fGyr[3]
Definition: compressordsp.h:1054
AccUpDownConverter(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:846
Definition: compressordsp.h:766
FAUSTFLOAT getParamInit(int p)
Definition: compressordsp.h:1367
virtual void * allocate(size_t size)=0
virtual bool getActive()
Definition: compressordsp.h:925
void pushLabel(const std::string &label)
Definition: compressordsp.h:460
virtual int getInputRate(int channel)
Definition: compressordsp.h:1637
virtual ~ValueConverter()
Definition: compressordsp.h:636
virtual void buildUserInterface(UI *ui_interface)
Definition: compressordsp.h:181
virtual void compute(double date_usec, int count, FAUSTFLOAT **inputs, FAUSTFLOAT **outputs)
Definition: compressordsp.h:192
virtual void addSoundfile(const char *label, const char *filename, Soundfile **sf_zone)=0
Definition: compressordsp.h:553
void setAccConverter(int p, int acc, int curve, double amin, double amid, double amax)
Definition: compressordsp.h:1439
virtual ~UIReal()
Definition: compressordsp.h:355
Interpolator(double lo, double hi, double v1, double v2)
Definition: compressordsp.h:575
void propagateGyr(int gyr, double value)
Definition: compressordsp.h:1499
Type
Definition: compressordsp.h:1236
Definition: compressordsp.h:605
virtual void init(int sample_rate)
Definition: compressordsp.h:1704
@ kAcc
Definition: compressordsp.h:1236
virtual std::string getDSPCode()=0
@ kHBargraph
Definition: compressordsp.h:1034
std::vector< std::string > fLabels
Definition: compressordsp.h:1042
LinearValueConverter(double umin, double umax, double fmin, double fmax)
Definition: compressordsp.h:680
virtual void openHorizontalBox(const char *label)
Definition: compressordsp.h:1256
std::string fCurrentColor
Definition: compressordsp.h:1068
virtual void instanceClear()
Definition: compressordsp.h:187
int getParamIndex(const char *path)
Definition: compressordsp.h:1338
ZoneReader * fRedReader
Definition: compressordsp.h:1059
Definition: compressordsp.h:645
virtual void compute(int count, FAUSTFLOAT **inputs, FAUSTFLOAT **outputs)
Definition: compressordsp.h:1772
virtual ~UI()
Definition: compressordsp.h:389
virtual void instanceResetUserInterface()=0
decorator_dsp(dsp *dsp=nullptr)
Definition: compressordsp.h:176
virtual void setMappingValues(double amin, double amid, double amax, double min, double init, double max)
Definition: compressordsp.h:714
virtual void instanceResetUserInterface()
Definition: compressordsp.h:186
virtual double ui2faust(double x)
Definition: compressordsp.h:851
ZoneControl(FAUSTFLOAT *zone)
Definition: compressordsp.h:914
LinearValueConverter()
Definition: compressordsp.h:684
void getGyrConverter(int p, int &gyr, int &curve, double &amin, double &amid, double &amax)
Definition: compressordsp.h:1487
virtual void compute(double, int count, FAUSTFLOAT **inputs, FAUSTFLOAT **outputs)
Definition: compressordsp.h:160
virtual void init(int sample_rate)
Definition: compressordsp.h:183
int getZoneIndex(std::vector< ZoneControl * > *table, int p, int val)
Definition: compressordsp.h:1171
virtual ~APIUI()
Definition: compressordsp.h:1241
Definition: compressordsp.h:837
UI()
Definition: compressordsp.h:388
int getScreenColor()
Definition: compressordsp.h:1532
virtual void addNumEntry(const char *label, FAUSTFLOAT *zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
Definition: compressordsp.h:1282
virtual void addParameter(const char *label, FAUSTFLOAT *zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step, ItemType type)
Definition: compressordsp.h:1073
std::vector< std::map< std::string, std::string > > fMetaData
Definition: compressordsp.h:1052
dsp * fDSP
Definition: compressordsp.h:172
virtual void instanceConstants(int sample_rate)
Definition: compressordsp.h:1669
Definition: compressordsp.h:695
virtual double ui2faust(double x)
Definition: compressordsp.h:739
ItemType
Definition: compressordsp.h:1034
virtual double faust2ui(double x)=0
virtual void addVerticalBargraph(const char *label, REAL *zone, REAL min, REAL max)=0
virtual void openTabBox(const char *label)=0
@ kExp
Definition: compressordsp.h:1038
ZoneReader(FAUSTFLOAT *zone, double lo, double hi)
Definition: compressordsp.h:1016
virtual decorator_dsp * clone()
Definition: compressordsp.h:188
virtual void declare(REAL *zone, const char *key, const char *val)
Definition: compressordsp.h:383
AccDownConverter(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:811
std::vector< ValueConverter * > fConversion
Definition: compressordsp.h:1045
std::vector< std::string > fPaths
Definition: compressordsp.h:1041
virtual double faust2ui(double x)
Definition: compressordsp.h:887
virtual void getMappingValues(double &amin, double &amid, double &amax)=0
virtual ~CurveZoneControl()
Definition: compressordsp.h:975
FAUSTFLOAT * getZone()
Definition: compressordsp.h:922
virtual void addHorizontalSlider(const char *label, REAL *zone, REAL init, REAL min, REAL max, REAL step)=0
void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:621
virtual int getSampleRate()
Definition: compressordsp.h:1718
ZoneReader * fGreenReader
Definition: compressordsp.h:1060
virtual void setMemoryManager(dsp_memory_manager *manager)=0
virtual void buildUserInterface(UI *ui_interface)=0
virtual void addCheckButton(const char *label, FAUSTFLOAT *zone)
Definition: compressordsp.h:1267
Definition: compressordsp.h:200
virtual std::string getCompileOptions()=0
virtual double faust2ui(double x)
Definition: compressordsp.h:687
virtual double faust2ui(double x)
Definition: compressordsp.h:740
std::vector< ZoneControl * > fAcc[3]
Definition: compressordsp.h:1053
virtual void closeBox()=0
std::vector< std::string > fControlsLevel
Definition: compressordsp.h:435
virtual void setMappingValues(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:889
virtual double ui2faust(double x)
Definition: compressordsp.h:756
virtual void instanceConstants(int sample_rate)=0
int getGyrCount(int gyr)
Definition: compressordsp.h:1525
void setConverter(std::vector< ZoneControl * > *table, int p, int val, int curve, double amin, double amid, double amax)
Definition: compressordsp.h:1180
virtual void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:896
LinearValueConverter2()
Definition: compressordsp.h:708
virtual int getNumInputs()=0
std::map< std::string, int > fLabelMap
Definition: compressordsp.h:1044
virtual double ui2faust(double x)
Definition: compressordsp.h:711
virtual double faust2ui(double x)
Definition: compressordsp.h:781
virtual void openVerticalBox(const char *label)
Definition: compressordsp.h:1257
void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:990
virtual void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:826
virtual void closeBox()
Definition: compressordsp.h:1258
virtual double faust2ui(double x)
Definition: compressordsp.h:817
std::vector< FAUSTFLOAT > fStep
Definition: compressordsp.h:1050
@ kVSlider
Definition: compressordsp.h:1034
virtual void instanceInit(int sample_rate)
Definition: compressordsp.h:1708
@ kButton
Definition: compressordsp.h:1034
virtual ~ConverterZoneControl()
Definition: compressordsp.h:944
ZoneReader * fBlueReader
Definition: compressordsp.h:1061
virtual void addNumEntry(const char *label, REAL *zone, REAL init, REAL min, REAL max, REAL step)=0
void popLabel()
Definition: compressordsp.h:461
virtual ~UpdatableValueConverter()
Definition: compressordsp.h:655
virtual std::string getSHAKey()=0
Definition: compressordsp.h:168
void setActive(bool on_off)
Definition: compressordsp.h:995
virtual std::vector< std::string > getIncludePathnames()=0
std::map< const char *, const char * > getMetadata(int p)
Definition: compressordsp.h:1350
const char * getParamAddress(int p)
Definition: compressordsp.h:1348
virtual void setActive(bool on_off)
Definition: compressordsp.h:924
Definition: compressordsp.h:1007
virtual double ui2faust(double x)=0
int fNumParameters
Definition: compressordsp.h:1040
std::string fCurrentTooltip
Definition: compressordsp.h:1069
virtual std::string getName()=0
virtual int getCurve()
Definition: compressordsp.h:927
virtual dsp_memory_manager * getMemoryManager()=0
void getLowHigh(double &amin, double &amax)
Definition: compressordsp.h:593
@ kGyr
Definition: compressordsp.h:1236
FAUSTFLOAT getParamValue(int p)
Definition: compressordsp.h:1370
virtual void destroy(void *ptr)=0
virtual void addSoundfile(const char *label, const char *filename, Soundfile **sf_zone)
Definition: compressordsp.h:1301
double operator()(double x)
Definition: compressordsp.h:619
virtual void setMappingValues(int curve, double amin, double amid, double amax, double min, double init, double max)
Definition: compressordsp.h:919
virtual void addCheckButton(const char *label, REAL *zone)=0
void setParamValue(int p, FAUSTFLOAT v)
Definition: compressordsp.h:1371
std::vector< FAUSTFLOAT * > fZone
Definition: compressordsp.h:1046
virtual void setMappingValues(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:783
LogValueConverter(double umin, double umax, double fmin, double fmax)
Definition: compressordsp.h:735
virtual double faust2ui(double x)
Definition: compressordsp.h:712
virtual void instanceInit(int sample_rate)=0
@ kLog
Definition: compressordsp.h:1038
ExpValueConverter(double umin, double umax, double fmin, double fmax)
Definition: compressordsp.h:752
virtual compressordsp * clone()
Definition: compressordsp.h:1714
int fCurrentScale
Definition: compressordsp.h:1065
virtual int getNumInputs()
Definition: compressordsp.h:179
Definition: compressordsp.h:1031
virtual void setMappingValues(double amin, double amid, double amax, double min, double init, double max)=0
virtual double faust2ui(double x)
Definition: compressordsp.h:757
FAUSTFLOAT * getParamZone(int p)
Definition: compressordsp.h:1369
void update(double v) const
Definition: compressordsp.h:982
Definition: compressordsp.h:802
Definition: compressordsp.h:1575
virtual int getSampleRate()
Definition: compressordsp.h:182
virtual ~dsp_factory()
Definition: compressordsp.h:205
virtual void update(double v) const
Definition: compressordsp.h:917
void metadata(Meta *m)
Definition: compressordsp.h:1597
virtual double faust2ui(double x)
Definition: compressordsp.h:852
Definition: compressordsp.h:957
virtual void setMappingValues(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:854
int getAccCount(int acc)
Definition: compressordsp.h:1513
Definition: compressordsp.h:748
std::map< std::string, int > fPathMap
Definition: compressordsp.h:1043
std::string buildPath(const std::string &label)
Definition: compressordsp.h:442
Definition: compressordsp.h:74
virtual void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:920
virtual dsp * createDSPInstance()=0
dsp()
Definition: compressordsp.h:78
virtual void openVerticalBox(const char *label)=0
FAUSTFLOAT getParamMin(int p)
Definition: compressordsp.h:1364
Definition: compressordsp.h:906
AccDownUpConverter(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:881
ValueConverter * getConverter()
Definition: compressordsp.h:948
FAUSTFLOAT getParamStep(int p)
Definition: compressordsp.h:1366
const char * getParamLabel(int p)
Definition: compressordsp.h:1349
std::vector< ItemType > fItemType
Definition: compressordsp.h:1051
UIReal()
Definition: compressordsp.h:354
double ratio2value(int p, double r)
Definition: compressordsp.h:1377
Definition: compressordsp.h:872
void getConverter(std::vector< ZoneControl * > *table, int p, int &val, int &curve, double &amin, double &amid, double &amax)
Definition: compressordsp.h:1207
virtual int getNumOutputs()
Definition: compressordsp.h:1634
virtual void instanceResetUserInterface()
Definition: compressordsp.h:1674
virtual int getNumOutputs()=0
virtual int getNumInputs()
Definition: compressordsp.h:1631
virtual ~dsp_memory_manager()
Definition: compressordsp.h:63
bool fActive
Definition: compressordsp.h:649
FAUSTFLOAT * fZone
Definition: compressordsp.h:910
ValueConverter * fValueConverter
Definition: compressordsp.h:939
PathBuilder()
Definition: compressordsp.h:439
virtual void instanceConstants(int sample_rate)
Definition: compressordsp.h:185
void setGyrConverter(int p, int gyr, int curve, double amin, double amid, double amax)
Definition: compressordsp.h:1455
static void classInit(int sample_rate)
Definition: compressordsp.h:1666
void setMappingValues(int curve, double amin, double amid, double amax, double min, double init, double max)
Definition: compressordsp.h:984
virtual ~PathBuilder()
Definition: compressordsp.h:440
const char * getMetadata(int p, const char *key)
Definition: compressordsp.h:1360
virtual std::vector< std::string > getLibraryList()=0
Definition: compressordsp.h:387
Definition: compressordsp.h:671
virtual void addButton(const char *label, REAL *zone)=0
virtual void metadata(Meta *m)
Definition: compressordsp.h:189
FAUSTFLOAT getParamMax(int p)
Definition: compressordsp.h:1365
virtual void addVerticalSlider(const char *label, REAL *zone, REAL init, REAL min, REAL max, REAL step)=0
virtual double ui2faust(double x)
Definition: compressordsp.h:780
ConverterZoneControl(FAUSTFLOAT *zone, ValueConverter *converter)
Definition: compressordsp.h:943
virtual ~dsp()
Definition: compressordsp.h:79
std::vector< FAUSTFLOAT > fMin
Definition: compressordsp.h:1048
virtual void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:720
UpdatableValueConverter()
Definition: compressordsp.h:653
void getAccConverter(int p, int &acc, int &curve, double &amin, double &amid, double &amax)
Definition: compressordsp.h:1471
virtual void addVerticalSlider(const char *label, FAUSTFLOAT *zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
Definition: compressordsp.h:1272
virtual void addHorizontalBargraph(const char *label, REAL *zone, REAL min, REAL max)=0
AccUpConverter(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:775
double value2ratio(int p, double r)
Definition: compressordsp.h:1376
virtual double ui2faust(double x)
Definition: compressordsp.h:886
std::string fCurrentGyr
Definition: compressordsp.h:1067
virtual void instanceClear()=0
std::string fCurrentAcc
Definition: compressordsp.h:1066
@ kNoType
Definition: compressordsp.h:1236
virtual void openHorizontalBox(const char *label)=0
@ kCheckButton
Definition: compressordsp.h:1034
virtual void setMappingValues(double amin, double amid, double amax, double fmin, double fmid, double fmax)
Definition: compressordsp.h:819
virtual void addHorizontalSlider(const char *label, FAUSTFLOAT *zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
Definition: compressordsp.h:1277
virtual double ui2faust(double x)
Definition: compressordsp.h:816
virtual double ui2faust(double x)
Definition: compressordsp.h:686
void setParamRatio(int p, double r)
Definition: compressordsp.h:1374
LinearValueConverter2(double amin, double amid, double amax, double min, double init, double max)
Definition: compressordsp.h:704
virtual ~ZoneControl()
Definition: compressordsp.h:915
virtual void metadata(Meta *m)=0
double getParamRatio(int p)
Definition: compressordsp.h:1373
Definition: compressordsp.h:935
Definition: compressordsp.h:632
virtual int getNumOutputs()
Definition: compressordsp.h:180
std::vector< FAUSTFLOAT > fMax
Definition: compressordsp.h:1049
virtual void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:790
virtual void instanceInit(int sample_rate)
Definition: compressordsp.h:184
virtual void declare(FAUSTFLOAT *zone, const char *key, const char *val)
Definition: compressordsp.h:1305
virtual void update(double v) const
Definition: compressordsp.h:946
int getCurve()
Definition: compressordsp.h:1003
virtual int getOutputRate(int channel)
Definition: compressordsp.h:1651
Definition: compressordsp.h:731
virtual void openTabBox(const char *label)
Definition: compressordsp.h:1255
virtual void compute(int count, FAUSTFLOAT **inputs, FAUSTFLOAT **outputs)=0
virtual void addButton(const char *label, FAUSTFLOAT *zone)
Definition: compressordsp.h:1262
Definition: compressordsp.h:431
std::string buildLabel(std::string label)
Definition: compressordsp.h:454
@ kVBargraph
Definition: compressordsp.h:1034
virtual void init(int sample_rate)=0
@ kLin
Definition: compressordsp.h:1038
virtual void declare(const char *key, const char *val)
Definition: compressordsp.h:1331
@ kNumEntry
Definition: compressordsp.h:1034
bool fHasScreenControl
Definition: compressordsp.h:1058
std::map< std::string, std::string > fCurrentMetadata
Definition: compressordsp.h:1070
virtual ~decorator_dsp()
Definition: compressordsp.h:177
int getValue()
Definition: compressordsp.h:1020
bool getActive()
Definition: compressordsp.h:662
Definition: compressordsp.h:61
Interpolator3pt(double lo, double mi, double hi, double v1, double vm, double v2)
Definition: compressordsp.h:615
void setActive(bool on_off)
Definition: compressordsp.h:661
APIUI()
Definition: compressordsp.h:1238
virtual int getSampleRate()=0
#define FAUSTFLOAT
Definition: compressordsp.h:51
virtual void buildUserInterface(UI *ui_interface)
Definition: compressordsp.h:1722
Type getParamType(int p)
Definition: compressordsp.h:1386
virtual void addHorizontalBargraph(const char *label, FAUSTFLOAT *zone, FAUSTFLOAT min, FAUSTFLOAT max)
Definition: compressordsp.h:1289
virtual void compute(int count, FAUSTFLOAT **inputs, FAUSTFLOAT **outputs)
Definition: compressordsp.h:191
std::vector< FAUSTFLOAT > fInit
Definition: compressordsp.h:1047
int getParamsCount()
Definition: compressordsp.h:1337
ItemType getParamItemType(int p)
Definition: compressordsp.h:1409
CurveZoneControl(FAUSTFLOAT *zone, int curve, double amin, double amid, double amax, double min, double init, double max)
Definition: compressordsp.h:966
std::string fCurrentUnit
Definition: compressordsp.h:1064
virtual void getMappingValues(double &amin, double &amid, double &amax)
Definition: compressordsp.h:861
double operator()(double v)
Definition: compressordsp.h:587
Definition: compressordsp.h:353
void propagateAcc(int acc, double value)
Definition: compressordsp.h:1421
virtual void addVerticalBargraph(const char *label, FAUSTFLOAT *zone, FAUSTFLOAT min, FAUSTFLOAT max)
Definition: compressordsp.h:1294
@ kHSlider
Definition: compressordsp.h:1034
virtual void instanceClear()
Definition: compressordsp.h:1683