|
- #include "gen_exported.h"
-
- namespace gen_exported {
-
-
- /*******************************************************************************************************************
- Copyright (c) 2012 Cycling '74
-
- 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.
- *******************************************************************************************************************/
-
-
- // global noise generator
- Noise noise;
- static const int GENLIB_LOOPCOUNT_BAIL = 100000;
-
-
- // The State struct contains all the state and procedures for the gendsp kernel
- typedef struct State {
- CommonState __commonstate;
- Delay m_delay_5;
- Delta m_delta_14;
- Delta m_delta_11;
- Delta m_delta_20;
- Delta m_delta_17;
- Phasor m_phasor_10;
- Sah m_sah_13;
- Sah m_sah_12;
- Sah m_sah_15;
- Sah m_sah_16;
- Sah m_sah_21;
- Sah m_sah_19;
- Sah m_sah_18;
- Sah m_sah_22;
- t_sample samples_to_seconds;
- t_sample m_ratio_8;
- t_sample m_xfade_9;
- t_sample m_history_1;
- t_sample samplerate;
- t_sample m_history_3;
- t_sample m_history_2;
- t_sample m_blur_6;
- t_sample m_window_7;
- t_sample m_history_4;
- int vectorsize;
- int __exception;
- // re-initialize all member variables;
- inline void reset(t_sample __sr, int __vs) {
- __exception = 0;
- vectorsize = __vs;
- samplerate = __sr;
- m_history_1 = 0;
- m_history_2 = 0;
- m_history_3 = 0;
- m_history_4 = 0;
- m_delay_5.reset("m_delay_5", 88200);
- m_blur_6 = 0;
- m_window_7 = 100;
- m_ratio_8 = 1;
- m_xfade_9 = 1;
- samples_to_seconds = (1 / samplerate);
- m_phasor_10.reset(0);
- m_delta_11.reset(0);
- m_sah_12.reset(0);
- m_sah_13.reset(0);
- m_delta_14.reset(0);
- m_sah_15.reset(0);
- m_sah_16.reset(0);
- m_delta_17.reset(0);
- m_sah_18.reset(0);
- m_sah_19.reset(0);
- m_delta_20.reset(0);
- m_sah_21.reset(0);
- m_sah_22.reset(0);
- genlib_reset_complete(this);
-
- };
- // the signal processing routine;
- inline int perform(t_sample ** __ins, t_sample ** __outs, int __n) {
- vectorsize = __n;
- const t_sample * __in1 = __ins[0];
- t_sample * __out1 = __outs[0];
- t_sample * __out2 = __outs[1];
- if (__exception) {
- return __exception;
-
- } else if (( (__in1 == 0) || (__out1 == 0) || (__out2 == 0) )) {
- __exception = GENLIB_ERR_NULL_BUFFER;
- return __exception;
-
- };
- t_sample mstosamps_1223 = (m_window_7 * (samplerate * 0.001));
- t_sample rsub_1209 = (1 - m_ratio_8);
- t_sample mul_1208 = (rsub_1209 * 1000);
- t_sample div_1207 = safediv(mul_1208, m_window_7);
- samples_to_seconds = (1 / samplerate);
- // the main sample loop;
- while ((__n--)) {
- const t_sample in1 = (*(__in1++));
- t_sample noise_1159 = noise();
- t_sample abs_1177 = fabs(noise_1159);
- t_sample mul_1183 = (abs_1177 * m_blur_6);
- t_sample noise_1161 = noise();
- t_sample abs_1179 = fabs(noise_1161);
- t_sample mul_1189 = (abs_1179 * m_blur_6);
- t_sample noise_1160 = noise();
- t_sample abs_1178 = fabs(noise_1160);
- t_sample mul_1186 = (abs_1178 * m_blur_6);
- t_sample noise_1158 = noise();
- t_sample abs_1176 = fabs(noise_1158);
- t_sample mul_1180 = (abs_1176 * m_blur_6);
- t_sample phasor_1229 = m_phasor_10(div_1207, samples_to_seconds);
- t_sample add_1206 = ((m_history_4 + phasor_1229) + 0.5);
- t_sample mod_1205 = safemod(add_1206, 1);
- t_sample delta_1185 = m_delta_11(mod_1205);
- t_sample sah_1164 = m_sah_12(mul_1183, delta_1185, 0);
- t_sample sah_1184 = m_sah_13(mstosamps_1223, delta_1185, 0);
- t_sample mul_1173 = (sah_1184 * mod_1205);
- t_sample sub_1204 = (mod_1205 - 0.5);
- t_sample mul_1203 = (sub_1204 * 3.1415926535898);
- t_sample cos_1202 = cos(mul_1203);
- t_sample mul_1192 = (cos_1202 * cos_1202);
- t_sample add_1228 = ((m_history_3 + phasor_1229) + 0);
- t_sample mod_1227 = safemod(add_1228, 1);
- t_sample delta_1169 = m_delta_14(mod_1227);
- t_sample sah_1168 = m_sah_15(mul_1189, delta_1169, 0);
- t_sample sah_1190 = m_sah_16(mstosamps_1223, delta_1169, 0);
- t_sample mul_1175 = (sah_1190 * mod_1227);
- t_sample sub_1226 = (mod_1227 - 0.5);
- t_sample mul_1225 = (sub_1226 * 3.1415926535898);
- t_sample cos_1224 = cos(mul_1225);
- t_sample mul_1194 = (cos_1224 * cos_1224);
- t_sample add_1222 = ((m_history_2 + phasor_1229) + 0.25);
- t_sample mod_1221 = safemod(add_1222, 1);
- t_sample delta_1188 = m_delta_17(mod_1221);
- t_sample sah_1166 = m_sah_18(mul_1186, delta_1188, 0);
- t_sample sah_1187 = m_sah_19(mstosamps_1223, delta_1188, 0);
- t_sample mul_1174 = (sah_1187 * mod_1221);
- t_sample sub_1220 = (mod_1221 - 0.5);
- t_sample mul_1219 = (sub_1220 * 3.1415926535898);
- t_sample cos_1218 = cos(mul_1219);
- t_sample mul_1193 = (cos_1218 * cos_1218);
- t_sample add_1200 = ((m_history_1 + phasor_1229) + 0.75);
- t_sample mod_1199 = safemod(add_1200, 1);
- t_sample delta_1182 = m_delta_20(mod_1199);
- t_sample sah_1162 = m_sah_21(mul_1180, delta_1182, 0);
- t_sample sah_1181 = m_sah_22(mstosamps_1223, delta_1182, 0);
- t_sample mul_1172 = (sah_1181 * mod_1199);
- t_sample tap_1214 = m_delay_5.read_linear(mul_1175);
- t_sample tap_1215 = m_delay_5.read_linear(mul_1174);
- t_sample tap_1216 = m_delay_5.read_linear(mul_1173);
- t_sample tap_1217 = m_delay_5.read_linear(mul_1172);
- t_sample mul_1212 = (tap_1214 * mul_1194);
- t_sample mul_1201 = (tap_1216 * mul_1192);
- t_sample add_1245 = (mul_1201 + mul_1212);
- t_sample mix_1244 = (in1 + (m_xfade_9 * (add_1245 - in1)));
- t_sample out1 = mix_1244;
- t_sample mul_1211 = (tap_1215 * mul_1193);
- t_sample sub_1198 = (mod_1199 - 0.5);
- t_sample mul_1197 = (sub_1198 * 3.1415926535898);
- t_sample cos_1196 = cos(mul_1197);
- t_sample mul_1191 = (cos_1196 * cos_1196);
- t_sample mul_1195 = (tap_1217 * mul_1191);
- t_sample add_1247 = (mul_1195 + mul_1211);
- t_sample mix_1246 = (in1 + (m_xfade_9 * (add_1247 - in1)));
- t_sample out2 = mix_1246;
- t_sample history_1165_next_1240 = sah_1164;
- t_sample history_1170_next_1241 = sah_1168;
- t_sample history_1167_next_1242 = sah_1166;
- t_sample history_1163_next_1243 = sah_1162;
- m_delay_5.write(in1);
- m_history_4 = history_1165_next_1240;
- m_history_3 = history_1170_next_1241;
- m_history_2 = history_1167_next_1242;
- m_history_1 = history_1163_next_1243;
- m_delay_5.step();
- // assign results to output buffer;
- (*(__out1++)) = out1;
- (*(__out2++)) = out2;
-
- };
- return __exception;
-
- };
- inline void set_blur(t_sample _value) {
- m_blur_6 = (_value < 0 ? 0 : (_value > 0.25 ? 0.25 : _value));
- };
- inline void set_window(t_sample _value) {
- m_window_7 = (_value < 0.1 ? 0.1 : (_value > 1000 ? 1000 : _value));
- };
- inline void set_ratio(t_sample _value) {
- m_ratio_8 = (_value < 0.25 ? 0.25 : (_value > 4 ? 4 : _value));
- };
- inline void set_xfade(t_sample _value) {
- m_xfade_9 = (_value < 0 ? 0 : (_value > 1 ? 1 : _value));
- };
-
- } State;
-
-
- ///
- /// Configuration for the genlib API
- ///
-
- /// Number of signal inputs and outputs
-
- const int gen_kernel_numins = 1;
- const int gen_kernel_numouts = 2;
-
- int num_inputs() { return gen_kernel_numins; }
- int num_outputs() { return gen_kernel_numouts; }
- int num_params() { return 4; }
-
- /// Assistive lables for the signal inputs and outputs
-
- const char * gen_kernel_innames[] = { "in1" };
- const char * gen_kernel_outnames[] = { "out1", "out2" };
-
- /// Invoke the signal process of a State object
-
- int perform(CommonState *cself, t_sample **ins, long numins, t_sample **outs, long numouts, long n) {
- State * self = (State *)cself;
- return self->perform(ins, outs, n);
- }
-
- /// Reset all parameters and stateful operators of a State object
-
- void reset(CommonState *cself) {
- State * self = (State *)cself;
- self->reset(cself->sr, cself->vs);
- }
-
- /// Set a parameter of a State object
-
- void setparameter(CommonState *cself, long index, t_param value, void *ref) {
- State * self = (State *)cself;
- switch (index) {
- case 0: self->set_blur(value); break;
- case 1: self->set_window(value); break;
- case 2: self->set_ratio(value); break;
- case 3: self->set_xfade(value); break;
-
- default: break;
- }
- }
-
- /// Get the value of a parameter of a State object
-
- void getparameter(CommonState *cself, long index, t_param *value) {
- State *self = (State *)cself;
- switch (index) {
- case 0: *value = self->m_blur_6; break;
- case 1: *value = self->m_window_7; break;
- case 2: *value = self->m_ratio_8; break;
- case 3: *value = self->m_xfade_9; break;
-
- default: break;
- }
- }
-
- /// Allocate and configure a new State object and it's internal CommonState:
-
- void * create(t_param sr, long vs) {
- State *self = new State;
- self->reset(sr, vs);
- ParamInfo *pi;
- self->__commonstate.inputnames = gen_kernel_innames;
- self->__commonstate.outputnames = gen_kernel_outnames;
- self->__commonstate.numins = gen_kernel_numins;
- self->__commonstate.numouts = gen_kernel_numouts;
- self->__commonstate.sr = sr;
- self->__commonstate.vs = vs;
- self->__commonstate.params = (ParamInfo *)genlib_sysmem_newptr(4 * sizeof(ParamInfo));
- self->__commonstate.numparams = 4;
- // initialize parameter 0 ("m_blur_6")
- pi = self->__commonstate.params + 0;
- pi->name = "blur";
- pi->paramtype = GENLIB_PARAMTYPE_FLOAT;
- pi->defaultvalue = self->m_blur_6;
- pi->defaultref = 0;
- pi->hasinputminmax = false;
- pi->inputmin = 0;
- pi->inputmax = 1;
- pi->hasminmax = true;
- pi->outputmin = 0;
- pi->outputmax = 0.25;
- pi->exp = 0;
- pi->units = ""; // no units defined
- // initialize parameter 1 ("m_window_7")
- pi = self->__commonstate.params + 1;
- pi->name = "window";
- pi->paramtype = GENLIB_PARAMTYPE_FLOAT;
- pi->defaultvalue = self->m_window_7;
- pi->defaultref = 0;
- pi->hasinputminmax = false;
- pi->inputmin = 0;
- pi->inputmax = 1;
- pi->hasminmax = true;
- pi->outputmin = 0.1;
- pi->outputmax = 1000;
- pi->exp = 0;
- pi->units = ""; // no units defined
- // initialize parameter 2 ("m_ratio_8")
- pi = self->__commonstate.params + 2;
- pi->name = "ratio";
- pi->paramtype = GENLIB_PARAMTYPE_FLOAT;
- pi->defaultvalue = self->m_ratio_8;
- pi->defaultref = 0;
- pi->hasinputminmax = false;
- pi->inputmin = 0;
- pi->inputmax = 1;
- pi->hasminmax = true;
- pi->outputmin = 0.25;
- pi->outputmax = 4;
- pi->exp = 0;
- pi->units = ""; // no units defined
- // initialize parameter 3 ("m_xfade_9")
- pi = self->__commonstate.params + 3;
- pi->name = "xfade";
- pi->paramtype = GENLIB_PARAMTYPE_FLOAT;
- pi->defaultvalue = self->m_xfade_9;
- pi->defaultref = 0;
- pi->hasinputminmax = false;
- pi->inputmin = 0;
- pi->inputmax = 1;
- pi->hasminmax = true;
- pi->outputmin = 0;
- pi->outputmax = 1;
- pi->exp = 0;
- pi->units = ""; // no units defined
-
- return self;
- }
-
- /// Release all resources and memory used by a State object:
-
- void destroy(CommonState *cself) {
- State * self = (State *)cself;
- genlib_sysmem_freeptr(cself->params);
-
- delete self;
- }
-
-
- } // gen_exported::
|