Diode clipper simulation instability

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

JCJR wrote:
andy-cytomic wrote:The hint here is to realise that the diode is just a voltage controlled resistor, when there is a small voltage across them they are a very large resistor, when the voltage over them is large they are a small valued resistor. So try replacing the diode with various values of resistor and plot what happens to the frequency response.
Apologies belaboring a "minor" point-- Perhaps plotting with different-valued resistors would get close enough, but this wild "effective resistance" swing happens during every cycle, and so the simple plotting of different linear frequency responses for different static resistance substitutions, might not be very close at all to reality. Dunno how dramatic would be the variance, having never tried solving it.
It doesn't happen every cycle, it happens every sample. The hint is aimed at people with little circuit experience to start breaking it down in an approachable way to gain more insight into how it functions.
The Glue, The Drop - www.cytomic.com

Post

andy-cytomic wrote:
JCJR wrote:
andy-cytomic wrote:The hint here is to realise that the diode is just a voltage controlled resistor, when there is a small voltage across them they are a very large resistor, when the voltage over them is large they are a small valued resistor. So try replacing the diode with various values of resistor and plot what happens to the frequency response.
Apologies belaboring a "minor" point-- Perhaps plotting with different-valued resistors would get close enough, but this wild "effective resistance" swing happens during every cycle, and so the simple plotting of different linear frequency responses for different static resistance substitutions, might not be very close at all to reality. Dunno how dramatic would be the variance, having never tried solving it.
It doesn't happen every cycle, it happens every sample. The hint is aimed at people with little circuit experience to start breaking it down in an approachable way to gain more insight into how it functions.
A I said, DURING every cycle. :)

Post

Why wouldn't one use a tried and tested solution for this (generating the table) such as what would be generated by an existing spice implementation?

Sure, you can write your own solutions too if you like putting in all the extra effort but unless you're actually going to have that code used dynamically (actually changing current into the diodes, for example as in the steiner sallen-key filter implementation) it is hard to justify based upon the results.

In the case of even the steiner sallen-key filter or various diode ladders the audible difference in timbre due to these effects is minor when compared to a system tweaked to emulate them.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

aciddose wrote:Why wouldn't one use a tried and tested solution for this (generating the table) such as what would be generated by an existing spice implementation?

Sure, you can write your own solutions too if you like putting in all the extra effort but unless you're actually going to have that code used dynamically (actually changing current into the diodes, for example as in the steiner sallen-key filter implementation) it is hard to justify based upon the results.

In the case of even the steiner sallen-key filter or various diode ladders the audible difference in timbre due to these effects is minor when compared to a system tweaked to emulate them.

Why implement anything? Most things are already done to death in music dsp, but there are also (twisted ?) people like myself that actually think it is fun to solve this stuff even if it never gets used in a product.
Last edited by andy-cytomic on Tue Oct 21, 2014 5:57 am, edited 1 time in total.
The Glue, The Drop - www.cytomic.com

Post

Well that is true. I'm speaking of course though from the point of view of what is practical for real-time audio. There will always be room also for experimental physical simulations and these might even see use in generating samples or offline processing of audio tracks.

In terms of real-time audio however we barely have the power to do this sort of thing at all, even these days with modern equipment. Minimizing the amount of processing power required is absolutely essential in order to provide for adequate anti-aliasing and performance.

For example I use a diode clipper based upon a table in my filter implementations rather than a limit/hard-clip. This is important due to the variation in dynamics you get with highpass/diode clamp on feedback vs. a simple limit() function. Given SSE implementation of the filter core the diode is twice as expensive as the filter itself, with table look-up and linear interpolation alone!

It is possible to approximate the diode saturation characteristic but very difficult to achieve the same linearity below the saturation threshold combined with efficiency given any other method. The very high linearity of a diode clamp is critical in order to get the low harmonic content of a lowpass filter oscillating below unity feedback.

Efficiency is critical as I am trying to run 64 or more voices at once on a single core.

https://soundcloud.com/aciddose/saww

Even in 2010 this was unimaginable. 1/2 of the way to analog at this point. We only need CPUs to be 100x as powerful :)
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post Reply

Return to “DSP and Plugin Development”