Testing with fixed values.

master
Holger Wirtz 5 years ago
parent cd891c4f98
commit bf75622652
  1. 46
      effect_modulated_delay.cpp

@ -167,19 +167,43 @@ void AudioEffectModulatedDelay::setDelay(float milliseconds)
void AudioEffectModulatedDelay::calcModFilterCoeff(float32_t cFrq, float32_t gain, float32_t width) void AudioEffectModulatedDelay::calcModFilterCoeff(float32_t cFrq, float32_t gain, float32_t width)
{ {
/* Calculate intermediate values */ /* Calculate intermediate values */
float32_t A = sqrt(pow(10, gain / 20.0f)); // float32_t A = sqrt(pow(10, gain / 20.0f));
float32_t w0 = 2.0f * PI * cFrq / ((float32_t)AUDIO_SAMPLE_RATE_EXACT); // float32_t w0 = 2.0f * PI * cFrq / ((float32_t)AUDIO_SAMPLE_RATE_EXACT);
float32_t cosw0 = cos(w0); // float32_t cosw0 = cos(w0);
float32_t sinw0 = sin(w0); // float32_t sinw0 = sin(w0);
float32_t alpha = sinw0 / (2.0f * width); // float32_t alpha = sinw0 / (2.0f * width);
/* Calculate coefficients */ /* Calculate coefficients */
float32_t b0 = 1.0f + alpha * A; // float32_t b0 = 1.0f + alpha * A;
float32_t b1 = -2.0f * cosw0; // float32_t b1 = -2.0f * cosw0;
float32_t b2 = 1.0f - alpha * A; // float32_t b2 = 1.0f - alpha * A;
float32_t a0 = 1.0f + alpha / A; // float32_t a0 = 1.0f + alpha / A;
float32_t a1 = -2.0f * cosw0; // float32_t a1 = -2.0f * cosw0;
float32_t a2 = 1.0f - alpha / A; // float32_t a2 = 1.0f - alpha / A;
/* https://stackoverflow.com/questions/20924868/calculate-coefficients-of-2nd-order-butterworth-low-pass-filter/20932062
ff=cutoff_frq/sample_rate=AUDIO_SAMPLE_RATE_EXACT/1000
const double ita =1.0/ tan(M_PI*ff);
const double q=sqrt(2.0);
b0 = 1.0 / (1.0 + q*ita + ita*ita);
b1= 2*b0;
b2= b0;
a1 = 2.0 * (ita*ita - 1.0) * b0;
a2 = -(1.0 - q*ita + ita*ita) * b0;
ff=1000/44117.64706=0.02266666666
ita=804.60898525
q=1.414213
*/
// 1kHz 2nd order Butterworth lowpass filter coefficients
// calculated with Iowa IIR FIlter Designer 6.5
float32_t b0 = 0.124589380980617656;
float32_t b1 = 0.124589380980617656;
float32_t b2 = 0.0;
float32_t a0 = 1.000000000000000000;
float32_t a1 = -0.750821238038764660;
float32_t a2 = 0.0;
/* Normalize so a0 = 1 */ /* Normalize so a0 = 1 */
filter_coeffs[0] = b0 / a0; filter_coeffs[0] = b0 / a0;

Loading…
Cancel
Save