Aha, success! Multiplying denominator coefficients of the peaking filter by A^2
does indeed have the desired effect.
Thank you very much for the help
-----Original Message-----
From: music-dsp-boun...@music.columbia.edu
[mailto:music-dsp-boun...@music.columbia.edu] On Behalf Of Thomas Young
Sent: 04 January 2013 10:33
To: A discussion list for music-related DSP
Subject: Re: [music-dsp] Lerping Biquad coefficients to a flat response
Hi Nigel, which analogue prototype are you referring to when you suggest
multiplying denominator coefficients by the gain factor, the peaking one?
-----Original Message-----
From: music-dsp-boun...@music.columbia.edu
[mailto:music-dsp-boun...@music.columbia.edu] On Behalf Of Nigel Redmon
Sent: 04 January 2013 09:26
To: A discussion list for music-related DSP
Subject: Re: [music-dsp] Lerping Biquad coefficients to a flat response
On 4/01/2013 4:34 AM, Thomas Young wrote:
However I was hoping to avoid scaling the output since if I have to
do that then I might as well just change the wet/dry mix with the
original signal for essentially the same effect and less messing
about.
I read quickly this morning and missed this...with something like a lowpass,
you do get irregularities, but with something like a peaking filter it stays
pretty smooth when summing with the original signal (I guess because the phase
change is smoother, with the second order split up between two halves). So that
part isn't a problem, BUT...
Consider a wet/dry mix...say you have a 6 dB peak that you want to move down to
0 dB (skirts down to -6 dB). OK, at 0% wet you have a flat line at 0 dB. At
100% wet you have your 6 dB peak again (skirt at 0 dB). At 50% wet, you have
about a 3 dB peak, skirt still at 0 dB. There is no setting that will give you
anything but the skit at 0 dB.
Again, as Ross said earlier, you could have just an output gain-set it to 0.5
(-6 dB), and now you have your skirt at - 6 dB, peak at 0 dB. But a wet/dry mix
know is not going to do it.
Ross said:
There is only a difference of scale factors between your constraints and the
RBJ peaking filter constraints so you should be able to use them with minor
modifications (as Nigel suggests, although I didn't take the time to review his
result).
Assuming that you want the gain at DC and nyquist to be equal to your stopband
gain then this is pretty much equivalent to the RBJ coefficient formulas except
that Robert computed them under the requirement of unity gain at DC and
Nyquist, and some specified gain at cf. You want unity gain at cf and specified
gain at DC and Nyquist. This seems to me to just be a direct reinterpretation
of the gain values. You should be able to propagate the needed gain values
through Robert's formulas.
Actually, it's more than a reinterpretation of the gain values (note that no matter what
gain you give it, you won't get anything like what Thomas is after). The poles are
peaking the filter and the zeros are holding down the "shirt" (at 0 dB in the
unmodified filter); obviously the transfer function is arranged to keep that relationship
at any gain setting. So, you need to change it so that the gain is controlling something
else-changing the relationship of the motion between the poles and zeros (the mod I gave
does that).
On Jan 3, 2013, at 10:34 PM, Ross Bencina<rossb-li...@audiomulch.com> wrote:
Hi Thomas,
Replying to both of your messages at once...
On 4/01/2013 4:34 AM, Thomas Young wrote:
However I was hoping to avoid scaling the output since if I have to
do that then I might as well just change the wet/dry mix with the
original signal for essentially the same effect and less messing
about.
Someone else might correct me on this, but I'm not sure that will get you the
same effect. Your proposal seems to be based on the assumption that the filter
is phase linear and 0 delay (ie that the phases all line up between input and
filtered version). That's not the case.
In reality you'd be mixing the phase-warped and delayed (filtered) signal with
the original-phase signal. I couldn't tell you what the frequency response
would look like, but probably not as good as just scaling the peaking filter
output.
On 4/01/2013 6:03 AM, Thomas Young wrote:
Additional optional mumblings:
I think really there are two 'correct' solutions to manipulating
only the coefficients to my ends (that is, generation of
coefficients which produce filters interpolating from bandpass to flat):
The first is to go from pole/zero to transfer function, basically as
you (Nigel) described in your first message - stick the zeros in the
centre, poles near the edge of the unit circle and reduce their
radii
- doing the maths to convert these into the appropriate biquad
coefficients. This isn't really feasible for me to do in realtime
though. I was trying to do a sort of tricksy workaround by lerping
from one set of coefficients to another but on reflection I don't
think there is any mathematical correctness there.
The second is to have an analogue prototype which somehow includes
skirt gain and take the bilinear transform to get the equations for
the coefficients. I'm not really very good with the s domain either
so I actually wouldn't know how to go about this, but it's what I
was originally thinking of.
In the end you're going to have a set of constraints on the frequency response and you
need to solve for the coefficients. You can do that in the s domain and BLT or do it
directly in the z domain. See the "stuck with filter design" thread from
November 17, 2012 for a nice discussion and links to background reading.
There is only a difference of scale factors between your constraints and the
RBJ peaking filter constraints so you should be able to use them with minor
modifications (as Nigel suggests, although I didn't take the time to review his
result).
Assuming that you want the gain at DC and nyquist to be equal to your stopband
gain then this is pretty much equivalent to the RBJ coefficient formulas except
that Robert computed them under the requirement of unity gain at DC and
Nyquist, and some specified gain at cf. You want unity gain at cf and specified
gain at DC and Nyquist. This seems to me to just be a direct reinterpretation
of the gain values. You should be able to propagate the needed gain values
through Robert's formulas.
Cheers,
Ross.