Next  |  Prev  |  Up  |  Top  |  Index  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search


Parallel Admittance Biquads

Similarly, given any filter realization of the load admittance $ \Gamma_J(z) = 1/R_J(z)$ , we can split $ \Gamma_J$ into its instantaneous and delayed components as $ \Gamma_J(z) = \Gamma_J^0
+ \Gamma_J^d(z)$ , and analogously obtain


$\displaystyle V_J(z)$ $\displaystyle =$ $\displaystyle \frac{2F_J^+(z)}{R_J^+ + R_J(z)}
\,\mathrel{\mathop=}\,\frac{2F_J^+(z)}{R_J^+ + \frac{1}{\Gamma_J(z)}}
\,\mathrel{\mathop=}\,\frac{2F_J^+(z)}{R_J^+ + \frac{1}{\Gamma_J^0 + \Gamma_J^d(z)}}$ (C.123)
  $\displaystyle =$ $\displaystyle \frac{2F_J^+(z)}{R_J^+ + \frac{1/\Gamma_J^0}{1 + \Gamma_J^d(z)/\Gamma_J^0}}
\,\mathrel{\mathop=}\,\frac{2F_J^+(z)}{R_J^+ + \frac{1}{\Gamma_J^0} + \frac{1}{\Gamma_J^0}\left[\frac{1}{1 + \Gamma_J^d(z)/\Gamma_J^0} - 1\right]}$ (C.124)
  $\displaystyle =$ $\displaystyle \frac{2F_J^+(z)}{R_0 + \frac{1}{\Gamma_J^0}\left[\frac{-\Gamma_J^d(z)/\Gamma_J^0}{1+\Gamma_J^d(z)/\Gamma_J^0}\right]}
\,\mathrel{\mathop=}\,\frac{2F_J^+(z)/R_0}{1 + \frac{1}{R_0\Gamma_J^0}\left[\frac{-\Gamma_J^d(z)/\Gamma_J^0}{1+\Gamma_J^d(z)/\Gamma_J^0}\right]}$ (C.125)

where $ R_0\isdeftext R_J^+ + R_J^0$ , and clearly $ \Gamma_J^0 = R_J^0$ . We can define $ \Gamma_0\isdeftext 1/R_0$ but be careful not to interpret it as the sum of $ \Gamma_J^0$ and the branch admittances, since we are doing a series junction. Now we can draw the block diagram in Fig.C.31 by inspection, and we obtain an interesting nested feedback structure placing $ \Gamma_J^d(z)$ in the inner feedback loop.

Figure C.31: Feedback structure implementing a series junction in terms of a prescribed admittance realization.
\includegraphics[width=0.8\twidth]{eps/SeriesJunctionAdmittanceBiquads}

Figure C.31 can readily be encoded in the FAUST language by extracting a unit-sample delay from the admittance filter and ``pushing'' it to the right through its input summer, which splits it into the $ v_J$ output tap and the inner feedback loop. This makes both feedback loops valid in FAUST using the tilde (`~') operator. In terms of obvious definitions:

vJ = fJp : *(2*G0) : ( + ~
       ( *(G0/GJ0) : ( + : GJd/GJ0 : *(-1)) ~ _ : *(-1)));
where the delay in GJd has been pulled out:
GJd = _ <: par(i, M, GiJd(i+1)) :> _ ;
GiJd(i) = fi.tf2(b1d(i), b2d(i), 0, a1(i), a2(i) ); // SHIFTED


Next  |  Prev  |  Up  |  Top  |  Index  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

[How to cite this work]  [Order a printed hardcopy]  [Comment on this page via email]

``Physical Audio Signal Processing'', by Julius O. Smith III, W3K Publishing, 2010, ISBN 978-0-9745607-2-4
Copyright © 2023-08-20 by Julius O. Smith III
Center for Computer Research in Music and Acoustics (CCRMA),   Stanford University
CCRMA