<div dir="auto"><div dir="auto"><span class="gmail_chip gmail_plusreply" dir="auto"><a href="mailto:rburnett@richieburnett.co.uk" style="color:#15c;text-decoration:underline">@Richie Burnett</a></span><span> thanks! I have found Spice to be cumbersome for more advanced data analysis, so resorted to Python for most of it. There I am studying non linearities using saw, ramp (inverted saw) and sine test signals. The latter I use mostly for spectral analysis, while the first are also informative about time domain effects. I also created the option to put out wat files so that I can audition them. Some effects that were impressive in the time domain where irrelevant when listening, and (more importantly!) vice versa. I had to make a bad prototype to remind me of this... What resembled the time domain of a Moog filter did not sound like one. As soon as I studied the spectral domain data I understood why.</span></div><div dir="auto"><br></div><div dir="auto">The spectral effects on a sawtooth pushed through a non linear filter, without any resonance are impressive by themselves by the way. I never knew the effect of an analogue filter could be this substantial.</div><div dir="auto"><br></div><div dir="auto"><span class="gmail_chip gmail_plusreply" dir="auto"><a href="mailto:synth@schmitzbits.de" style="color:#15c;text-decoration:underline">@René Schmitz</a></span> Thanks for the explanation! It confirms what I already suspected. The non linear effects are a combination of TanH and something else. I have the feeling your answer also implies that the latter effect is important for the character of the ssm2040.</div><div dir="auto"><br></div><div dir="auto">Best,</div><div dir="auto"><br></div><div dir="auto">Rutger</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Op zo 8 sep 2024 16:39 schreef René Schmitz <<a href="mailto:synth@schmitzbits.de">synth@schmitzbits.de</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Rutger and all,<br>
<br>
<br>
The TANH comes from the input side, i.e. the long tail pair transistors, <br>
this is more or less symmetric as one would expect.<br>
<br>
(If you ignore minor effects such as the different Vce voltages, Vbe <br>
matching, source resistances etc.)<br>
<br>
<br>
For a single stage:<br>
<br>
The asymmetry comes from the output of the one-mirror OTA. It can't sink <br>
past -0.6V (The collector of the output transistor can't go lower than <br>
it's emitter voltage, with the bases near GND thats about -0.6V).<br>
<br>
Thus you see clipping at -0.6V.<br>
<br>
It really only makes a difference if you're *not* summing the current <br>
into a virtual ground. As was done in the 2040 of course, which uses <br>
emitter followers.<br>
<br>
(But you can run the 2040 gain stage into an opamp integrator and do not <br>
get any of the clipping at all.)<br>
<br>
<br>
BTW the 2164 also has voltage compliance limits for its output current <br>
(albeit different).<br>
<br>
So you can run the 2164 into an "open" load, and get extra <br>
nonlinearities. Thats mentioned in AN701.<br>
<br>
<br>
If you cascade several inverting 2040 stages, then at the output you get <br>
(more or less) symmetric clipping because you alternately treat the <br>
positive and negative input swings at consecutive stages.<br>
<br>
I think this was what JH was talking about. But also look at a single <br>
stage to understand what the root behaviour is.<br>
<br>
<br>
<br>
Best,<br>
<br>
René<br>
<br>
<br>
<br>
<br>
Am 08.09.2024 um 12:34 schrieb Rutger Vlek via Synth-diy:<br>
> Dear all,<br>
><br>
> In the sparse moments between day time job and fatherhood I'm trying <br>
> to push forward with an idea I've had for a long time. I'm trying to <br>
> capture the variation in favourable non-linear characteristics from <br>
> well-known filters (read SSM2040 and Moog Ladder) and implement them <br>
> in a more modern topology (read SSI2164). Would also be great to be <br>
> able to select between them, while using the same filter core. I'm not <br>
> necessarily aiming for perfectly cloning the response of vintage <br>
> filters, but rather hope to take inspiration from them and perhaps to <br>
> discover other pleasant non-linearities.<br>
><br>
> I've been approaching this with Spice as well as with mathematical <br>
> modelling in Python, using a multi-dimensional Newton-Raphson solver <br>
> with the system of equations needed to describe the various filters.<br>
><br>
> Right now I'm trying to understand the character of the SSM2040, and <br>
> am a bit puzzled. I am familiar with the inverting cascaded topology <br>
> of this filter. And with the typical math that describes the <br>
> non-linearities of an OTA-based filter:<br>
> Vout = g * tanh(Vin-Vout).<br>
><br>
> I have been reading across the internet about the asymmetrical <br>
> saturation of this filter, most notably in the application notes for <br>
> making filters with the SSI2164: <br>
> <a href="https://www.soundsemiconductor.com/downloads/AN701.pdf" rel="noreferrer noreferrer" target="_blank">https://www.soundsemiconductor.com/downloads/AN701.pdf</a>. Based on this <br>
> information, I had assumed that the tanh only operates in one <br>
> direction, something like this:<br>
> y = tanh(x) if x < 0<br>
> y =x if x > 0<br>
><br>
> However, in Spice, when simulating the internals of the SSM2040 using <br>
> Jurgen Haible's schematic <br>
> (<a href="http://jhaible.com/legacy/tonline_stuff/jh2040.gif" rel="noreferrer noreferrer" target="_blank">http://jhaible.com/legacy/tonline_stuff/jh2040.gif</a>), I don't see that <br>
> happening. Instead, I see tanh distortion in both directions.<br>
><br>
> Only when I push the input harder (beyond 1Vpp), I see one side of the <br>
> output clipping much sooner than the other. This seems in line with <br>
> the effect described in AN701, but is the SSM2040 really driven that <br>
> hard in real world applications, and is it really *this* additional <br>
> effect, on top of the already present tanh distortion, that explains <br>
> the SSM2040's character? And if so... how would one model it <br>
> mathematically?<br>
><br>
> Rutger<br>
><br>
> ________________________________________________________<br>
> This is the Synth-diy mailing list<br>
> Submit email to: <a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>
> View archive at: <a href="https://synth-diy.org/pipermail/synth-diy/" rel="noreferrer noreferrer" target="_blank">https://synth-diy.org/pipermail/synth-diy/</a><br>
> Check your settings at: <a href="https://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">https://synth-diy.org/mailman/listinfo/synth-diy</a><br>
> Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank" rel="noreferrer">marketplace@synth-diy.org</a><br>
<br>
-- <br>
--<br>
<a href="mailto:synth@schmitzbits.de" target="_blank" rel="noreferrer">synth@schmitzbits.de</a><br>
<a href="http://schmitzbits.de" rel="noreferrer noreferrer" target="_blank">http://schmitzbits.de</a><br>
<br>
</blockquote></div>