ΣSigmaStudio Ask AI Русский Log in

Does there has "Half-Order Filter" (3dB/oct) ?

SigmaDSP & SigmaStudio Davids Nov 7, 2019 00:00 7 replies Original on forum ↗
Subscribe
Davids Question
Nov 7, 2019 00:00

Hello,

I am trying to make a 3dB/oct High-Pass Filter, maybe it can call "half-order"?

Because as I know the basic order for the first-order filter is 6dB/oct, but how can I make a 3dB/oct filter?

here is the 200Hz 6dB/oct High pass filter:

but how to make 200Hz 3dB/oct High pass filter, which slope is more gentle than the 6dB/oct.

Thanks!

BR.

Alvis

Audio Signal Processors

adau1452

filter_design

6dB/oct

filter

3dB/oct

Half-Order

adau1452 sigmastudio

SigmaDSP Audio Processors

First-Order

Show More

pastedimage1573107334604v1.png
pastedimage1573107334604v1.png
matthijs Reply
Nov 8, 2019 00:00

The first obvious thing I can think of is to take the square root of the transfer function as power series, truncated to a sufficiently large number of terms, and implement that as a FIR filter. The problem is that the number of terms required to get a good approximation may be prohibitively expensive, especially for a low cut-off frequency. I've computed the first 10240 terms of the filter you requested using this method, but I haven't analyzed it to check if it's a decent approximation (let alone after truncating it to a more reasonable length).

KJBob Reply
Nov 10, 2019 00:00

Hello Alvis,

You can trick a low-shelf filter into approximating your desired response. By setting its fo = 26 Hz, slope factor = 0.21, and boost = -25 dB, you get the result shown below -- a highpass whose -3 dB point is near 200 Hz, with a 3 dB / octave (10 dB / decade) slope down to below 3 Hz:

Note that the stock shelf filter only allows for a -10 -- +10 dB boost, so I calculated the needed coefficients with the attached spreadsheet, then typed them manually into the filter as shown above. Small coefficient changes result in large response swings, suggesting that double-precision arithmetic should be used.

Best regards,

Bob

5706.1st-2nd-Order_IIR_Coefficient_Calculator.zip

Davids Reply
Nov 10, 2019 00:00

Hello matthijs and Bob,

Thanks you guys for replying me!

I will do some testing with this method!

very appreciate!

BR,

Alvis

chuckwin Reply
Aug 9, 2024 00:00

Hello Matthis & KJBob,

I have lots of experience with 1452, and have implemented the pinking filter in Sigma Studio many times. However, I am now in SHARC world and would like a way to obtain a half-order response so I can generate pink noise noise within SHARC. Can you direct me to some resources on this topic? I cannot seem to find any canned resources for white or pink noise within the SAM BareMetal Framework.

Also, I have the analog transfer function for the half order filter, and it simulates a 3dB response very nicely in a spreadsheet (after some algebraic manipulation to obtain the magnitude function):

However, not sure if I can apply a bilinear transform to generate a z-domain diff equation from which I can derive coefficients for a first-order pole/zero function.

Are there resources within the SHARC domain that are available to be able to do this? If so, I cannot seem to find them. Any help would be greatly appreciated.

cheers,

chuck

pastedimage1723246153138v1.png
pastedimage1723246153138v1.png
chuckwin Reply
Aug 9, 2024 00:00

Hello Matthis & KJBob,

I have lots of experience with 1452, and have implemented the pinking filter in Sigma Studio many times. However, I am now in SHARC world and would like a way to obtain a half-order response so I can generate pink noise noise within SHARC. Can you direct me to some resources on this topic? I cannot seem to find any canned resources for white or pink noise within the SAM BareMetal Framework.

Also, I have the analog transfer function for the half order filter, and it simulates a 3dB response very nicely in a spreadsheet (after some algebraic manipulation to obtain the magnitude function):

However, not sure if I can apply a bilinear transform to generate a z-domain diff equation from which I can derive coefficients for a first-order pole/zero function.

Are there resources within the SHARC domain that are available to be able to do this? If so, I cannot seem to find them. Any help would be greatly appreciated.

cheers,

chuck

6170.pastedimage1723246153138v1.png
6170.pastedimage1723246153138v1.png
matthijs Reply
Aug 10, 2024 00:00

No, you can't, no actual (analog or digital) filter has this magnitude response, it's not even mathematically possible (there's no differentiable complex function whose absolute value matches that formula, you can't have a "half order" pole or zero, only integer order).

In practice, pinking filters are implemented as stack of second-order (biquad) filters whose coefficients have been numerically optimized to match the desired magnitude response over the frequency range of interest (which needs to keep some distance from DC and Nyquist). This beautiful Web 1.0 page has some examples: https://www.firstpr.com.au/dsp/pink-noise/

DaveThib Reply
Aug 15, 2024 00:00

Hello Chuck,

It seems like the approximation that KJBob has done would work fine in the SHARC world. You would just apply the coefficients to the filters in the SHARC.

Have you tried that?

Dave T