Reply by vrm October 7, 20102010-10-07
It's much better now, but it still have some saturation. I'll try to debug
that.
FYI here the code in case it can help someone :
http://ideone.com/rakFx
Reply by vrm October 6, 20102010-10-06
>On 10/06/2010 09:23 AM, vrm wrote: >> Hi, >> I'm pretty new to DSP and I'm trying to implements simple bass/treble >> control using RBJ audio filter cookbook. >> >> Even if I understand nothing to the math behind the coef calculation. I
did
>> a simple implementation in C using 32 bit float, it's working great ! >> >> What I want to do is to use blackfin fract16 type to do a fixed point >> implementation of those filters (I got a BF537 based board). >> >> I tried to scale down my coefs for being in the range [-1,+1] but I
achieve
>> to have only crappy sound as result (loss of dynamics and a lot of >> artifacts). >> >> I there something to do in order to get those filter working with fixed >> point, more than scaling coefs to the [-1,+1] range ? > >You cannot scale the coefficients, because that changes the filter >frequency response. > >You need to either pick a fixed-point representation scheme that >includes the coefficient values, or you have to do the coefficient >multiplication then shift up (usually by one, because the coefficients >shouldn't exceed -2.0 to 2.0), or you have to multiply and add in >parallel (i.e. x + 0.9x = 1.9x). >
Thanks Tim, now it's clear in my mind. I'll try that tomorrow. Julien
Reply by vrm October 6, 20102010-10-06
BTW the test code : http://ideone.com/c5o35
Reply by Tim Wescott October 6, 20102010-10-06
On 10/06/2010 09:23 AM, vrm wrote:
> Hi, > I'm pretty new to DSP and I'm trying to implements simple bass/treble > control using RBJ audio filter cookbook. > > Even if I understand nothing to the math behind the coef calculation. I did > a simple implementation in C using 32 bit float, it's working great ! > > What I want to do is to use blackfin fract16 type to do a fixed point > implementation of those filters (I got a BF537 based board). > > I tried to scale down my coefs for being in the range [-1,+1] but I achieve > to have only crappy sound as result (loss of dynamics and a lot of > artifacts). > > I there something to do in order to get those filter working with fixed > point, more than scaling coefs to the [-1,+1] range ?
You cannot scale the coefficients, because that changes the filter frequency response. You need to either pick a fixed-point representation scheme that includes the coefficient values, or you have to do the coefficient multiplication then shift up (usually by one, because the coefficients shouldn't exceed -2.0 to 2.0), or you have to multiply and add in parallel (i.e. x + 0.9x = 1.9x). -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html
Reply by vrm October 6, 20102010-10-06
Hi,
I'm pretty new to DSP and I'm trying to implements simple bass/treble
control using RBJ audio filter cookbook.

Even if I understand nothing to the math behind the coef calculation. I did
a simple implementation in C using 32 bit float, it's working great !

What I want to do is to use blackfin fract16 type to do a fixed point
implementation of those filters (I got a BF537 based board).

I tried to scale down my coefs for being in the range [-1,+1] but I achieve
to have only crappy sound as result (loss of dynamics and a lot of
artifacts).

I there something to do in order to get those filter working with fixed
point, more than scaling coefs to the [-1,+1] range ?

Thanks !
Julien