BiQuad calculation
Posted: Fri Mar 11, 2016 2:20 am
Hi all,
I'm interested in creating an EQ which should be dynamic (offers the ability to change the F,G,Q parameters fast) as well as draw the 'frequency response' graph on the screen.
Naturally, I'll need access to these BiQuads for each case (LPF, HPF, Peak, etc.) for two reasons:
A. For the recursive IIR filter itself
B. For the graphic representation -[in Green math - to fit the 'GraphLinesCL' module which is so handy for this mission].
Which method should I use for such a task, Green math, Blue DSP or Ruby?
From what I know:
Green math - can give me lower CPU (calculation only when param is changed), but no sync (between BiQuads) and 'funny timing'. I think the 'no sync' issue might cause 'glitches' between the calculation of all 5 BiQuads which will cause momentary 'clicks and scratch' noise [not all 5 biquads are calculated at the same time].
DSP Code - perfect timing & sync, can be manipulated to 'make calculation only when param is changed' (on ASM level). But, I'll still need to convert from 'Blue to Green' for the 'GraphicLinesCS' module. This is done with constant 'TICK' and is CPU heavy.
Also 'if' and 'case' statements are not there.
RUBY - Perfect sync and easy implementation (if, case, etc.)
Shouldn't this be the best way?
Is there a chance for 'Sync issues between the 5 BiQuads' if all 5 are calculated in a single RUBY module but output is dedicated (in case of a single green math output for each of the 5 BiQuads)?
Isn't there a way to use 'monoin' or 'streamin' into a RUBY module? Or just green input and output?
I'm interested in creating an EQ which should be dynamic (offers the ability to change the F,G,Q parameters fast) as well as draw the 'frequency response' graph on the screen.
Naturally, I'll need access to these BiQuads for each case (LPF, HPF, Peak, etc.) for two reasons:
A. For the recursive IIR filter itself
B. For the graphic representation -[in Green math - to fit the 'GraphLinesCL' module which is so handy for this mission].
Which method should I use for such a task, Green math, Blue DSP or Ruby?
From what I know:
Green math - can give me lower CPU (calculation only when param is changed), but no sync (between BiQuads) and 'funny timing'. I think the 'no sync' issue might cause 'glitches' between the calculation of all 5 BiQuads which will cause momentary 'clicks and scratch' noise [not all 5 biquads are calculated at the same time].
DSP Code - perfect timing & sync, can be manipulated to 'make calculation only when param is changed' (on ASM level). But, I'll still need to convert from 'Blue to Green' for the 'GraphicLinesCS' module. This is done with constant 'TICK' and is CPU heavy.
Also 'if' and 'case' statements are not there.
RUBY - Perfect sync and easy implementation (if, case, etc.)
Shouldn't this be the best way?
Is there a chance for 'Sync issues between the 5 BiQuads' if all 5 are calculated in a single RUBY module but output is dedicated (in case of a single green math output for each of the 5 BiQuads)?
Isn't there a way to use 'monoin' or 'streamin' into a RUBY module? Or just green input and output?