18#include "VectorJuicePlugin.hpp"
24VectorJuicePlugin::VectorJuicePlugin()
34void VectorJuicePlugin::initParameter(
uint32_t index, Parameter& parameter)
39 parameter.hints = kParameterIsAutomatable;
41 parameter.symbol =
"x";
42 parameter.ranges.def = 0.5f;
43 parameter.ranges.min = 0.0f;
44 parameter.ranges.max = 1.0f;
48 parameter.hints = kParameterIsAutomatable;
50 parameter.symbol =
"y";
51 parameter.ranges.def = 0.5f;
52 parameter.ranges.min = 0.0f;
53 parameter.ranges.max = 1.0f;
57 parameter.hints = kParameterIsAutomatable;
58 parameter.name =
"Orbit Size X";
59 parameter.symbol =
"sizex";
60 parameter.ranges.def = 0.5f;
61 parameter.ranges.min = 0.0f;
62 parameter.ranges.max = 1.0f;
66 parameter.hints = kParameterIsAutomatable;
67 parameter.name =
"Orbit Size Y";
68 parameter.symbol =
"sizey";
69 parameter.ranges.def = 0.5f;
70 parameter.ranges.min = 0.0f;
71 parameter.ranges.max = 1.0f;
74 case paramOrbitSpeedX:
75 parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
76 parameter.name =
"Orbit Speed X";
77 parameter.symbol =
"speedx";
78 parameter.ranges.def = 4.0f;
79 parameter.ranges.min = 1.0f;
80 parameter.ranges.max = 128.0f;
83 case paramOrbitSpeedY:
84 parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
85 parameter.name =
"Orbit Speed Y";
86 parameter.symbol =
"speedy";
87 parameter.ranges.def = 4.0f;
88 parameter.ranges.min = 1.0f;
89 parameter.ranges.max = 128.0f;
92 case paramSubOrbitSize:
93 parameter.hints = kParameterIsAutomatable;
94 parameter.name =
"SubOrbit Size";
95 parameter.symbol =
"subsize";
96 parameter.ranges.def = 0.5f;
97 parameter.ranges.min = 0.0f;
98 parameter.ranges.max = 1.0f;
101 case paramSubOrbitSpeed:
102 parameter.hints = kParameterIsAutomatable;
103 parameter.name =
"SubOrbit Speed";
104 parameter.symbol =
"subspeed";
105 parameter.ranges.def = 32.0f;
106 parameter.ranges.min = 1.0f;
107 parameter.ranges.max = 128.0f;
110 case paramSubOrbitSmooth:
111 parameter.hints = kParameterIsAutomatable;
112 parameter.name =
"SubOrbit Wave";
113 parameter.symbol =
"subwave";
114 parameter.ranges.def = 0.5f;
115 parameter.ranges.min = 0.0f;
116 parameter.ranges.max = 1.0f;
119 case paramOrbitWaveX:
120 parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
121 parameter.name =
"Orbit Wave X";
122 parameter.symbol =
"wavex";
123 parameter.ranges.def = 3.0f;
124 parameter.ranges.min = 1.0f;
125 parameter.ranges.max = 4.0f;
128 case paramOrbitWaveY:
129 parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
130 parameter.name =
"Orbit Wave Y";
131 parameter.symbol =
"wavey";
132 parameter.ranges.def = 3.0f;
133 parameter.ranges.min = 1.0f;
134 parameter.ranges.max = 4.0f;
137 case paramOrbitPhaseX:
138 parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
139 parameter.name =
"Orbit Phase X";
140 parameter.symbol =
"phasex";
141 parameter.ranges.def = 1.0f;
142 parameter.ranges.min = 1.0f;
143 parameter.ranges.max = 4.0f;
146 case paramOrbitPhaseY:
147 parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
148 parameter.name =
"Orbit Phase Y";
149 parameter.symbol =
"phasey";
150 parameter.ranges.def = 1.0f;
151 parameter.ranges.min = 1.0f;
152 parameter.ranges.max = 4.0f;
156 parameter.hints = kParameterIsOutput;
157 parameter.name =
"Orbit X";
158 parameter.symbol =
"orx";
159 parameter.ranges.def = 0.5f;
160 parameter.ranges.min = 0.0f;
161 parameter.ranges.max = 1.0f;
165 parameter.hints = kParameterIsOutput;
166 parameter.name =
"Orbit Y";
167 parameter.symbol =
"ory";
168 parameter.ranges.def = 0.5f;
169 parameter.ranges.min = 0.0f;
170 parameter.ranges.max = 1.0f;
173 case paramSubOrbitOutX:
174 parameter.hints = kParameterIsOutput;
175 parameter.name =
"SubOrbit X";
176 parameter.symbol =
"sorx";
177 parameter.ranges.def = 0.5f;
178 parameter.ranges.min = 0.0f;
179 parameter.ranges.max = 1.0f;
182 case paramSubOrbitOutY:
183 parameter.hints = kParameterIsOutput;
184 parameter.name =
"SubOrbit Y";
185 parameter.symbol =
"sory";
186 parameter.ranges.def = 0.5f;
187 parameter.ranges.min = 0.0f;
188 parameter.ranges.max = 1.0f;
193void VectorJuicePlugin::initProgramName(
uint32_t index,
String& programName)
198 programName =
"Default";
204float VectorJuicePlugin::getParameterValue(
uint32_t index)
const
212 case paramOrbitSizeX:
214 case paramOrbitSizeY:
216 case paramOrbitSpeedX:
218 case paramOrbitSpeedY:
220 case paramSubOrbitSize:
222 case paramSubOrbitSpeed:
223 return subOrbitSpeed;
224 case paramSubOrbitSmooth:
225 return subOrbitSmooth;
226 case paramOrbitWaveX:
228 case paramOrbitWaveY:
230 case paramOrbitPhaseX:
232 case paramOrbitPhaseY:
238 case paramSubOrbitOutX:
240 case paramSubOrbitOutY:
247void VectorJuicePlugin::setParameterValue(
uint32_t index,
float value)
249 bool resetPhase =
false;
259 case paramOrbitSizeX:
262 case paramOrbitSizeY:
265 case paramOrbitSpeedX:
269 case paramOrbitSpeedY:
273 case paramSubOrbitSize:
274 subOrbitSize =
value;
276 case paramSubOrbitSpeed:
277 subOrbitSpeed =
value;
280 case paramSubOrbitSmooth:
281 subOrbitSmooth =
value;
283 case paramOrbitWaveX:
286 case paramOrbitWaveY:
289 case paramOrbitPhaseX:
293 case paramOrbitPhaseY:
307void VectorJuicePlugin::loadProgram(
uint32_t index)
320 subOrbitSpeed = 32.0f;
321 subOrbitSmooth = 0.5f;
334void VectorJuicePlugin::activate()
337 orbitX=orbitY=orbitTX=orbitTY=0.5;
338 subOrbitX=subOrbitY=subOrbitTX=subOrbitTY=0;
339 interpolationDivider=200;
340 bar=tickX=tickY=percentageX=percentageY=tickOffsetX=0;
341 tickOffsetY=sinePosX=sinePosY=tick=percentage=tickOffset=sinePos=0;
345 for (
int i=0;
i<2;
i++) {
352void VectorJuicePlugin::run(
const float** inputs,
float** outputs,
uint32_t frames)
354 float out1, out2, tX, tY;
365 out1 = inputs[0][
i]*tN(1-std::sqrt((tX*tX)+(tY*tY)));
366 out2 = inputs[1][
i]*tN(1-std::sqrt((tX*tX)+(tY*tY)));
368 out1 += inputs[2][
i]*tN(1-std::sqrt(((1-tX)*(1-tX))+(tY*tY)));
369 out2 += inputs[3][
i]*tN(1-std::sqrt(((1-tX)*(1-tX))+(tY*tY)));
371 out1 += inputs[4][
i]*tN(1-std::sqrt(((1-tX)*(1-tX))+((1-tY)*(1-tY))));
372 out2 += inputs[5][
i]*tN(1-std::sqrt(((1-tX)*(1-tX))+((1-tY)*(1-tY))));
374 out1 += inputs[6][
i]*tN(1-std::sqrt((tX*tX)+((1-tY)*(1-tY))));
375 out2 += inputs[7][
i]*tN(1-std::sqrt((tX*tX)+((1-tY)*(1-tY))));
377 outputs[0][
i] = out1;
378 outputs[1][
i] = out2;
386 return new VectorJuicePlugin();
#define END_NAMESPACE_DISTRHO
Definition DistrhoDefines.h:191
#define START_NAMESPACE_DISTRHO
Definition DistrhoDefines.h:190
Plugin * createPlugin()
Definition VectorJuicePlugin.cpp:384
int y
Definition inflate.c:1588
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
static PuglViewHint int value
Definition pugl.h:1708
unsigned int uint32_t
Definition mid.cpp:100