Skip to content

Commit 1e4db73

Browse files
author
Martin Klang
committed
added BiquadFilter::getSampleRate(), streamlined non-arm implementation
1 parent 5084357 commit 1e4db73

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

LibSource/BiquadFilter.h

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff 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;

0 commit comments

Comments
 (0)