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.





--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp 
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp

Reply via email to