<div dir="ltr">Dr Ben Luce (son of Dr David Luce of Moog Music fame) along with <a href="http://emeapp.org">emeapp.org</a> has done some serious forensic work on the Minimoog VCA which is not much different from the EE textbook differential amplifier and imparts tanh() distortion.  The research materials are here <a href="https://emeapp.org/active-research-at-emeapp/">https://emeapp.org/active-research-at-emeapp/</a><div><br></div><div>MC</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 16, 2022 at 7:39 AM <<a href="mailto:rburnett@richieburnett.co.uk">rburnett@richieburnett.co.uk</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">Thanks Andy :-)  I knew they were similar but couldn't recall the <br>
details.  -Richie,<br>
<br>
<br>
<br>
On 2022-02-16 12:07, Andrew Simper wrote:<br>
> for an ota single stage it's roughly:<br>
> ic = ictrl * tanh(in - vc)<br>
> <br>
> in a mood ladder single stage it's roughly:<br>
> ic = ictrl * (tanh(in) - tanh(vc))<br>
> <br>
> Andy<br>
> <br>
> On Wed, 16 Feb 2022 at 03:56, Rutger Vlek via Synth-diy<br>
> <<a href="mailto:synth-diy@synth-diy.org" target="_blank">synth-diy@synth-diy.org</a>> wrote:<br>
> <br>
>> Amazing! Thanks for taking the time to put this into words. Once<br>
>> again, I want to say I really love this mailinglist!<br>
>> <br>
>> The only question in my mind that remains is how similar or<br>
>> different the situation is in a ladder filter. But I can probably<br>
>> figure that out with the help of Spice now I better understand the<br>
>> OTA case.<br>
>> <br>
>> Thanks!<br>
>> <br>
>> Rutger<br>
>> <br>
>> Op di 15 feb. 2022 17:04 schreef Richie Burnett<br>
>> <<a href="mailto:rburnett@richieburnett.co.uk" target="_blank">rburnett@richieburnett.co.uk</a>>:<br>
>> <br>
>>> The OTA in a cascaded OTA low-pass filter (like the Roland Juno<br>
>>> 106 filter)<br>
>>> works like this...  In each stage the OTA inputs measure the<br>
>>> instantaneous<br>
>>> difference between the input voltage and the capacitor voltage.<br>
>>> This<br>
>>> measurement is then scaled by the control current and finally<br>
>>> converter to a<br>
>>> current output that is fed to the capacitor.  In this way the<br>
>>> behaviour of<br>
>>> the OTA approximates that of a resistor between the input and the<br>
>>> capacitor.<br>
>>> i.e. The current out of the OTA is a scaled version of the voltage<br>
>>> <br>
>>> difference between the input voltage and the capacitor voltage.<br>
>>> And that's<br>
>>> exactly what a resistor would do if it was also connected between<br>
>>> the input<br>
>>> voltage and the capacitor.  The difference here is that the<br>
>>> scaling factor<br>
>>> (or "gain") of the OTA is variable and is determined by the<br>
>>> control current<br>
>>> into the OTA.<br>
>>> <br>
>>> Now all of that assumes that the OTA's input stage behaves<br>
>>> completely<br>
>>> linearly.  But it doesn't!  The front end of the OTA is a<br>
>>> long-tailed pair<br>
>>> differential amplifier and exhibits the tanh() distortion we<br>
>>> mentioned<br>
>>> earlier in this thread.  For small signals everything said in the<br>
>>> first<br>
>>> paragraph holds true.  But as the signals get larger we start to<br>
>>> see a<br>
>>> reduction in the incremental gain of the OTA as we start to use<br>
>>> more of the<br>
>>> tanh() curve.  The effect is that even for a fixed control current<br>
>>> (cutoff<br>
>>> frequency setting,) the scaling factor for the output current<br>
>>> ("gain" of the<br>
>>> OTA) decreases when there is a large difference between the input<br>
>>> voltage<br>
>>> and the capacitor voltage.  If the scaling factor decreases it is<br>
>>> as if the<br>
>>> resistor value somehow got larger for big signals.  And an<br>
>>> increase in this<br>
>>> "virtual resistance" moves the instantaneous cutoff frequency of<br>
>>> the<br>
>>> resulting RC filter downwards to a lower frequency.<br>
>>> <br>
>>> The scaling resistors around the inputs of OTA circuits are an<br>
>>> attempt to<br>
>>> make the differential input voltage relatively small compared to<br>
>>> the thermal<br>
>>> voltage so that the OTA mostly operates in the reasonably linear<br>
>>> region<br>
>>> around the origin of the tanh() curve.  But if you drive the<br>
>>> filter hard<br>
>>> enough or mess about with the resistor values, you can easily<br>
>>> drive the OTA<br>
>>> input stage with signal large enough to drive into the saturation<br>
>>> regions of<br>
>>> the tanh() curve.<br>
>>> <br>
>>> I hope this explanation helps.  And I hope others also think it is<br>
>>> valid and<br>
>>> technically sound.  The key takeaway from this analysis for me is<br>
>>> that it is<br>
>>> not the signal amplitude itself that saturates, but rather the<br>
>>> rate of<br>
>>> change of the signal that is limited when the OTA input is driven<br>
>>> hard.<br>
>>> This results in a more subtle distortion than basic saturation.<br>
>>> <br>
>>> -Richie,<br>
>>> <br>
>>> -----Original Message-----<br>
>>> From: Rutger Vlek<br>
>>> Sent: Tuesday, February 15, 2022 2:43 PM<br>
>>> To: Richie Burnett<br>
>>> Cc: SDIY<br>
>>> Subject: Re: [sdiy] Yet more questions: best VC drive approach<br>
>>> <br>
>>> Thanks for the helpful replies since I brought this thread back to<br>
>>> life!<br>
>>> <br>
>>> @Richie Burnett  Thanks for the wonderful summary of knowledge on<br>
>>> this! I<br>
>>> was already aware of the tanh characteristic involved, but mainly<br>
>>> struggle<br>
>>> to understand the interaction of it with the capacitor (capacitive<br>
>>> load) in<br>
>>> each stage of the ladder filter. Is the math behind it described<br>
>>> somewhere?<br>
>>> The audio-rate modulation of the filter's cutoff frequency that<br>
>>> occurs as a<br>
>>> consequence of this interaction (if I'm right?) as what fascinates<br>
>>> me<br>
>>> particularly. I already did some experiments on a Nord Modular to<br>
>>> see if I<br>
>>> could somewhat replicate this type of saturation with a feedback<br>
>>> (from<br>
>>> output) or feedforward (from input) signal at each filter stage to<br>
>>> the<br>
>>> control input for frequency (thereby modulating cutoff at audio<br>
>>> rate with<br>
>>> the input or output of each stage). It sounds interesting, when<br>
>>> applied in<br>
>>> modest amounts, but does not quite get to Moog smoothness<br>
>>> territory. I'd<br>
>>> like to understand if there are ways to get closer to the actual<br>
>>> behaviour<br>
>>> inside a ladder filter, and if I could extrapolate that to other<br>
>>> (analog)<br>
>>> topologies, such as a 2164-based filter.<br>
>>> <br>
>>> The case for an OTA-C filter seems a bit different, if I<br>
>>> understand<br>
>>> correctly, as it's saturation in the output stage that interacts<br>
>>> with the<br>
>>> capacitor to cause the cutoff modulation described above.<br>
>>> Additionally<br>
>>> there's more tanh saturation happening in the input stage of the<br>
>>> OTA,<br>
>>> without consequences for the cutoff frequency? I presume that this<br>
>>> last<br>
>>> effect is happening in almost all OTA filters, since inputs are so<br>
>>> <br>
>>> sensitive, but the first effect (cutoff modulation) is only<br>
>>> happening in<br>
>>> some OTA filters, depending on OTA output loading?<br>
>>> <br>
>>> Rutger<br>
>>> <br>
>>> Op ma 14 feb. 2022 om 12:14 schreef<br>
>>> <<a href="mailto:rburnett@richieburnett.co.uk" target="_blank">rburnett@richieburnett.co.uk</a>>:<br>
>>> Hi Rutger,<br>
>>> <br>
>>> Wow, that is an old thread.  I've slept since then! ;-)<br>
>>> <br>
>>> They are both based around a "long tailed pair," which is a<br>
>>> differential<br>
>>> amplifier made up of two transistors.  If you read up about this<br>
>>> arrangement you will find that there is a tanh() function in its<br>
>>> transfer function, that leads to a soft saturation behaviour.<br>
>>> Both the<br>
>>> Moog ladder filter and the input stage of a bare OTA exhibit<br>
>>> similar<br>
>>> tanh() soft distortion.  Although the exact effect on the cutoff<br>
>>> frequency in each type of filter may be subtly different.<br>
>>> <br>
>>> There are some good papers out there discussing the<br>
>>> non-linearities in<br>
>>> the Moog ladder filter arrangement.  Ones by Antti Huovilainen,<br>
>>> Tim<br>
>>> Stinchcombe and to a lesser extent Tim Stilson are the ones that<br>
>>> immediately come to mind.  Some of the stuff in those papers is<br>
>>> about<br>
>>> making a digital "DSP" model of the filter, but the first bits<br>
>>> about how<br>
>>> the analogue filter works discusses the non-linear behaviour for<br>
>>> large<br>
>>> signals.<br>
>>> <br>
>>> I don't have a reference for OTA operation immediately at hand but<br>
>>> I<br>
>>> would have thought the non-linearities for large input signal<br>
>>> amplitudes<br>
>>> would be discussed in the datasheet, or documented somewhere.  As<br>
>>> I<br>
>>> said, the first stage is just a long-tailed pair diff amp, so<br>
>>> assuming<br>
>>> the OTA doesn't have any fancy linearising diodes, it will have a<br>
>>> tanh()<br>
>>> shape to its transfer function that starts to kick in once the<br>
>>> differential input signal amplitude goes over a few tens of<br>
>>> millivolts.<br>
>>> <br>
>>> Hope this helps...<br>
>>> <br>
>>> -Richie,<br>
>>> <br>
>>> On 2022-02-12 20:15, Rutger Vlek wrote:<br>
>>>> Hi Richie,<br>
>>>> <br>
>>>> I hope you don't mind me bumping up an old thread. I was reading<br>
>>> back<br>
>>>> what you wrote in 2018 and wondered if you could refer me to<br>
>>> more<br>
>>>> background information on filter saturation. I'd like to<br>
>>> understand<br>
>>>> what happens in a ladder filter, and weather something musically<br>
>>>> similar could also be recreated in other ways (e.g. in other<br>
>>>> topologies than a ladder). If you have an opinion on the latter,<br>
>>>> please share!<br>
>>>> <br>
>>>> Regards,<br>
>>>> <br>
>>>> Rutger<br>
>>>> <br>
>>>> Op vr 9 nov. 2018 10:51 schreef <<a href="mailto:rburnett@richieburnett.co.uk" target="_blank">rburnett@richieburnett.co.uk</a>>:<br>
>>>> <br>
>>>>> When you over-drive OTA based 1-pole "leaky integrator" stages,<br>
>>> you<br>
>>>>> actually get a signal dependent shift in the cutoff frequency<br>
>>> as the<br>
>>>>> OTA<br>
>>>>> saturates, rather than what you would typically describe as<br>
>>>>> "clipping".<br>
>>>>> This behaviour is down to the way in which the OTA and filter<br>
>>>>> capacitor<br>
>>>>> are wrapped up inside a negative feedback loop.  The behaviour<br>
>>> is<br>
>>>>> quite<br>
>>>>> like how the cutoff frequency of the Moog ladder filter changes<br>
>>>>> dynamically with drive signal level.  It is much more musical<br>
>>> that<br>
>>>>> simple signal clipping.<br>
>>>>> <br>
>>>>> -Richie,<br>
>>>>> <br>
>>>>> On 2018-11-09 08:48, Rutger Vlek wrote:<br>
>>>>>> Hi Jacob,<br>
>>>>>> <br>
>>>>>>> This also ensures that the clipping happens in the chip used<br>
>>> for<br>
>>>>> the<br>
>>>>>>> integrators, and not in the OTA's, which sound bad when<br>
>>>>> overdriven.<br>
>>>>>> <br>
>>>>>> I presume you refer to the OTA in the VCA that controls the<br>
>>> drive<br>
>>>>>> level? Or do you mean OTAs inside your integrators? In the<br>
>>> latter<br>
>>>>> case<br>
>>>>>> I don't understand what you're saying (sorry)...<br>
>>>>>> <br>
>>>>>> Rutger<br>
>>>>>> <br>
>>>>>>> JACOB WATTERS<br>
>>>>>>> Web & Multimedia Specialist<br>
>>>>>>> <br>
>>>>>>> JacobWatters.com [1]<br>
>>>>>>> Tel: 226-886-3526 [1]<br>
>>>>>>> <br>
>>>>>>> On Thu, Nov 8, 2018 at 3:32 PM Rutger Vlek<br>
>>> <<a href="mailto:rutgervlek@gmail.com" target="_blank">rutgervlek@gmail.com</a>><br>
>>>>>>> wrote:<br>
>>>>>>> <br>
>>>>>>>> Hi guys,<br>
>>>>>>>> <br>
>>>>>>>> I've been wondering about many things lately, hence the<br>
>>> flood of<br>
>>>>>>>> emails to the list :). I also have to admit feeling a bit<br>
>>> stupid<br>
>>>>>>>> about having to ask this.. but here goes:<br>
>>>>>>>> <br>
>>>>>>>> What's the best approach to designing a voltage controlled<br>
>>>>>>>> overdrive? The obvious solution I can think of is having a<br>
>>>>>>>> saturation element preceded by a VCA. While I haven't fully<br>
>>> done<br>
>>>>>>>> my homework on it yet, my guts tell me that this isn't the<br>
>>> best<br>
>>>>>>>> circuit in terms of noise behaviour, as it would require the<br>
>>>>>>>> saturation element to be at high gain constantly while the<br>
>>> VCA<br>
>>>>>>>> various input level. Meaning that any VCA noise would be<br>
>>>>> amplified<br>
>>>>>>>> by the full gain of the saturation element. In guitar stomp<br>
>>>>> boxes,<br>
>>>>>>>> some design place a pot in the feedback loop of an opamp to<br>
>>>>> change<br>
>>>>>>>> gain. Could a similar approach work well for a VC-drive unit<br>
>>> and<br>
>>>>>>>> would it perform better/worse than the first solution I<br>
>>>>> proposed?<br>
>>>>>>>> <br>
>>>>>>>> Finally, I've been thinking about making drive level voltage<br>
>>>>>>>> controlled via power supply to the saturation element<br>
>>>>> (transistor<br>
>>>>>>>> in this case). Feeding the control voltage into a buffer<br>
>>> that<br>
>>>>> puts<br>
>>>>>>>> out the supply to a transistor would also allow to change<br>
>>> drive<br>
>>>>>>>> level.<br>
>>>>>>>> <br>
>>>>>>>> What do you think? How it this typically done? I just bought<br>
>>> a<br>
>>>>>>>> Novation Peak, and am impressed with it's three stages of<br>
>>>>>>>> overdrive although it suffers from noise issues due to the<br>
>>>>> amounts<br>
>>>>>>>> of again at hand. It makes me wonder how I would design such<br>
>>> a<br>
>>>>>>>> stage myself.<br>
>>>>>>>> <br>
>>>>>>>> Rutger<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>
>>>>>> <br>
>>>>>> <br>
>>>>>> <br>
>>>>>> Links:<br>
>>>>>> ------<br>
>>>>>> [1] <a href="http://jacobwatters.com/" rel="noreferrer" target="_blank">http://jacobwatters.com/</a><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>
>>> <br>
>>> --<br>
>>> This email has been checked for viruses by AVG.<br>
>>> <a href="https://www.avg.com" rel="noreferrer" target="_blank">https://www.avg.com</a><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>
> Links:<br>
> ------<br>
> [1] tel:226-886-3526<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>
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>