Audio Toolkit: ATK SD1 Implementation

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.

Block diagram

Let’s start with the block diagram.

SD1 annotated schematic
SD1 annotated schematic

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

Drive section

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:

Simple overdrive for a 100Hz sinus
Simple overdrive for a 100Hz sinus
SD1 overdrive for a 100Hz sinus
SD1 overdrive for a 100Hz sinus

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:

Sine sweep behavior for the simple overdrive  section
Sine sweep behavior for the simple overdrive section

Sine sweep behavior for the SD1 overdrive section
Sine sweep behavior for the SD1 overdrive section

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.

Tone section

It’s now time for the tone section. Let’s just display the different spectrums:

Spectrum of the SD1 tone section
Spectrum of the SD1 tone section

In all cases, the high frequencies are attenuated a little bit, but the main effect of the tone section is handling the medium frequencies.

Wrap-up

The SD1 plugin consists of several ATK filters:

  • Drive section
    1. Oversampling filter (6 points, order 5) x8
    2. SD1 overdrive
    3. Butterworth low-pass filter (Fc=20kHz, order 6)
    4. Decimation filter
  • Tone section
    1. SD1 tone filter
    2. 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)

Buy Me a Coffee!
Other Amount:
Your Email Address:

3 thoughts on “Audio Toolkit: ATK SD1 Implementation”

    1. 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.

Leave a Reply