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

Reply via email to