File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -220,10 +220,15 @@ class BiquadFilter : public SignalProcessor {
220220 init ();
221221 }
222222 virtual ~BiquadFilter (){}
223+
223224 void setSampleRate (float sr){
224225 pioversr = M_PI/sr;
225226 }
226227
228+ float getSampleRate (){
229+ return M_PI / pioversr;
230+ }
231+
227232 size_t getStages (){
228233 return stages;
229234 }
@@ -274,13 +279,14 @@ class BiquadFilter : public SignalProcessor {
274279 arm_biquad_cascade_df2T_f32 (&df2, input, output, size);
275280#else
276281 for (size_t k=0 ; k<stages; k++){
277- float b0=getFilterStage (k).getCoefficients ()[0 ];
278- float b1=getFilterStage (k).getCoefficients ()[1 ];
279- float b2=getFilterStage (k).getCoefficients ()[2 ];
280- float a1=getFilterStage (k).getCoefficients ()[3 ];
281- float a2=getFilterStage (k).getCoefficients ()[4 ];
282- float d1=state[k*BIQUAD_STATE_VARIABLES_PER_STAGE];
283- float d2=state[k*BIQUAD_STATE_VARIABLES_PER_STAGE+1 ];
282+ float * coeffs = getFilterStage (k).getCoefficients ();
283+ float b0 = *coeffs++;
284+ float b1 = *coeffs++;
285+ float b2 = *coeffs++;
286+ float a1 = *coeffs++;
287+ float a2 = *coeffs++;
288+ float d1 = state[k*BIQUAD_STATE_VARIABLES_PER_STAGE];
289+ float d2 = state[k*BIQUAD_STATE_VARIABLES_PER_STAGE+1 ];
284290 for (size_t n=0 ; n<size; n++){ // manually apply filter, one stage
285291 float out=b0 * input[n] + d1;
286292 d1 = b1 * input[n] + a1 * out + d2;
You can’t perform that action at this time.
0 commit comments