I just released my SD1 simulation, and now it is time to explain why is inside this plugin. Not everything in the original pedal was simulated, and different schemes were used to tackle the different stages.
Let’s start with the block diagram.
In blue, I displayed what I actually implemented:
- the drive section, what creates the SD1 specific tone
- the tone section, with its specific filter
- the level section, simple enough
In violet, what I didn’t implement:
- the input buffer stage, because it is mainly resistors, so no spectral differences
- the output buffer stage, for the same reasons, except for the HP filter that I implemented differently
- the latch to switch the effect on/bypassed
As all drive sections, there are different ways of handling the non linearities. As for me, I like to implement it as an ODE and solve it with a trapezoidal approximation and a Newton-Raphson optimization. The equations are a little bit different from the Simple Overdrive, but they are quite close. The main difference is that the clipper is not symmetric, which means it will introduce not only odd harmonics, but also even harmonics.
Let’s start with a visual comparison of the result, compared to the simple overdrive:
The two signals look quite different, and for a good reason: the SD1 simulation adds the distorted signal to the original one. But still, the simple overdrive had one sharp edge, and then a slow one, whereas the SD1 has two sharp edges. It also translates in the numerical behavior of the filter: if the simple overdrive behaved nicely on a sin sweep with an oversampling of x4, without going over 10 iterations, SD1 doesn’t converge in less than 50 iterations for frequencies higher than 7 kHz!
Let’s now compare the spectrum of those two overdrives:
It is clear that the SD1 section is noisier than the simple overdrive (oversampling x8). You can still see the small even harmonics on the SD1 spectrogram. If the drive level is turned down, the even harmonics are actually more pronounced than with drive level turned up.
It’s now time for the tone section. Let’s just display the different spectrums:
In all cases, the high frequencies are attenuated a little bit, but the main effect of the tone section is handling the medium frequencies.
The SD1 plugin consists of several ATK filters:
- Drive section
- Oversampling filter (6 points, order 5) x8
- SD1 overdrive
- Butterworth low-pass filter (Fc=20kHz, order 6)
- Decimation filter
- Tone section
- SD1 tone filter
- High-pass filter (Chamberlin filter, Fc=20Hz)
- Level section (simple volume filter)
With the small oversampling, the computation cost is manageable for a DAW usage (IMHO).
Thanks to Florent Keller for the GUI design and Oli Larkin for WDL-OL (VST2/VST3/AU support)
3 thoughts on “
Audio Toolkit: ATK SD1 Implementation”
is there a demo for this?
What do you mean by demo? There are several plugins that have the implementation, and you can also build a standalone app with the wdl project on github or source.forge.