[sdiy] S-plane visualization software
Oren B. Leavitt
oleavitt at ix.netcom.com
Sun Feb 24 05:27:23 CET 2002
Thanks Magnus,
It's a start...I'll investigate further...
I'm new to the list, although I've been into building analog synths for about twenty
years.
The easy way would be to punch in some numbers and view the results as XY graphs or
polar plots. Most of the few programs out there that do just that.
I guess the challenge here is to add the ability to manipulate elements on a graphic
plot (poles, zeros) and see other parts (the real time axis) change, and show a new
transfer function.
There might be more sophisticated, and probably expen$ive, programs out there that
have that feature...But it would be fun, in DIY spirit, to implement a program to do
this..I like the idea!
Oren
PS - Nice ASCII art!
Magnus Danielson wrote:
> From: "Oren B. Leavitt" <oleavitt at ix.netcom.com>
> Subject: Re: [sdiy] S-plane visualization software
> Date: Sat, 23 Feb 2002 17:40:11 -0800
>
> > Hello,
>
> Hi Gren,
>
> > As a programmer by trade, I have been trying to think of ways to put that lazy
> > PC to work in a synth-DIY-useful way, too.
> >
> > I like the idea of an interactive filter designer - I just might write an app if
> > I find some spare time.
> >
> > Where can I get some backgrounders on the math and theory involved?
>
> Well, why not on the Synth-DIY? ;O)
>
> > I will need examples, equations, and graphs, etc... to get an idea.
>
> Plenty of those around...
>
> > I am not up to snuff on s-plane filter math...I think I mis-Laplaced my
> > head...;-)
>
> Tip: Do not place your poles on the right half-plane if you want
> stability ;O)
>
> OK.
>
> If you have a transfer function H(s) then we talk about its amplitude
> responce to be |H(s)| and we usually let s = jw for stable
> frequencies, thus the amplitude responce becomes |H(jw)|.
>
> The phase responce is arg(H(jw)|.
>
> Since H(s) is really built up of a number of poles and zeroes we can
> write it
>
> ---
> (s-z )(s-z )...(s-z ) | | s-z
> 1 2 m i i
> H(s) = H --------------------- = H ---------
> 0 (s-p )(s-p )...(s-p ) 0 ---
> 1 2 n | | s-p
> i i
>
> Using this the amplitude responce becomes
>
> ---
> |jw-z ||jw-z |...|jw-z | | | |jw-p |
> 1 2 m i i
> |H(jw)| = H ------------------------ = H -----------
> 0 |jw-p ||jw-p |...|jw-p | 0 ---
> 1 2 n | | |jw-p |
> i i
>
> since
> _______________
> 2 / 2 2 |
> |jw-p | = \/ a + (w - b )
> i i i
>
> and similarly for z's we get by assuming:
>
> z = g + id
> i i i
>
> p = a + ib
> i i i
> __________________
> / --- 2 2 |
> / | | g + (w-d )
> / i i i
> |H(jw)| = H \ / ----------------
> 0 \/ --- 2 2
> | | a + (w-b )
> i i i
>
> where as the phase responce becomes
>
> --- d - w --- b - w
> \ i \ i
> phi(w) = > arctan ----- - > arctan -----
> / g / a
> --- i --- i
> i i
>
> The phase delay is given as
>
> phi(w)
> tau (w) = - ------
> p w
>
> and the group delay is given as
>
> d phi(w)
> D(w) = - --------
> dw
>
> that is, the derivate of phase.
>
> Don't forget that w is allways 2*pi*f and pi is about 3.14159 ;O)
>
> Do you need much more math works?
>
> You migth need a few examples... right. Butterworth filters have all
> their poles evenly spread out on a circle with the center at the origo
> and naturally no poles on the right side half. For an odd number of
> poles one lies on the real axis. Let me know if you don't work that
> math out on yourself...
>
> Cheers,
> Magnus - happy to revisit the land of linear filtering ;O)
--
Oren Leavitt
oleavitt at ix.netcom.com
More information about the Synth-diy
mailing list