5

I'm an audio programmer, and I've recently gotten into using transfer functions to model the response of my DSP. However, I've hit a roadblock in trying to reduce a block diagram of one of my DSP classes (specifically, a phaser), but I'm really having trouble trying to figure it out. The basics of block diagram reduction make sense to me, but where I'm having issues is trying to scoot around some takeoff points and summing points that are all in sequence with no blocks in between.

Here's the diagram I made for my phaser:

phaser block diagram

For reference, C0 and C1 are constants (but they're subject to change in the code, so I'm treating them like variables), P is the bank of allpass filters that actually create the phasing effect, and F is a one-sample delay multiplied by the feedback amount. I'm using Y(z)/X(z) because I'm in the discrete domain, which (I believe) means I'll be using the z-transform instead of the Laplace.

My first instinct was to try and scoot the takeoff points feeding into C0 and C1 in an attempt to combine them, but it always seems to make the entire affair get very messy. My only other guess would to be to try and move P to the left of both the takeoff and the summing point that precede it, but that also feel like it doesn't really get me closer to solving my problem.

I'd appreciate any guidance on this — I'm totally brand new to transfer function block diagrams, so there could be some obvious solution that I'm failing to see here

Voltage Spike
  • 75,799
  • 36
  • 80
  • 208

2 Answers2

3

First step is to unwind what you can...

enter image description here

Then put in a variable into the loop so you can come up with a system of equations:

enter image description here

The output of F would be

$$ F*(Y(z)*C_1+M*C_0) $$

The so the upper disconnected block would be

$$ M = P*(F*(Y(z)*C_1+M*C_0)+X(z)) $$

The so the lower disconnected block would be

$$ Y(z) = 0.5*(X(z)+M) $$

So that's a two equation system that should be solvable.

$$ M = P*(F*(Y(z)*C_1+M*C_0)+X(z)) $$

$$ Y(z) = 0.5*(X(z)+M) $$

Voltage Spike
  • 75,799
  • 36
  • 80
  • 208
  • You're a godsend! I never thought to separate the diagram out into chunks that can be dealt with more easily. This has been massively helpful, thank you so much! – Jackson Kaplan Aug 04 '22 at 19:10
2

I'd solve it by circuit-redraw thus, making it easy to spot any errors made along the way: -

enter image description here

Can you take it from here (it's simple now)?

Andy aka
  • 434,556
  • 28
  • 351
  • 777
  • I believe so! Using your final result, my reduction yielded \$ 0.5 * \frac{\frac{K_1}{F} + 1}{1 - 0.5 K_1 C_1} \$ with \$ K_1 = \frac{FP}{1 - FPC_0} \$. Thank you so much for the help! Your step-by-step really made it clear all the creative ways you can manipulate these diagrams during reduction. – Jackson Kaplan Aug 04 '22 at 20:38