From: Vladimir Vassilevsky on


robert bristow-johnson wrote:


>>That's RBJ cookbook heritage. He likes trigonometry with sin/cos/sinh
>>instead of simply expressing a filter as a function of tg(w).
>
>
> that's all the cookbook is: "take analog prototypes and do the BLT".
>
> what's "tg"? Vlad, dunno how you deal with the prewarping of the
> resonant frequency necessary when using the BLT, but it's going to be
> tan(w0/2) or some trig identity to that. can't avoid it. the sinh()
> and the ln(2) comes from the way "bandwidth" is defined.

I usually calculate filters via BLT with variable W = tan(Pi*Fc/Fs) and
dewarp Q by the factor of sin(X)/X, where X = 2 * Pi * Fc/Fs

> i was told that the ADI sigma lit makes use of the cookbook, but i
> have never seen it. maybe they left something out. i have tried to
> make the cookbook pretty much self-contained.

In the early versions of ADI documentation, they didn't provide a
recipe, but referrenced to your text as "how to calculate coefficients".
Don't know about now.


Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com


From: robert bristow-johnson on
On Mar 15, 4:35 pm, Vladimir Vassilevsky <nos...(a)nowhere.com> wrote:
> robert bristow-johnson wrote:
> >>That's RBJ cookbook heritage. He likes trigonometry with sin/cos/sinh
> >>instead of simply expressing a filter as a function of tg(w).
>
> > that's all the cookbook is: "take analog prototypes and do the BLT".
>
> > what's "tg"?  Vlad, dunno how you deal with the prewarping of the
> > resonant frequency necessary when using the BLT, but it's going to be
> > tan(w0/2) or some trig identity to that.  can't avoid it.  the sinh()
> > and the ln(2) comes from the way "bandwidth" is defined.
>
> I usually calculate filters via BLT with variable W = tan(Pi*Fc/Fs) and
> dewarp Q by the factor of sin(X)/X, where X = 2 * Pi * Fc/Fs

it doesn't appear to be different than the cookbook. for analog
filters, there's a nice relationship between Q and bandwidth in linear
or log frequency.

1/Q = bw/Fc = 2*sinh( ln(2)/2 * BW )

where bw = f2 - f1 is bandwidth in Hz (or whatever units Fc is in, f2
and f1 are the upper and lower bandedges) and BW = log2(f2) - log2(f1)
is bandwidth in octaves.

actually, the cookbook warps BW, but not Q, per se. if it's a LPF or
HPF, there may be a little bump or lip, and the height in dB is some
function of the Q. BLT will map the height of that bump to the same
value. so i didn't wanna change or pre-warp or "compensate" Q, just
the parameters that are directly associated with frequency locations
that *does* get warped with BLT. that's why i wanted to only
compensate Fc and BW.

this is why, for a digital filter designed with BLT, the relationship
between Q and BW is slightly different:

1/Q = 2*sinh( ln(2)/2 * BW * (2*pi*Fc)/sin(2*pi*Fc) )

same warping factor. where or how did you get that sin(X)/X
expression, Vlad?

> > i was told that the ADI sigma lit makes use of the cookbook, but i
> > have never seen it.  maybe they left something out.  i have tried to
> > make the cookbook pretty much self-contained.
>
> In the early versions of ADI documentation, they didn't provide a
> recipe, but referrenced to your text as "how to calculate coefficients".
> Don't know about now.

it should have said "one way to calculate coefficients". but the
sigma line was really for quick 'n cheap audio, and i think most audio
guys think of bandwidth in terms of octaves.

r b-j