robert bristow-johnson wrote:
i don't have time now to complete the analysis, but here is my first pass
at getting the z-plane transfer function (something to compare to the DF1
or DF2).
Thanks very much Robert,
I was able to follow your analysis below. Previously I didn't really
understand how to formulate the transfer function for a digital circuit with
outer feedback loops. I have really learnt a lot here so far. For anyone
interested I've made a version of the diagram annotated with the various
transfer function equations based on Robert's analysis below:
http://imagepaste.nullnetwork.net/viewimage.php?id=2275
Robert, were you applying a standard heuristic to know to break the graph at
W? This business of solving around feedback loops is bending my brain a
litte.
i would like it if someone checks this math
I checked the integrator z-transforms against those here:
http://en.wikipedia.org/wiki/Z-transform
And the rest of the algebra worked out the same for me, although the overall
method remains a little obscure to me.
May I ask: did you do all the algebra by hand or do you use a software
package? I must admit I wimped out near the end of working through the
expansion of W(z)/X(z) and used Maxima. I need to go back and study my
fractions I'm afraid.
Robert you said:
there are two state variables, but i won't give them extra symbols
Exactly what points in the graph would you call the "state variables" and
why?
I will be interested to read the remainder of your analysis regarding the
coefficient calculations.
And to Andrew: hopefully I now have enough knowledge to attempt getting the
z-plane transfer function for your new linear SVF (which presumably has a
zero at nyquist, given the frequency response plots you've posted).
Thanks
Ross
there are two integrators and i will include the gain block, Fc with each
integrator. the left integrator has an extra sample delay at the output.
so the left integrator is
H1(z) = Fc * (z^-1)/(1 - z^-1) = Fc/(z-1)
the right integrator is nearly the same (but without the extra unit
delay):
H2(z) = Fc * 1/(1 - z^-1) = (Fc*z)/(z-1)
there are two state variables, but i won't give them extra symbols (to
solve this more quickly). the output of the big adder on the left i
*will* give a symbol (in the z domain), "W". i'm calling the input "X"
and the LPF output, "Y". so the adder does this:
W(z) = X(z) - Y(z) - Qc*H1(z)*W(z)
and the output Y is related to W as what happens when you pass W through
the two integrators:
Y(z) = H1(z)*H2(z) * W(z)
when you plug in Y(z), you can solve for the transfer function from X to
W as
W(z)/X(z) = (z-1)^2 / ( z^2 + (Fc^2 + Fc*Qc - 2)*z + (1 - Fc*Qc) )
and the transfer function from W to Y is
Y(z)/W(z) = (Fc^2 * z) / (z-1)^2 .
then the overall transfer function is
H(z) = Y(z)/X(z) = Y(z)/W(z) * W(z)/X(z)
= (Fc^2 * z) / ( z^2 + (Fc^2 + Fc*Qc - 2)*z + (1 - Fc*Qc) )
so, it appears as i have remembered: other than a zero at the origin
(nothing but a delay involved with that), this is an all-pole filter in
the z-plane. so this cannot be an LPF designed with the bilinear
transform, because bilinear will put two zeros at Nyquist (z=-1) for a
biquad LPF. so, although the poles can be directly compared to the poles
of the Direct Form (1 or 2), it can't be directly compared to the
bilinear mapped LPF (which is what i did splitting the Moog transfer
function into a cascade of two biquad LPFs).
but some comparison *can* be made and the poles can go where the Moog
poles go. but, because of the frequency warping property of the bilinear
transform where i could guarantee that the bumps in the frequency
response got mapped from the s-plane over to the z-plane with their
heights unchanged (and i can pre-warp the location of the peaks and map
them over exactly), i cannot guarantee that if the bumps will have their
heights and locations unchanged when using this state- variable filter.
i would like it if someone checks this math, either with the topology
Ross posted or with the code that has been pointed to in the archive. i
tried to be careful, but may have screwed up.
later tonight, i will try to relate the resonant frequency f0 and the Q
to the coefficients Fc and Qc and see if i get the same thing that Hal
does. i believe that Fc is a function solely of f0/Fs (Fs being the
sampling frequency) and Qc *may* be a function solely of Q. perhaps
someone else can figure that out in the meantime.
--
r b-j r...@audioimagination.com
"Imagination is more important than knowledge."
--
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
--
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