Softclipping overdrive using the Spin Semiconductor DSP

Jeroen Korterik, jan 2014

Back to Tech pages overview


Introduction

Digital signal processors (DSPs) are being used more and more in guitar effects processors because of their flexibility and low manufacturing costs - especially in large volumes. Most guitarists can appreciate the DSP for generating reverb, chorus echo etc although there are still a lot of purists who think analog electronics is the only way to go.
When it comes to overdrive effects, DSPs are generally considered to be no good although recently there have been some interesting developments like the Kemper profiling amp that uses impressive algorithms to measure and reproduce the complex sound of a complete amplifier setup. However, most guitar 'experts' still rely on traditional analog electronics.
I have been designing and modding analog electronics like effects pedals and tube amps for many years and have had nothing but bad experiences with DSP effects pedals. Maybe a DSP in a parallel effects loop for adding some reverb to a pure analog signal chain would be acceptable but I would like to keep the dry signal free of any digitization.

Recently, a colleque guitar electronics enthousiast borrowed me his evaluation board for the Spin Semiconductor FV-1 'reverb IC' using 'virtual analog technology'. It's a DSP core with some on chip data memory and interfacing circuitry. Although this chip is really designed for filters and delay effects like reverb, echo and chorus I decided to program a soft clipping overdrive in it; just for the fun of it, not as serious attempt to get a decent overdrive as I didn't even believe this would be possible. Below you can listen to some results of this overdrive programming. I readjusted my opinion on DSPs a bit as I actually liked the result!
There is however one little backdraw when it's compared to a good analog overdrive: the DSP is noisier. Some electronics noise and quantization noise is added during the digitization. The overdrive effect is a nonlinear effect that is like putting a magnifier on the noise. This is the reason why this digitization is less critical in linear effects like reverb.

Nerdy details...the most important part

This audio sample is recorded using the Spin Semiconductor FV-1 evaluation board and a Peavey Classic30 amp on the clean channel. Tone controls are at 12 o'clock and I dailed in some reverb on the amp.
The stock speaker of the Classic30 was exchanged for an Eminence Red Fang and I connected an extension cab loaded with a VG12-60 of Koch amps. This cab has an open back as well.
I used a simple voltage buffer with 1* gain to have a high impedance input for my guitar before I enter the DSP board. The guitar is a brandless telecaster with maple neck that I bought for 200 dutch guilders - about 91 euros. I mounted some Airline© Vintage Voiced Single Coil Pickups in it (thanks for borrowing these, Tije).
The microphone is a homebuilt stereo mic using 2 Monacor/Panasonic MCE2000 electrets that will cost you about 3 euros. Included in the little box is a battery and one opamp per channel.
My soundcard/digitizer is a Line6 UX1, not a very excellent device but just reasonable for it's price. The only post processing I did was subtle EQ and a fixed amplification factor.
The first part is recorded using the bridge pickup, the neck pickup follows and finally you'll hear the combined sound. These were recorded with exactly the same knob settings. Sorry for my sloppy playing- I'm not a profi, I know.

Here's some pictures of the stuff:

evaluation board Spin Semi>
the Spin Semiconductor evaluation board is visible on the left. Furthermore, the Line6 UX1 is shown

recording setup>
this was my 'recording setup' (mwoehaha) with the homebuilt stereo mic on the right and the Classic30 standing on the extension cab. I have a Classic30 first version, the current version looks 'different' but as I've been told it's internally quite identical. The Dynacord TwenII in the back is just standing there, being a Dynacord TwenII.

monacor mic>
closeup of the homebuilt stereo microphone using 2 cheap MCE2000 electrets. As you can see, I was not really concerned about the looks of the mic when I built it.

telecaster>
the black Tele with some mods and tweaks. These humbucker lookalikes are Airline© Vintage Voiced Single Coil Pickups

Program Code

Here's the source code .spn file. It's plain ASCII text.
Check Spinsemi.com for instructions on how to program the evaluation board, the SpinAsm assembly syntax, the SpinAsmIde program, more examples, etc..
The softclipping program executes the following steps:

declaration of variables and constants, reading the gain potentiometer and scale it


As the Q factor and center frequency of the parametric EQ (see below) are fixed, it can be defined here as constants

reading the input sample


Left and right input channel are summed to mono.

pre overdrive highpass shelving


With gain pot minimal (1* gain) there is no highpass shelving. When the gain is increased, the lows are attenuated somewhat to prevent muddy/fuzzy overdrive.

soft clipping overdrive and volume control


The formula I created for the overdrive is:
V(out)=V(in)/(abs(V(in))+1-Gain)
Where V(in) and V(out) are the current sample of resp. the input and the output signal,
|V(in)| is the absolute value of V(in) and
Gain is the gain potentiometer setting that scales between 1 for 1* gain to 0 for infinite gain.
I think this formula is really the most obvious one to generate softclipping because it's so simple and elegant. I haven't seen it anywhere else but I probably re-invented the wheel here...

post overdrive parametric EQ


This creates a subtle dip at 3kHz to attenuate the overdrive harmonics>
The original code comes from the Active Crossover program, Keith Barr. This version is modified to scale the depth of the dip with the tone potentiometer. Tone pot max results in no dip, signal is effectively bypassed.

post overdrive lowpass shelving


Attenuates the frequencies above 2 to 3kHz, scales with the tone pot. Tone pot max results in no dip.

If the gain is set to minimum while the volume and tone are set to maximum, the signal is completely clean and unmodified.
Maybe you might want to add a subtle bass boost after the OD that scales with gain, to compensate for the pre OD attenuation of the bass.

Other Programmable DSP/microprocessor eval boards/ stomp boxes

Here's a semi random listing of DSP eval boards / stomp boxes

the OWL
Programmable stompbox with ARM processor, OwlNest graphical programming utility OwlSim utility for creating VST plugins.

OpenStomp
Programmable stompbox with Parallax Propeller processor, graphical programming. The pedal has a video output.

Line6 Tonecore
Based on Freescale DSP. Preprogrammed Tonecore effects like the Verbzilla are available as well.

SKRM-C8-XXX
A small piggy back PCB with the Spin Semiconductor FV-1 mounted on it. Convenient for creating stomp boxes / on board effects in amplifiers etc.

Piet's Echotapper
A project to create vintage delay/echo using the SKRM-C8 / Spin Semi FV-1. The Potentiometers are automated using an Arduino processor.

SigmaStudio
Free graphical programming tool for the Analog Devices DSPs.
The powerful ADAU1452 DSP is introduced recently. It can execute 6,144 instructions per audiosample at 48kHz rate. An evaluation board for this processor is announced as well.

Elektor Audio DSP project
Magazine for electronics hobbyists created this affordable evaluation board for the Analog Devices ADAU1701. Programmable with Analog Devices SigmaDSP software.

Comments/questions

Idea's and comments are welcome!