1 // generated from file '../src/LV2/faust/crybaby.dsp' by dsp2cc:
2 // Code generated with Faust (https://faust.grame.fr)
3
4
5 namespace crybaby {
6
7 class Dsp: public PluginLV2 {
8 private:
9 uint32_t fSampleRate;
10 FAUSTFLOAT fVslider0;
11 FAUSTFLOAT *fVslider0_;
12 FAUSTFLOAT fVslider1;
13 FAUSTFLOAT *fVslider1_;
14 FAUSTFLOAT fVslider2;
15 FAUSTFLOAT *fVslider2_;
16 float fRec1[2];
17 float fConst1;
18 float fConst2;
19 float fRec2[2];
20 float fRec3[2];
21 float fRec0[3];
22
23 void connect(uint32_t port,void* data);
24 void clear_state_f();
25 void init(uint32_t sample_rate);
26 void compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0);
27
28 static void clear_state_f_static(PluginLV2*);
29 static void init_static(uint32_t sample_rate, PluginLV2*);
30 static void compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginLV2*);
31 static void del_instance(PluginLV2 *p);
32 static void connect_static(uint32_t port,void* data, PluginLV2 *p);
33 public:
34 Dsp();
35 ~Dsp();
36 };
37
38
39
Dsp()40 Dsp::Dsp()
41 : PluginLV2() {
42 version = PLUGINLV2_VERSION;
43 id = "manual";
44 name = N_("manual");
45 mono_audio = compute_static;
46 stereo_audio = 0;
47 set_samplerate = init_static;
48 activate_plugin = 0;
49 connect_ports = connect_static;
50 clear_state = clear_state_f_static;
51 delete_instance = del_instance;
52 }
53
~Dsp()54 Dsp::~Dsp() {
55 }
56
clear_state_f()57 inline void Dsp::clear_state_f()
58 {
59 for (int l0 = 0; (l0 < 2); l0 = (l0 + 1)) fRec1[l0] = 0.0f;
60 for (int l1 = 0; (l1 < 2); l1 = (l1 + 1)) fRec2[l1] = 0.0f;
61 for (int l2 = 0; (l2 < 2); l2 = (l2 + 1)) fRec3[l2] = 0.0f;
62 for (int l3 = 0; (l3 < 3); l3 = (l3 + 1)) fRec0[l3] = 0.0f;
63 }
64
clear_state_f_static(PluginLV2 * p)65 void Dsp::clear_state_f_static(PluginLV2 *p)
66 {
67 static_cast<Dsp*>(p)->clear_state_f();
68 }
69
init(uint32_t sample_rate)70 inline void Dsp::init(uint32_t sample_rate)
71 {
72 fSampleRate = sample_rate;
73 float fConst0 = std::min<float>(192000.0f, std::max<float>(1.0f, float(fSampleRate)));
74 fConst1 = (2827.43335f / fConst0);
75 fConst2 = (1413.71667f / fConst0);
76 clear_state_f();
77 }
78
init_static(uint32_t sample_rate,PluginLV2 * p)79 void Dsp::init_static(uint32_t sample_rate, PluginLV2 *p)
80 {
81 static_cast<Dsp*>(p)->init(sample_rate);
82 }
83
compute(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0)84 void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0)
85 {
86 #define fVslider0 (*fVslider0_)
87 #define fVslider1 (*fVslider1_)
88 #define fVslider2 (*fVslider2_)
89 float fSlow0 = float(fVslider0);
90 float fSlow1 = (0.00999999978f * (fSlow0 * float(fVslider1)));
91 float fSlow2 = float(fVslider2);
92 float fSlow3 = (9.99999975e-05f * std::pow(4.0f, fSlow2));
93 float fSlow4 = std::pow(2.0f, (2.29999995f * fSlow2));
94 float fSlow5 = (1.0f - (fConst2 * (fSlow4 / std::pow(2.0f, ((2.0f * (1.0f - fSlow2)) + 1.0f)))));
95 float fSlow6 = (0.00200000009f * (std::cos((fConst1 * fSlow4)) * fSlow5));
96 float fSlow7 = (0.00100000005f * mydsp_faustpower2_f(fSlow5));
97 float fSlow8 = (1.0f - (0.00999999978f * fSlow0));
98 for (int i0 = 0; (i0 < count); i0 = (i0 + 1)) {
99 float fTemp0 = float(input0[i0]);
100 fRec1[0] = (fSlow3 + (0.999000013f * fRec1[1]));
101 fRec2[0] = ((0.999000013f * fRec2[1]) - fSlow6);
102 fRec3[0] = (fSlow7 + (0.999000013f * fRec3[1]));
103 fRec0[0] = ((fSlow1 * (fTemp0 * fRec1[0])) - (0.995999992f * ((fRec2[0] * fRec0[1]) + (fRec3[0] * fRec0[2]))));
104 output0[i0] = FAUSTFLOAT(((fRec0[0] + (fSlow8 * fTemp0)) - (0.995999992f * fRec0[1])));
105 fRec1[1] = fRec1[0];
106 fRec2[1] = fRec2[0];
107 fRec3[1] = fRec3[0];
108 fRec0[2] = fRec0[1];
109 fRec0[1] = fRec0[0];
110 }
111 #undef fVslider0
112 #undef fVslider1
113 #undef fVslider2
114 }
115
compute_static(int count,FAUSTFLOAT * input0,FAUSTFLOAT * output0,PluginLV2 * p)116 void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginLV2 *p)
117 {
118 static_cast<Dsp*>(p)->compute(count, input0, output0);
119 }
120
121
connect(uint32_t port,void * data)122 void Dsp::connect(uint32_t port,void* data)
123 {
124 switch ((PortIndex)port)
125 {
126 case LEVEL:
127 fVslider1_ = (float*)data; // , 0.100000001f, 0.0f, 1.0f, 0.00999999978f
128 break;
129 case WAH:
130 fVslider2_ = (float*)data; // , 0.0f, 0.0f, 1.0f, 0.00999999978f
131 break;
132 case WET_DRY:
133 fVslider0_ = (float*)data; // , 100.0f, 0.0f, 100.0f, 1.0f
134 break;
135 default:
136 break;
137 }
138 }
139
connect_static(uint32_t port,void * data,PluginLV2 * p)140 void Dsp::connect_static(uint32_t port,void* data, PluginLV2 *p)
141 {
142 static_cast<Dsp*>(p)->connect(port, data);
143 }
144
145
plugin()146 PluginLV2 *plugin() {
147 return new Dsp();
148 }
149
del_instance(PluginLV2 * p)150 void Dsp::del_instance(PluginLV2 *p)
151 {
152 delete static_cast<Dsp*>(p);
153 }
154
155 /*
156 typedef enum
157 {
158 LEVEL,
159 WAH,
160 WET_DRY,
161 } PortIndex;
162 */
163
164 } // end namespace crybaby
165