<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>