|
|
@@ -37,13 +37,13 @@ typedef struct State { |
|
|
|
SineCycle m_cycle_14; |
|
|
|
SineData __sinedata; |
|
|
|
double m_morph_9; |
|
|
|
double m_tone_10; |
|
|
|
double m_mix_12; |
|
|
|
double m_repeats_11; |
|
|
|
double m_rate_8; |
|
|
|
double m_time_6; |
|
|
|
double m_time_10; |
|
|
|
double m_tone_12; |
|
|
|
double m_rate_11; |
|
|
|
double m_depth_8; |
|
|
|
double m_repeats_6; |
|
|
|
double m_smth_3; |
|
|
|
double m_depth_7; |
|
|
|
double m_mix_7; |
|
|
|
double m_smth_1; |
|
|
|
double samplerate; |
|
|
|
double m_y_2; |
|
|
@@ -57,15 +57,15 @@ typedef struct State { |
|
|
|
m_smth_1 = 0; |
|
|
|
m_y_2 = 0; |
|
|
|
m_smth_3 = 0; |
|
|
|
m_delay_4.reset("m_delay_4", 48000); |
|
|
|
m_delay_5.reset("m_delay_5", 48000); |
|
|
|
m_time_6 = 500; |
|
|
|
m_depth_7 = 1; |
|
|
|
m_rate_8 = 2; |
|
|
|
m_delay_4.reset("m_delay_4", 44100); |
|
|
|
m_delay_5.reset("m_delay_5", 44100); |
|
|
|
m_repeats_6 = 75; |
|
|
|
m_mix_7 = 75; |
|
|
|
m_depth_8 = 1; |
|
|
|
m_morph_9 = 50; |
|
|
|
m_tone_10 = 3000; |
|
|
|
m_repeats_11 = 75; |
|
|
|
m_mix_12 = 100; |
|
|
|
m_time_10 = 500; |
|
|
|
m_rate_11 = 2; |
|
|
|
m_tone_12 = 3000; |
|
|
|
m_dcblock_13.reset(); |
|
|
|
m_cycle_14.reset(samplerate, 0); |
|
|
|
genlib_reset_complete(this); |
|
|
@@ -84,70 +84,70 @@ typedef struct State { |
|
|
|
return __exception; |
|
|
|
|
|
|
|
}; |
|
|
|
double mul_12532 = (m_mix_12 * 0.01); |
|
|
|
double mstosamps_12544 = (m_time_6 * (samplerate * 0.001)); |
|
|
|
double expr_12576 = safediv(((m_tone_10 * 2) * 3.1415926535898), 48000); |
|
|
|
double sin_12539 = sin(expr_12576); |
|
|
|
double clamp_12540 = ((sin_12539 <= 1e-05) ? 1e-05 : ((sin_12539 >= 0.99999) ? 0.99999 : sin_12539)); |
|
|
|
double mul_12536 = (m_repeats_11 * 0.01); |
|
|
|
double mul_12557 = (m_morph_9 * -0.8); |
|
|
|
double add_12555 = (mul_12557 + 40); |
|
|
|
double abs_12556 = fabs(add_12555); |
|
|
|
double mul_12560 = (abs_12556 * 0.01); |
|
|
|
int lt_12547 = (m_morph_9 < 50); |
|
|
|
double mul_12529 = (m_morph_9 * -0.8); |
|
|
|
double add_12527 = (mul_12529 + 40); |
|
|
|
double abs_12528 = fabs(add_12527); |
|
|
|
double rsub_12526 = (80 - abs_12528); |
|
|
|
double mul_12530 = (rsub_12526 * 0.01); |
|
|
|
double mul_12546 = (m_morph_9 * -0.4); |
|
|
|
double add_12545 = (mul_12546 + 20); |
|
|
|
double mul_12548 = (lt_12547 * add_12545); |
|
|
|
double mul_12559 = (m_morph_9 * 0.8); |
|
|
|
double sub_12558 = (mul_12559 - 40); |
|
|
|
double mul_12561 = (sub_12558 * 0.01); |
|
|
|
int gt_12553 = (m_morph_9 > 50); |
|
|
|
double mul_12552 = (gt_12553 * m_morph_9); |
|
|
|
double sub_12551 = (mul_12552 - 50); |
|
|
|
double clamp_12550 = ((sub_12551 <= 0) ? 0 : ((sub_12551 >= 50) ? 50 : sub_12551)); |
|
|
|
double mul_12554 = (clamp_12550 * 0.04); |
|
|
|
double add_12549 = (mul_12548 + mul_12554); |
|
|
|
double mstosamps_19 = (m_time_10 * (samplerate * 0.001)); |
|
|
|
double mul_7 = (m_mix_7 * 0.01); |
|
|
|
double expr_55 = safediv(((m_tone_12 * 2) * 3.1415926535898), 48000); |
|
|
|
double sin_14 = sin(expr_55); |
|
|
|
double clamp_15 = ((sin_14 <= 1e-05) ? 1e-05 : ((sin_14 >= 0.99999) ? 0.99999 : sin_14)); |
|
|
|
int lt_22 = (m_morph_9 < 50); |
|
|
|
double mul_32 = (m_morph_9 * -0.8); |
|
|
|
double add_30 = (mul_32 + 40); |
|
|
|
double abs_31 = fabs(add_30); |
|
|
|
double mul_35 = (abs_31 * 0.01); |
|
|
|
double mul_11 = (m_repeats_6 * 0.01); |
|
|
|
double mul_21 = (m_morph_9 * -0.4); |
|
|
|
double add_20 = (mul_21 + 20); |
|
|
|
double mul_23 = (lt_22 * add_20); |
|
|
|
double mul_4 = (m_morph_9 * -0.8); |
|
|
|
double add_2 = (mul_4 + 40); |
|
|
|
double abs_3 = fabs(add_2); |
|
|
|
double rsub_1 = (80 - abs_3); |
|
|
|
double mul_5 = (rsub_1 * 0.01); |
|
|
|
double mul_34 = (m_morph_9 * 0.8); |
|
|
|
double sub_33 = (mul_34 - 40); |
|
|
|
double mul_36 = (sub_33 * 0.01); |
|
|
|
int gt_28 = (m_morph_9 > 50); |
|
|
|
double mul_27 = (gt_28 * m_morph_9); |
|
|
|
double sub_26 = (mul_27 - 50); |
|
|
|
double clamp_25 = ((sub_26 <= 0) ? 0 : ((sub_26 >= 50) ? 50 : sub_26)); |
|
|
|
double mul_29 = (clamp_25 * 0.04); |
|
|
|
double add_24 = (mul_23 + mul_29); |
|
|
|
// the main sample loop; |
|
|
|
while ((__n--)) { |
|
|
|
const double in1 = (*(__in1++)); |
|
|
|
double mix_12584 = (mstosamps_12544 + (0.999 * (m_smth_3 - mstosamps_12544))); |
|
|
|
double mix_12533 = mix_12584; |
|
|
|
double tap_12543 = m_delay_5.read_linear(mix_12533); |
|
|
|
double mix_12585 = (m_y_2 + (clamp_12540 * (tap_12543 - m_y_2))); |
|
|
|
double mix_12537 = mix_12585; |
|
|
|
double mul_12541 = (mix_12537 * mul_12536); |
|
|
|
double dcblock_12534 = m_dcblock_13(mul_12541); |
|
|
|
double clamp_12535 = ((dcblock_12534 <= -1) ? -1 : ((dcblock_12534 >= 1) ? 1 : dcblock_12534)); |
|
|
|
double mul_12566 = (mix_12537 * mul_12560); |
|
|
|
m_cycle_14.freq(m_rate_8); |
|
|
|
double cycle_12571 = m_cycle_14(__sinedata); |
|
|
|
double cycleindex_12572 = m_cycle_14.phase(); |
|
|
|
double add_12570 = (cycle_12571 + 1); |
|
|
|
double mul_12569 = (add_12570 * 0.5); |
|
|
|
double mul_12573 = (m_depth_7 * mul_12569); |
|
|
|
double add_12562 = (mul_12573 + add_12549); |
|
|
|
double mstosamps_12568 = (add_12562 * (samplerate * 0.001)); |
|
|
|
double mix_12586 = (mstosamps_12568 + (0.999 * (m_smth_1 - mstosamps_12568))); |
|
|
|
double mix_12567 = mix_12586; |
|
|
|
double tap_12575 = m_delay_4.read_linear(mix_12567); |
|
|
|
double mul_12563 = (tap_12575 * mul_12530); |
|
|
|
double mul_12531 = ((mul_12563 + mul_12566) * mul_12532); |
|
|
|
double out1 = (mul_12531 + in1); |
|
|
|
double mul_12564 = (tap_12575 * mul_12561); |
|
|
|
double add_12565 = (mix_12537 + mul_12564); |
|
|
|
double smth1_next_12577 = mix_12533; |
|
|
|
double y0_next_12578 = mix_12537; |
|
|
|
double smth2_next_12579 = mix_12567; |
|
|
|
m_delay_5.write((clamp_12535 + in1)); |
|
|
|
m_delay_4.write(add_12565); |
|
|
|
m_smth_3 = smth1_next_12577; |
|
|
|
m_y_2 = y0_next_12578; |
|
|
|
m_smth_1 = smth2_next_12579; |
|
|
|
double mix_61 = (mstosamps_19 + (0.999 * (m_smth_3 - mstosamps_19))); |
|
|
|
double mix_8 = mix_61; |
|
|
|
double tap_18 = m_delay_5.read_linear(mix_8); |
|
|
|
double mix_62 = (m_y_2 + (clamp_15 * (tap_18 - m_y_2))); |
|
|
|
double mix_12 = mix_62; |
|
|
|
double mul_41 = (mix_12 * mul_35); |
|
|
|
double mul_16 = (mix_12 * mul_11); |
|
|
|
double dcblock_9 = m_dcblock_13(mul_16); |
|
|
|
double clamp_10 = ((dcblock_9 <= -1) ? -1 : ((dcblock_9 >= 1) ? 1 : dcblock_9)); |
|
|
|
m_cycle_14.freq(m_rate_11); |
|
|
|
double cycle_46 = m_cycle_14(__sinedata); |
|
|
|
double cycleindex_47 = m_cycle_14.phase(); |
|
|
|
double add_45 = (cycle_46 + 1); |
|
|
|
double mul_44 = (add_45 * 0.5); |
|
|
|
double mul_48 = (m_depth_8 * mul_44); |
|
|
|
double add_37 = (mul_48 + add_24); |
|
|
|
double mstosamps_43 = (add_37 * (samplerate * 0.001)); |
|
|
|
double mix_63 = (mstosamps_43 + (0.999 * (m_smth_1 - mstosamps_43))); |
|
|
|
double mix_42 = mix_63; |
|
|
|
double tap_50 = m_delay_4.read_linear(mix_42); |
|
|
|
double mul_38 = (tap_50 * mul_5); |
|
|
|
double mul_6 = ((mul_38 + mul_41) * mul_7); |
|
|
|
double out1 = (mul_6 + in1); |
|
|
|
double mul_39 = (tap_50 * mul_36); |
|
|
|
double add_40 = (mix_12 + mul_39); |
|
|
|
double smth1_next_58 = mix_8; |
|
|
|
double y0_next_59 = mix_12; |
|
|
|
double smth2_next_60 = mix_42; |
|
|
|
m_delay_5.write((clamp_10 + in1)); |
|
|
|
m_delay_4.write(add_40); |
|
|
|
m_smth_3 = smth1_next_58; |
|
|
|
m_y_2 = y0_next_59; |
|
|
|
m_smth_1 = smth2_next_60; |
|
|
|
m_delay_4.step(); |
|
|
|
m_delay_5.step(); |
|
|
|
// assign results to output buffer; |
|
|
@@ -157,26 +157,26 @@ typedef struct State { |
|
|
|
return __exception; |
|
|
|
|
|
|
|
}; |
|
|
|
inline void set_time(double _value) { |
|
|
|
m_time_6 = (_value < 20 ? 20 : (_value > 1000 ? 1000 : _value)); |
|
|
|
inline void set_repeats(double _value) { |
|
|
|
m_repeats_6 = (_value < 0 ? 0 : (_value > 110 ? 110 : _value)); |
|
|
|
}; |
|
|
|
inline void set_depth(double _value) { |
|
|
|
m_depth_7 = (_value < 0 ? 0 : (_value > 3 ? 3 : _value)); |
|
|
|
inline void set_mix(double _value) { |
|
|
|
m_mix_7 = (_value < 0 ? 0 : (_value > 100 ? 100 : _value)); |
|
|
|
}; |
|
|
|
inline void set_rate(double _value) { |
|
|
|
m_rate_8 = (_value < 0.1 ? 0.1 : (_value > 5 ? 5 : _value)); |
|
|
|
inline void set_depth(double _value) { |
|
|
|
m_depth_8 = (_value < 0 ? 0 : (_value > 3 ? 3 : _value)); |
|
|
|
}; |
|
|
|
inline void set_morph(double _value) { |
|
|
|
m_morph_9 = (_value < 0 ? 0 : (_value > 100 ? 100 : _value)); |
|
|
|
}; |
|
|
|
inline void set_tone(double _value) { |
|
|
|
m_tone_10 = (_value < 500 ? 500 : (_value > 6000 ? 6000 : _value)); |
|
|
|
inline void set_time(double _value) { |
|
|
|
m_time_10 = (_value < 20 ? 20 : (_value > 1000 ? 1000 : _value)); |
|
|
|
}; |
|
|
|
inline void set_repeats(double _value) { |
|
|
|
m_repeats_11 = (_value < 0 ? 0 : (_value > 110 ? 110 : _value)); |
|
|
|
inline void set_rate(double _value) { |
|
|
|
m_rate_11 = (_value < 0.1 ? 0.1 : (_value > 5 ? 5 : _value)); |
|
|
|
}; |
|
|
|
inline void set_mix(double _value) { |
|
|
|
m_mix_12 = (_value < 0 ? 0 : (_value > 100 ? 100 : _value)); |
|
|
|
inline void set_tone(double _value) { |
|
|
|
m_tone_12 = (_value < 500 ? 500 : (_value > 6000 ? 6000 : _value)); |
|
|
|
}; |
|
|
|
|
|
|
|
} State; |
|
|
@@ -219,13 +219,13 @@ void reset(CommonState *cself) { |
|
|
|
void setparameter(CommonState *cself, long index, double value, void *ref) { |
|
|
|
State * self = (State *)cself; |
|
|
|
switch (index) { |
|
|
|
case 0: self->set_time(value); break; |
|
|
|
case 1: self->set_depth(value); break; |
|
|
|
case 2: self->set_rate(value); break; |
|
|
|
case 0: self->set_repeats(value); break; |
|
|
|
case 1: self->set_mix(value); break; |
|
|
|
case 2: self->set_depth(value); break; |
|
|
|
case 3: self->set_morph(value); break; |
|
|
|
case 4: self->set_tone(value); break; |
|
|
|
case 5: self->set_repeats(value); break; |
|
|
|
case 6: self->set_mix(value); break; |
|
|
|
case 4: self->set_time(value); break; |
|
|
|
case 5: self->set_rate(value); break; |
|
|
|
case 6: self->set_tone(value); break; |
|
|
|
|
|
|
|
default: break; |
|
|
|
} |
|
|
@@ -236,13 +236,13 @@ void setparameter(CommonState *cself, long index, double value, void *ref) { |
|
|
|
void getparameter(CommonState *cself, long index, double *value) { |
|
|
|
State *self = (State *)cself; |
|
|
|
switch (index) { |
|
|
|
case 0: *value = self->m_time_6; break; |
|
|
|
case 1: *value = self->m_depth_7; break; |
|
|
|
case 2: *value = self->m_rate_8; break; |
|
|
|
case 0: *value = self->m_repeats_6; break; |
|
|
|
case 1: *value = self->m_mix_7; break; |
|
|
|
case 2: *value = self->m_depth_8; break; |
|
|
|
case 3: *value = self->m_morph_9; break; |
|
|
|
case 4: *value = self->m_tone_10; break; |
|
|
|
case 5: *value = self->m_repeats_11; break; |
|
|
|
case 6: *value = self->m_mix_12; break; |
|
|
|
case 4: *value = self->m_time_10; break; |
|
|
|
case 5: *value = self->m_rate_11; break; |
|
|
|
case 6: *value = self->m_tone_12; break; |
|
|
|
|
|
|
|
default: break; |
|
|
|
} |
|
|
@@ -262,46 +262,46 @@ void * create(double sr, long vs) { |
|
|
|
self->__commonstate.vs = vs; |
|
|
|
self->__commonstate.params = (ParamInfo *)genlib_sysmem_newptr(7 * sizeof(ParamInfo)); |
|
|
|
self->__commonstate.numparams = 7; |
|
|
|
// initialize parameter 0 ("m_time_6") |
|
|
|
// initialize parameter 0 ("m_repeats_6") |
|
|
|
pi = self->__commonstate.params + 0; |
|
|
|
pi->name = "time"; |
|
|
|
pi->name = "repeats"; |
|
|
|
pi->paramtype = GENLIB_PARAMTYPE_FLOAT; |
|
|
|
pi->defaultvalue = self->m_time_6; |
|
|
|
pi->defaultvalue = self->m_repeats_6; |
|
|
|
pi->defaultref = 0; |
|
|
|
pi->hasinputminmax = false; |
|
|
|
pi->inputmin = 0; |
|
|
|
pi->inputmax = 1; |
|
|
|
pi->hasminmax = true; |
|
|
|
pi->outputmin = 20; |
|
|
|
pi->outputmax = 1000; |
|
|
|
pi->outputmin = 0; |
|
|
|
pi->outputmax = 110; |
|
|
|
pi->exp = 0; |
|
|
|
pi->units = ""; // no units defined |
|
|
|
// initialize parameter 1 ("m_depth_7") |
|
|
|
// initialize parameter 1 ("m_mix_7") |
|
|
|
pi = self->__commonstate.params + 1; |
|
|
|
pi->name = "depth"; |
|
|
|
pi->name = "mix"; |
|
|
|
pi->paramtype = GENLIB_PARAMTYPE_FLOAT; |
|
|
|
pi->defaultvalue = self->m_depth_7; |
|
|
|
pi->defaultvalue = self->m_mix_7; |
|
|
|
pi->defaultref = 0; |
|
|
|
pi->hasinputminmax = false; |
|
|
|
pi->inputmin = 0; |
|
|
|
pi->inputmax = 1; |
|
|
|
pi->hasminmax = true; |
|
|
|
pi->outputmin = 0; |
|
|
|
pi->outputmax = 3; |
|
|
|
pi->outputmax = 100; |
|
|
|
pi->exp = 0; |
|
|
|
pi->units = ""; // no units defined |
|
|
|
// initialize parameter 2 ("m_rate_8") |
|
|
|
// initialize parameter 2 ("m_depth_8") |
|
|
|
pi = self->__commonstate.params + 2; |
|
|
|
pi->name = "rate"; |
|
|
|
pi->name = "depth"; |
|
|
|
pi->paramtype = GENLIB_PARAMTYPE_FLOAT; |
|
|
|
pi->defaultvalue = self->m_rate_8; |
|
|
|
pi->defaultvalue = self->m_depth_8; |
|
|
|
pi->defaultref = 0; |
|
|
|
pi->hasinputminmax = false; |
|
|
|
pi->inputmin = 0; |
|
|
|
pi->inputmax = 1; |
|
|
|
pi->hasminmax = true; |
|
|
|
pi->outputmin = 0.1; |
|
|
|
pi->outputmax = 5; |
|
|
|
pi->outputmin = 0; |
|
|
|
pi->outputmax = 3; |
|
|
|
pi->exp = 0; |
|
|
|
pi->units = ""; // no units defined |
|
|
|
// initialize parameter 3 ("m_morph_9") |
|
|
@@ -318,46 +318,46 @@ void * create(double sr, long vs) { |
|
|
|
pi->outputmax = 100; |
|
|
|
pi->exp = 0; |
|
|
|
pi->units = ""; // no units defined |
|
|
|
// initialize parameter 4 ("m_tone_10") |
|
|
|
// initialize parameter 4 ("m_time_10") |
|
|
|
pi = self->__commonstate.params + 4; |
|
|
|
pi->name = "tone"; |
|
|
|
pi->name = "time"; |
|
|
|
pi->paramtype = GENLIB_PARAMTYPE_FLOAT; |
|
|
|
pi->defaultvalue = self->m_tone_10; |
|
|
|
pi->defaultvalue = self->m_time_10; |
|
|
|
pi->defaultref = 0; |
|
|
|
pi->hasinputminmax = false; |
|
|
|
pi->inputmin = 0; |
|
|
|
pi->inputmax = 1; |
|
|
|
pi->hasminmax = true; |
|
|
|
pi->outputmin = 500; |
|
|
|
pi->outputmax = 6000; |
|
|
|
pi->outputmin = 20; |
|
|
|
pi->outputmax = 1000; |
|
|
|
pi->exp = 0; |
|
|
|
pi->units = ""; // no units defined |
|
|
|
// initialize parameter 5 ("m_repeats_11") |
|
|
|
// initialize parameter 5 ("m_rate_11") |
|
|
|
pi = self->__commonstate.params + 5; |
|
|
|
pi->name = "repeats"; |
|
|
|
pi->name = "rate"; |
|
|
|
pi->paramtype = GENLIB_PARAMTYPE_FLOAT; |
|
|
|
pi->defaultvalue = self->m_repeats_11; |
|
|
|
pi->defaultvalue = self->m_rate_11; |
|
|
|
pi->defaultref = 0; |
|
|
|
pi->hasinputminmax = false; |
|
|
|
pi->inputmin = 0; |
|
|
|
pi->inputmax = 1; |
|
|
|
pi->hasminmax = true; |
|
|
|
pi->outputmin = 0; |
|
|
|
pi->outputmax = 110; |
|
|
|
pi->outputmin = 0.1; |
|
|
|
pi->outputmax = 5; |
|
|
|
pi->exp = 0; |
|
|
|
pi->units = ""; // no units defined |
|
|
|
// initialize parameter 6 ("m_mix_12") |
|
|
|
// initialize parameter 6 ("m_tone_12") |
|
|
|
pi = self->__commonstate.params + 6; |
|
|
|
pi->name = "mix"; |
|
|
|
pi->name = "tone"; |
|
|
|
pi->paramtype = GENLIB_PARAMTYPE_FLOAT; |
|
|
|
pi->defaultvalue = self->m_mix_12; |
|
|
|
pi->defaultvalue = self->m_tone_12; |
|
|
|
pi->defaultref = 0; |
|
|
|
pi->hasinputminmax = false; |
|
|
|
pi->inputmin = 0; |
|
|
|
pi->inputmax = 1; |
|
|
|
pi->hasminmax = true; |
|
|
|
pi->outputmin = 0; |
|
|
|
pi->outputmax = 100; |
|
|
|
pi->outputmin = 500; |
|
|
|
pi->outputmax = 6000; |
|
|
|
pi->exp = 0; |
|
|
|
pi->units = ""; // no units defined |
|
|
|
|
|
|
|