Hallo Chuck,
thank you soo much! All is clear now. It seems I already was close or at least on the right path. The check for real roots is very nice as well, I had a bad feeling ignoring them completely and just crossing fingers in my patch.
Now it isn't difficult anymore to replace the message calculations with signal objects and make a biquad with all signal inlets, for example for Damian's dinosaurs abstractions, that are are using the Biquad Cookbook [1] formulas for various filter types.
I wonder if dealing with the cookbook includes unnecessary conversions? The cookbook calculates parameters for the transfer function (ff1, ff2, ...) from frequency, gain and Q settings, which can be used in [biquad~] directly, but must be converted to poles and zeros for elementary filters. Calculating the poles and zeros directly from frequency, gain and Q should be much simpler, wouldn't it? An Elementary-Filter-Cookbook would be a nice project.
[1] http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
Frank
Charles Henry hat gesagt: // Charles Henry wrote:
There's two problems with your patch. There's a sign error in one of the expr which calculates the imaginary value. The second problem (in the same expr) was a * vs / error ( you put "/ 2*$f1" instead of / 2 / $f1). Does that make a difference?
Anyway, I jiggled with it enough to get it right. Also, I put two other expr that check to make sure the poles / zeros are in fact complex rather than real.
Wait a minute.... how about just making some long expr that will sort it out correctly and supply the zeros and poles for the real case as well. I'll add that too.
Chuck p.s. I had some trouble following your expr syntax. It makes me wonder if there's something I don't know about expr?