93 float val, fade1, fade2;
95 fade1 = phs_[0].Process();
96 fade2 = phs_[1].Process();
97 if(prev_phs_a_ > fade1)
99 mod_a_amt_ = fun_ * ((float)(myrand() % 255) / 255.0f)
100 * (del_size_ * 0.5f);
102 = 0.0002f + (((float)(myrand() % 255) / 255.0f) * 0.001f);
104 if(prev_phs_b_ > fade2)
106 mod_b_amt_ = fun_ * ((float)(myrand() % 255) / 255.0f)
107 * (del_size_ * 0.5f);
109 = 0.0002f + (((float)(myrand() % 255) / 255.0f) * 0.001f);
111 slewed_mod_[0] += mod_coeff_[0] * (mod_a_amt_ - slewed_mod_[0]);
112 slewed_mod_[1] += mod_coeff_[1] * (mod_b_amt_ - slewed_mod_[1]);
117 fade1 = 1.0f - fade1;
118 fade2 = 1.0f - fade2;
120 mod_[0] = fade1 * (del_size_ - 1);
121 mod_[1] = fade2 * (del_size_ - 1);
123 gain_[0] = arm_sin_f32(fade1 * (
float)M_PI);
124 gain_[1] = arm_sin_f32(fade2 * (
float)M_PI);
126 gain_[0] = sinf(fade1 * PI_F);
127 gain_[1] = sinf(fade2 * PI_F);
135 d_[0].SetDelay(mod_[0] + mod_a_amt_);
136 d_[1].SetDelay(mod_[1] + mod_b_amt_);
137 d_[0].SetDelay(mod_[0] + slewed_mod_[0]);
138 d_[1].SetDelay(mod_[1] + slewed_mod_[1]);
140 val += (d_[0].Read() * gain_[0]);
141 val += (d_[1].Read() * gain_[1]);
151 if(transpose_ != transpose || force_recalc_)
153 transpose_ = transpose;
154 idx = (uint8_t)fabsf(transpose);
155 ratio = semitone_ratios_[idx % 12];
156 ratio *= (uint8_t)(fabsf(transpose) / 12) + 1;
165 mod_freq_ = ((ratio - 1.0f) * sr_) / del_size_;
170 phs_[0].SetFreq(mod_freq_);
171 phs_[1].SetFreq(mod_freq_);
174 force_recalc_ =
false;
211 float fun_, mod_a_amt_, mod_b_amt_, prev_phs_a_, prev_phs_b_;