Let's Make a Saturation Plugin

Official support for: sonicbirth.sourceforge.net
Post Reply New Topic
RELATED
PRODUCTS

Post

All the buzz lately about Saturation plugs and analog mastering suites . . . makes me want to make a saturation plug with some variety in Sonic Birth. We should be able to do this right? Anyone have an idea how you go about adding selectable even and/or odd harmonics to an audio waveform? My first thought was FFT it, do some math, and then inverse FFT. But every time I do anything at all with the FFT in Sonic Birth, I seem to get nothing or a terrible hum as a result. About all I can do with FFT is to FFT a waveform and then immediately inverse FFT it to get the waeform back. Shouldn't we be able to do something in the frequency domain (like generate even and odd harmonics) before we inverse FFT again.

Post

Did some research and I think I have the answer. The heck with FFT. Just perform functions on the waveform itself. The Chebychev polynomials which are easy to implement with the equation module in SB will give you an approximate function for any harmonic you want. I tried it with a sin wave generator in SB and was able to see the harmonics in the SB oscilloscope. Works great. You just attenuate them and add in whatever mixture you want into the original waveform and can simulate any form of harmonic distortion.

I can imagine making their amplitude level dependent using a level detector - if the input crosses such and such a threshold, add in this much of these harmonics etc. while compressing the main signal by some amount.

Now if I could only get my hands on some great vintage pre amp gear - send in some sin waves at different input levels and look at the FFT of the output.

Post

It turns out that the Chebyshev poly thing doesn't work the way one would want it to. It only works on pure, single sinusoids that are normalized. Applying it to any complex waveform that is the sum of simpler sinusoids leads to cross terms that aren't part of any harmonic series.

This is unfortunate. I'm still looking for a way to excite selected harmonics at will. But I'm feeling more and more like an FFT will be the only way to do it.

Post

I made a simple saturation plug that works well for 'tape-type' saturation. It's just simple function:

[url]http:///suitcaserecordings.com/SaturatorSubCircuit.sbc[/url]

This is the subcircuit, you can implement it however you want.
Image

Post

Cool, thanks. If I understand the plug correctly, the incoming audio gets multiplied by a pre-gain and then again by another pre-gain, although this one is called "curve." Why the second pre?

Then you do e^x where x is the waveform? That's bold! :) Then throw that in the denominator of a rational expression and multiply finally by a post gain.

It sounds good. Actually, it sounds a lot like applying a hyperbolic tangent function to the audio which I have heard of as a standard trick for wave shaping. But your way seems to use less cpu.

Thanks. I'll definitely play with it some.

Post

Gosh, it's been a while since I made this, but I think that's all correct. The 'Curve' is actually a number between 1 and 5, I think, which changes the point at which the signal saturates, if that makes sense. The pre and post gain 'knobs' are there to allow you to drive the signal harder, while attenuating the output, if needed. I usually have the input gain around .8 or so, although that really depends on the signal level.
Image

Post

Correction! The 'Curve' parameter is expecting a value between -7 and -3! Sorry for the error above, I was thinking of another plug...

The gain inputs are between 0 and 2, as well.
Image

Post Reply

Return to “SonicBirth”