I guess there are multiple definitions of "computable".  In the papers I've
read (e.g., on wave digital filters), a delay-free loop is said not to be
computable.  Solving the linear set equations for a solution gives you a
new flow graph - a new filter structure that's computable as drawn.

A related term in the finite-differences world is "implicit" versus
"explicit" finite difference schemes, where implicit means you have to
solve some simultaneous equations and explicit means you can compute
forward each time step using previously computed values (a "causal"
recursion).

So, maybe it's just terminology...

- Julius


On Wed, Apr 23, 2014 at 2:49 PM, D <[email protected]> wrote:

> Julius Smith <jos@...> writes:
>
> >
> >
> > When digitizing analog filters using the bilinear transform
> > and similar methods, we often have to deal with "delay-free
> > loops" that arise (the Moog VCF is a classic example).  This is
> > generally done via algebraic manipulations on the transfer function to
> > eliminate the delay-free loops, since they are not computable. If the
>
> I've never quite understood the history around this, isn't the delay-free
> loop directly computable? It seems that many of the old designs insert
> an extra delay, but perhaps that was a misunderstanding about the
> computability?
>
> It is just a linear set of equations and should be solvable directly, this
> is what Raph's python notebook  does (posted below by Timo), along
> with Vadim's paper (although he takes a much more fiddly
> block-diagram based approach).
>
> I've worked through both approaches (the bilinear transform directly
> on the State Space Representation, and Vadim's TPT approach) for a
> Moog ladder filter, and they both lead to a set of directly computable
> formulas without an additional delay in the feedback path.
>
> One set of linear "zero delay" formulas for the Moog ladder derived
> from either Raph's or Vadim's approach is:
>
> s0..s3: state variables, u: input, y3: output
>
> w = g / (1 + g);
> G = w*w*w*w;
> S = (w*w*w*s0 + w*w*s1 + w*s2 + s3) / (1 + g);
> u0 = (u - k*S)/(1 + k*G);  // Solve feedback
> v0 = (u0 - s0)*g/(1 + g);
> y0 = v0 + s0;  // 1st 1-pole output
> s0 = y0 + v0;  // 1st 1-pole state
> v1 = (y0 - s1)*g/(1 + g);
> y1 = v1 + s1;  // 2nd 1-pole output
> s1 = y1 + v1;  // 2nd 1-pole state
> v2 = (y1 - s2)*g/(1 + g);
> y2 = v2 + s2;  // 3rd 1-pole output
> s2 = y2 + v2;  // 3rd 1-pole state
> v3 = (y2 - s3)*g/(1 + g);
> y3 = v3 + s3;  // 4th 1-pole output
> s3 = y3 + v3;  // 4th 1-pole state
>
> > original structure must be preserved at all costs, then we insert an ad
> > hoc delay anywhere in the loop and use a sufficiently high sampling rate,
> > etc. - Julius
>
>
>
>
> ------------------------------------------------------------------------------
> Start Your Social Network Today - Download eXo Platform
> Build your Enterprise Intranet with eXo Platform Software
> Java Based Open Source Intranet - Social, Extensible, Cloud Ready
> Get Started Now And Turn Your Intranet Into A Collaboration Platform
> http://p.sf.net/sfu/ExoPlatform
> _______________________________________________
> Faudiostream-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>



-- 
"Anybody who knows all about nothing knows everything" -- Leonard Susskind
------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to