2nd-order allpass VCFs?

Magnus Danielson cfmd at swipnet.se
Tue Nov 23 23:51:57 CET 1999

From: Sean Costello <costello at seanet.com>
Subject: Re: 2nd-order allpass VCFs?
Date: Mon, 22 Nov 1999 23:31:56 -0800

> Hi everybody:
> After posting this, I have had some input from others, and done some
> reading in Electronotes (before I pack them up for the move to the SF
> Bay Area). It seems like it is fairly easily to modify a state-variable
> filter to produce an allpass output - Bernie Hutchins describes this in
> some of the Application Notes. However, now I am wondering if it is
> really necessary to create allpass filters out of the state-variable
> filters in order to get the precise control over the notches. Perhaps
> mixing the bandpass outputs of several state-variable filters in
> parallel, and subtracting this from the original input signal, will
> produce similar results. 
> For the "parallel-bandpass filters subtracted from input signal"
> technique to produce really nice notches, I have the feeling that you
> would need filters that can achieve fairly LOW values of Q, as lower Q
> values in the allpass filters tend to produce more prominent sounding
> notches. The state-variable filter I programmed in Csound has problems
> with values of Q that are less than 1, but I will give this a try with
> this filter and other bandpass filters when I have time (which may not
> be until the next millenium, in all honesty). Anyone here experimented
> with this, especially with low-Q bandpass filters?  Also, would a global
> feedback path work to accenuate the effect, as it does with cascaded
> 2nd-order allpass filters?

The trick with state-variable filters is that you can synthesize any
conceivable form zeros independent on how the Q value is, when the poles are
scaled in frequency the zeros will be equalently scaled. Thus, the pole and
zero positions can be "set" in a fixed unscaled relation and both get
automatically scaled, it is VERY neat. From this you can synthesize lowpass,
bandpass, highpass, bandstop, allpass and many other forms very easy, since
they all depend on the zero-positions. For the special-case allpass you want
the zeros to follow along the Q triming of the poles, but it can be done
fairly easy. So, you would not do an all-pass first, you would go directly
for the money and do the notch that you want.

If you like I could derive the hole thing for you...

Also, you must recall that Csound filters live in the z-plane and not the
s-plane, this can cause a hugh difference. Further, the algorithms being used
to syntesize the digital filter parameters are allways flawed in one way or
another, Csounds filter may use some method which does not work well with what
you would like. Keep (most) Csound experiences in the sampled domain and do
not draw extensive conclusions on what it would be like for an continous time


More information about the Synth-diy mailing list