DSPRelated.com
Forums

How to scale second order IIR filter koefficients?

Started by Gery August 15, 2006
"robert bristow-johnson" <rbj@audioimagination.com> writes:

> now, so much audio processing is done native that it really doesn't > matter.
Native? You mean, on a PC platform? -- % Randy Yates % "Remember the good old 1980's, when %% Fuquay-Varina, NC % things were so uncomplicated?" %%% 919-577-9882 % 'Ticket To The Moon' %%%% <yates@ieee.org> % *Time*, Electric Light Orchestra http://home.earthlink.net/~yatescr
Randy Yates wrote:
> "robert bristow-johnson" <rbj@audioimagination.com> writes: > > > now, so much audio processing is done native that it really doesn't > > matter. > > Native? You mean, on a PC platform?
or Mac. or some UNIX platform. (are there still SGI computers still in use?) this is just to differentiate it from being processed by some rack-mounted box (like a Harmonizer) or some accelerator card. i think that all DirectX and probably all VST plugins are almost all PC and, for Mac, it's "Audio Units" or proprietary (like Pro Tools AudioSuite or Real-time AudioSuite). there's probably some new native DSP wrapping out that is vying for standardhood, but i dunno what it might be. there are too many of these dumb "standards" emerging with no salient reason for them to exist. but that is how some folks, like Waves, makes their money by offering a line of effects that have versions that work on any particular platform. r b-j
> 0.99999988079071 = 1 - 2^-23, from which I inferred a 24-bit word length, > from which I inferred a 56K. It's a weak chain of reasoning, I'll > admit -- but are there any other 24-bit DSP chips out there?
Yes, it's a 56303 I found out yesterday (reading old assembler examples) that the DSP has a "scale up - shift data one bit to the left"-option that can be used when the coefficients are bigger than +/- 1. So now I dont have to scale down my coefficients. From the file IIR7.ASM: "Since 1 bit scaling is used, all coefficients are the actual value for the filter divided by two." Thank you all for your help, it was interesting. Learning all the time.
Gery wrote:
> > 0.99999988079071 = 1 - 2^-23, from which I inferred a 24-bit word length, > > from which I inferred a 56K. It's a weak chain of reasoning, I'll > > admit -- but are there any other 24-bit DSP chips out there? > > Yes, it's a 56303 > > I found out yesterday (reading old assembler examples) that the DSP has a > "scale up - shift data one bit to the left"-option that can be used when the > coefficients are bigger than +/- 1.
so that gives you a inherent coefficient range of -2.000000 to +1.9999999 that mode bit in the SR is just not worth it. if you're using the 56K to do filtering, you'll want to use noise-shaping in the truncation of the 48 bit result to 24 bit and then that mode just gets in the way. i've posted short snippets of how to do this in the past (been nearly 5 years since i've done 56K). i can dig it up if i have to.
> So now I dont have to scale down my coefficients.
you can never avoid that. you are *always* scaling your coefs by some factor if you're using a fixed-point processor.
> From the file IIR7.ASM: > > "Since 1 bit scaling is used, all coefficients are the > actual value for the filter divided by two."
and that is scaling your coefficients.
> Thank you all for your help, it was interesting. Learning all the time.
send me a legit email, i'll show you how to do this. r b-j
I found some information about first order noise shaping at
http://www.earlevel.com/Digital%20Audio/Biquads.html. Is it someting like
that you ment?

Or I can e-mail you.

"robert bristow-johnson" <rbj@audioimagination.com> skrev i meddelandet
news:1155740503.116377.222500@74g2000cwt.googlegroups.com...
> > Gery wrote: > > > 0.99999988079071 = 1 - 2^-23, from which I inferred a 24-bit word
length,
> > > from which I inferred a 56K. It's a weak chain of reasoning, I'll > > > admit -- but are there any other 24-bit DSP chips out there? > > > > Yes, it's a 56303 > > > > I found out yesterday (reading old assembler examples) that the DSP has
a
> > "scale up - shift data one bit to the left"-option that can be used when
the
> > coefficients are bigger than +/- 1. > > so that gives you a inherent coefficient range of -2.000000 to > +1.9999999 > > that mode bit in the SR is just not worth it. if you're using the 56K > to do filtering, you'll want to use noise-shaping in the truncation of > the 48 bit result to 24 bit and then that mode just gets in the way. > i've posted short snippets of how to do this in the past (been nearly 5 > years since i've done 56K). i can dig it up if i have to. > > > So now I dont have to scale down my coefficients. > > you can never avoid that. you are *always* scaling your coefs by some > factor if you're using a fixed-point processor. > > > From the file IIR7.ASM: > > > > "Since 1 bit scaling is used, all coefficients are the > > actual value for the filter divided by two." > > and that is scaling your coefficients. > > > Thank you all for your help, it was interesting. Learning all the time. > > send me a legit email, i'll show you how to do this. > > r b-j >
Gery wrote:
> I found some information about first order noise shaping at > http://www.earlevel.com/Digital%20Audio/Biquads.html. Is it someting like > that you meant?
yes. the "Direct form I with first-order noise shaping" graphic is precisely what you want to do and you can do it quite cheaply with the 56K, but don't use that shift-left scaling bit. that mode will just get in your way.
> Or I can e-mail you.
recommended. r b-j