So I would like to have a design method for filters with 3dB and 6dB per octave roll off -- for generating pink and brown noise respectively.
I know the following 'pinking' filters exist: Filter to add 3dB per octave?
But the poster says he doesn't remember the value for A, nor does he give any idea of how he did it in the first place.
So my main question is:
How do we pick the poles and zeros of such a filter?
Answer
So I have figured out the answer, thanks to a little prodding by RBJ.
Creating -6dB/octave Filters and Brown Noise:
- Generate a White Noise Sequence.
- Design a 1st Order Butterworth Filter
- Apply 1st Order Buttworth to the White Noise Sequence [Use the Bilinear Transform to convert the analog coefficients to digital, and apply the digital filter to the white noise sequence].
Creating -3dB/octave Filters and Pink Noise:
- Generate a White Noise Sequence
- Generate arbitrary interleaved poles and zeros on the positive real line within the unit circle. Such that $|p_{i}| > |z_{i}|$ and $|z_{i}| > |p_{i+1}|$. Set the first pole close to the unit circle.
- Convert these roots to coefficients, and use these coefficients as the coefficients of a digital filter.
- Apply said digital filter to the White Noise Sequence.
What I am still not sure of is why we need to interleave the poles and zeros, but that isn't exactly what the question asked. Can anybody elaborate?
No comments:
Post a Comment