<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Yaaaaay!<div><br></div><div>Ok, but I do recommend re-read my posts now you know about that input term, and check the chip used in the x-pander and you'll see that it was a pretty cool idea to make it a 3 pole filter to get high pass modes out of that chip.</div><div><br></div><div>If you want the expression collected in the m terms, which is what you're doing on the working page then the solution to double check against is:</div><div><br></div><div><div>(m0 (g + s)^4 + m1 g (g + s)^3 + m2 g^2 (g + s)^2 + m3 g^3 (g + s) + m4 g^4) / </div><div>((g + s)^4 + g^4 k)</div></div><div><br></div><div>which if g = 1 is:</div><div><br></div><div><div style="color:rgb(0,0,0)"><div>(m0 (1 + s)^4 + m1 (1 + s)^3 + m2 (1 + s)^2 + m3 (1 + s) + m4) / </div><div>((1 + s)^4 + k)</div><div><br></div><div>But I think when working this stuff out you are better off keeping the g terms since then you can see what is going on more clearly.</div><div><br></div><div>Similarly you can write the 3rd order system of equations, but I'll leave that to you now you know what's going on.</div><div><br></div><div>Cheers,</div><div><br></div><div>Andy</div></div></div><div><br></div><div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 12 Apr 2021 at 10:25, David Moylan <<a href="mailto:dave@expeditionelectronics.com" target="_blank">dave@expeditionelectronics.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <div>Aha! Finally I think I get it.  That
      was exactly what I was missing.  Wasn't helping that Dixon's
      spreadsheet seems to show an equation that looks like mine, but
      curves that look like they should.</div>
    <div><br>
    </div>
    <div>I'll work through the math with that
      substitution for my own benefit. <br>
    </div>
    <div><br>
    </div>
    <div>Thanks for the help.</div>
    <div><br>
    </div>
    <div>Dave<br>
    </div>
    <div><br>
    </div>
    <div>On 4/11/21 10:09 PM, Andrew Simper
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div dir="ltr">
          <div dir="ltr">Hi David,
            <div><br>
            </div>
            <div>The short answer is you do not use the dry term, you
              need to use input - k*lp4. I have said this all the way
              through but I don't think you've picked up on it. So the
              quick way to get your stuff working is to use:</div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div>A (s + 1)^4<br>
            </div>
            <div>----------------</div>
            <div>(s + 1)^4 + k</div>
            <div><br>
            </div>
            <div>instead of just</div>
            <div><br>
            </div>
            <div>A</div>
            <div><br>
            </div>
            <div>for your first term in the summation.</div>
            <div><br>
            </div>
            <div>The long answer is:</div>
            <div><br>
            </div>
            <div>If you re-read my posts and you will note that there is
              never a "dry" term in any of my equations. Do not mix in
              the input alone ever, unless you have the special case of
              your resonance being zero. You need to use input - k*lp4
              for the first term. Let me break it down even further so
              you understand what is going on. Let's say you have these
              real world voltages in the circuit:</div>
            <div><br>
            </div>
            <div>input = your input signal, which is what you call the
              "dry" term</div>
            <div>v1 = the output of the 1st lp stage</div>
            <div>
              <div style="color:rgb(0,0,0)">v2 = the output of the 2nd
                lp stage</div>
            </div>
            <div style="color:rgb(0,0,0)">
              <div>v3 = the output of the 3rd lp stage</div>
            </div>
            <div>v4 = the output of the 4th lp stage</div>
            <div>k*v4 = your resonance feedback voltage</div>
            <div><br>
            </div>
            <div>now let's make a new signal, and define it as:</div>
            <div><br>
            </div>
            <div>v0 = input - k*v4</div>
            <div><br>
            </div>
            <div>this is the term we use in your solving with the first
              weight. You are not using this term in your equations, you
              are using the input only and calling it "dry", this is not
              the signal to use!!!!! If this was the signal to use then
              the x-pander shorting out the first cap would be
              pointless, the only reason they do that is since they need
              input - k*v4, and the k gain and differencing is done
              internally to the chip.</div>
            <div><br>
            </div>
            <div>Now we form our output voltage by using a weighted
              voltage summer circuit that gives:</div>
            <div><br>
            </div>
            <div>output = m0*v0 + m1*v1 + m2*v2 + m3*v3 + m4*v4</div>
            <div><br>
            </div>
            <div>you use the name A for m0, but hopefully you can now
              follow along, so in the laplace domain this signal is:</div>
            <div><br>
            </div>
            <div>(g + s)^4 </div>
            <div>----------------------</div>
            <div>(g + s)^4 + g^4 k</div>
            <div><br>
            </div>
            <div>which is if you replace g with 1 is:</div>
            <div><br>
            </div>
            <div>(1 + s)^4</div>
            <div>-----------------</div>
            <div>(1 + s)^4 + k</div>
            <div><br>
            </div>
            <div>You are using:</div>
            <div><br>
            </div>
            <div>1</div>
            <div><br>
            </div>
            <div>which is not the same thing!</div>
            <div><br>
            </div>
            <div>If this doesn't make sense then I'll have to throw in
              the towel on this one as I don't think I can explain it
              any better than that, fingers crossed this has done the
              trick.</div>
            <div><br>
            </div>
            <div>Cheers,</div>
            <div><br>
            </div>
            <div>Andy</div>
          </div>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Mon, 12 Apr 2021 at 01:06,
          David Moylan <<a href="mailto:dave@expeditionelectronics.com" target="_blank">dave@expeditionelectronics.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
          <div>
            <div>That's the denominator I have with g normalized to 1.  
              But then the numerator for the A term (dry mix signal)
              would end up with that k term as well when you multiply it
              to get everything over the common denominator.  That's why
              my 4P HP ends up as <br>
            </div>
            <div><br>
            </div>
            <div>s^^4 + k</div>
            <div>---------------------</div>
            <div>(s+1)^^4 + k</div>
            <div><br>
            </div>
            <div>(In all of the modes mixing dry in the dry mix
              coefficient is 1).  Am I missing something that cancels
              the k term in the numerator?  I tried it without the k in
              the numerator and the HP curves remain as HP curves
              rolling off at low frequencies, and seem to match
              Dixon's.  It seems that is the major discrepancy now just
              trying to figure out why.<br>
            </div>
            <div><br>
            </div>
            <div>On 4/11/21 11:49 AM, Andrew Simper wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">You can also write the denominators as:<br>
                <br>
                (g^4 (1 + k) + 4 g^3 s + 6 g^2 s^2 + 4 g s^3 + s^4) = (g
                + s)^4 + g^4 k<br>
                <br>
                and<br>
                <br>
                (g^3 (1 + k) + 3 g^2 s + 3 g s^2 + s^3) = (g + s)^3 +
                g^3 k
                <div><br>
                </div>
                <div>for the 4 pole and 3 pole versions respectively,
                  which are a bit shorter, but hide the terms that need
                  cancelling for various responses to happen. I'm not
                  sure the numerators get much better than I've already
                  posted.</div>
                <div><br>
                </div>
                <div>Cheers,</div>
                <div><br>
                </div>
                <div>Andy</div>
              </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Sun, 11 Apr 2021 at
                  22:22, Andrew Simper <<a href="mailto:andy@cytomic.com" target="_blank">andy@cytomic.com</a>>
                  wrote:<br>
                </div>
                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
                  <div dir="ltr">
                    <div dir="ltr">The reason they grounded the first
                      cap is the chip they were used in the x-pander did
                      the resonance gain in - k*lp4 internally, so the
                      only way to get that back out again was through
                      losing that first cap and grabbing the signal from
                      that point.
                      <div><br>
                      </div>
                      <div>The response you get when doing this is (3
                        pole cascade with global feedback):</div>
                      <div><br>
                      </div>
                      <div>
                        <div>(g^3 (m0 + m1 + m2 + m3) + g^2 (3 m0 + 2 m1
                          + m2) s + g (3 m0 + m1) s^2 + m0 s^3) / </div>
                        <div>(g^3 (1 + k) + 3 g^2 s + 3 g s^2 + s^3)</div>
                      </div>
                      <div><br>
                      </div>
                      <div>which requires a feedback gain of k = 8 to
                        self oscillate, but you also have to shift the
                        frequency down by scaling the g by 1/sqrt(3),
                        which you can get by solving the frequency the
                        denominator becomes zero with k = 8.</div>
                      <div><br>
                      </div>
                      <div>I seem to remember the x-pander calibrates
                        both the 4 pole and 3 pole filter separately and
                        uses a chip to control it, so this scaling is
                        probably done in digital land, so it won't
                        appear on the schematic.</div>
                      <div><br>
                      </div>
                      <div>Cheers,</div>
                      <div><br>
                      </div>
                      <div>Andy</div>
                      <div><br>
                      </div>
                    </div>
                  </div>
                  <br>
                  <div class="gmail_quote">
                    <div dir="ltr" class="gmail_attr">On Sat, 10 Apr
                      2021 at 00:50, David Moylan via Synth-diy <<a href="mailto:synth-diy@synth-diy.org" target="_blank">synth-diy@synth-diy.org</a>>
                      wrote:<br>
                    </div>
                    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Working
                      out the algebra to handle the feedback signal made
                      me realize <br>
                      something about the Xpander implementation. 
                      Rather than including a mix <br>
                      of the true dry input signal needed for certain
                      modes, the Xpander <br>
                      switches the first integrator essentially into a
                      buffer.   This makes <br>
                      the mix from the first integrator section a "dry"
                      signal and the rest of <br>
                      the transfer function is then 3 pole based.   That
                      means the feedback <br>
                      signal in that structure, for those modes, is also
                      a 3 pole low pass <br>
                      signal instead of the 4 pole low pass when the
                      integrator is engaged.<br>
                      <br>
                      Makes me curious about how that will effect the
                      transfer functions with <br>
                      feedback applied.   Will maybe have to set up a
                      new page dedicated to <br>
                      the exact Xpander structure after I get this
                      feedback signal worked out <br>
                      for the original app. Down a rabbit hole...<br>
                      <br>
                      On 4/9/21 10:00 AM, Richie Burnett wrote:<br>
                      > Taking the feedback from after the 4th pole
                      makes all of the responses <br>
                      > become 4th order when feedback is applied. 
                      So even something <br>
                      > otherwise simple like a 1-pole low-pass
                      filter can display resonance <br>
                      > when feedback is applied in this way.<br>
                      ><br>
                      > -Richie,<br>
                      ><br>
                      ><br>
                      > -----Original Message----- From: David Moylan
                      via Synth-diy<br>
                      > Sent: Friday, April 9, 2021 2:19 PM<br>
                      > To: <a href="mailto:synth-diy@synth-diy.org" target="_blank">synth-diy@synth-diy.org</a><br>
                      > Subject: Re: [sdiy] Pole Mixing<br>
                      ><br>
                      > Thanks, Tom.   In practice, I do find quite a
                      few interesting. LP1 +<br>
                      > Notch sounds great.  And just being able to
                      switch between LP4, LP2, LP1<br>
                      > is also useful.  I don't get a lot of mileage
                      out of the HP only modes,<br>
                      > usually want some LP too, but that makes
                      HP3+LP1 mode interesting.<br>
                      > Though I agree, in the universe of all
                      possible transfer functions the<br>
                      > list is relatively small.  It also begs the
                      question "how many of these<br>
                      > could be approximated with 2 state variables
                      in series?".   But that<br>
                      > ignores the feedback paths which I haven't
                      worked into the equations<br>
                      > yet.  In the Xpander the feedback is always
                      from the LP4 tap like it<br>
                      > would be for standard low pass filter and I
                      think I remember someone,<br>
                      > maybe David Dixon, pointing out that it has
                      interesting effects on the<br>
                      > curves as resonance is increased.<br>
                      ><br>
                      > If you click on the slider in question you
                      should be able to use arrow<br>
                      > keys to step in .1 increments.  I thought
                      that was fine enough to get<br>
                      > close to some desired curve, after that get
                      out the pencil and paper or<br>
                      > a soldering iron!  All of the presets except
                      the 20db LP shelf use<br>
                      > integers anyway, seems almost necessary to
                      get the cancellations<br>
                      > required to make interesting curves.<br>
                      ><br>
                      > On 4/9/21 5:34 AM, Tom Wiltshire wrote:<br>
                      >> Absolutely agree, that is a fantastic
                      piece of work.<br>
                      >><br>
                      >> It makes all sorts of things about
                      pole-mixing more obvious, <br>
                      >> including how few of the combinations are
                      actually interesting, and <br>
                      >> as Richie said, how sensitive some of the
                      combinations are.<br>
                      >><br>
                      >> If you’re still working on it, would it
                      be possible to add boxes to <br>
                      >> type in the coefficients as an
                      alternative to the sliders? Getting <br>
                      >> specific values with the little sliders
                      is quite fiddly.<br>
                      >><br>
                      >> Thanks very much for this though - really
                      great.<br>
                      >><br>
                      >> Tom<br>
                      >><br>
                      >> ==================<br>
                      >>         Electric Druid<br>
                      >> Synth & Stompbox DIY<br>
                      >> ==================<br>
                      >><br>
                      >><br>
                      >><br>
                      >>> On 8 Apr 2021, at 23:24, David Moylan
                      via Synth-diy <br>
                      >>> <<a href="mailto:synth-diy@synth-diy.org" target="_blank">synth-diy@synth-diy.org</a>>
                      wrote:<br>
                      >>><br>
                      >>> Hi All.  I banged together a little
                      web app to play around with <br>
                      >>> filter pole mixing, of the Oberheim
                      Xpander type.  You can mix poles <br>
                      >>> in varying amounts and see the output
                      magnitude shape as well as the <br>
                      >>> transfer function.  Y axis is Db and
                      X axis is log scale based on <br>
                      >>> normalized frequency (so basically 1
                      equals the cutoff frequency).  <br>
                      >>> Haven't done phase plot yet.<br>
                      >>><br>
                      >>> If you have an interest in this sort
                      of thing check it out:<br>
                      >>><br>
                      >>> <a href="https://expeditionelectronics.com/Diy/Polemixing" rel="noreferrer" target="_blank">https://expeditionelectronics.com/Diy/Polemixing</a><br>
                      >>><br>
                      >>> Cheers.<br>
                      >>><br>
                      >>> -- <br>
                      >>> David Moylan<br>
                      >>> Expedition Electronics<br>
                      >>> sonic adventures!<br>
                      >>><br>
                      >>>
                      _______________________________________________<br>
                      >>> Synth-diy mailing list<br>
                      >>> <a href="mailto:Synth-diy@synth-diy.org" target="_blank">Synth-diy@synth-diy.org</a><br>
                      >>> <a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
                      >>> Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank">marketplace@synth-diy.org</a><br>
                      >><br>
                      >>
                      _______________________________________________<br>
                      >> Synth-diy mailing list<br>
                      >> <a href="mailto:Synth-diy@synth-diy.org" target="_blank">Synth-diy@synth-diy.org</a><br>
                      >> <a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
                      >> Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank">marketplace@synth-diy.org</a><br>
                      ><br>
                      ><br>
                      <br>
                      -- <br>
                      David Moylan<br>
                      Expedition Electronics<br>
                      sonic adventures!<br>
                      <br>
                      _______________________________________________<br>
                      Synth-diy mailing list<br>
                      <a href="mailto:Synth-diy@synth-diy.org" target="_blank">Synth-diy@synth-diy.org</a><br>
                      <a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
                      Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank">marketplace@synth-diy.org</a><br>
                    </blockquote>
                  </div>
                </blockquote>
              </div>
            </blockquote>
            <p><br>
            </p>
            <pre cols="72">-- 
David Moylan
Expedition Electronics
sonic adventures!</pre>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <p><br>
    </p>
    <pre cols="72">-- 
David Moylan
Expedition Electronics
sonic adventures!</pre>
  </div>

</blockquote></div>