By Adam Gyuris

About


The objective of this project was to create a usable and pleasant sounding guitar amplifier plugin that can be used for guitars, but also synths, and drums. Typical digital modeling of analog circuitry, such as an amp, relies on recreating physical systems and phenomena to capture nonlinearities. This can be achieved in many ways through methods such as black box and white box modeling. Although due to the complexity of the topic, only the drive section of the amp was modeled on a diode clipping algorithm. As seen below, six controls are featured: input, drive, low, mid, high, and output, all of which are used to shape your sound in a way that you desire.

sc.jpg

Technical Stack


JUCE

The backbone of this project was the JUCE framework. JUCE is an open-source and cross-platform C++ application framework used to make desktop and mobile applications. Most importantly, JUCE is capable of compiling applications into VST and Audio Units. ****In particular, I used its GUI and plugin libraries for my project.

Development


Design and Philosophy

While designing my plugin, I desired good-sounding distortion and controls that are familiar. It was important to be able to dial in the plugin the same way you would dial in an actual guitar amplifier.

Technical Overview

Initially, there was a lot of research I had to do to create a guitar amplifier simulator and there were several approaches I could have taken. In its simplest form, a guitar amplifier passes signal through an input filter, a nonlinear transfer function, and an output filter. There are numerous ways to emulate a guitar amplifier. One popular way is to directly model an analog circuit from a tube guitar amplifier. These amplifiers have the sounds that most people desire but are also difficult to model digitally. There are two ways to go about this: black box and white box modeling. Black-box modeling is the approach where you analyze how your signal is affected by an amplifier and you model and recreate that sound without any regard to the actual circuitry. A vastly different approach is white box modeling. Where you directly model each component of the circuit to emulate it digitally. For my project, I used a diode clipping algorithm.

In the preamp stage, numerous filters will first shape the incoming signal and define which frequencies will be distorted. After this stage, our transfer function will be what creates our distortion. And then lastly our output filters will shape our already distorted sound. In my case, I initially run the signal through several filters to shape the sound pre-distortion. All of these systems were implemented using JUCE’s preestablished filter. First, the signal is run through a high pass filter at 200 Hz to reduce mud and a bit of intermodulation distortion in our signal. Next a pre clip peak filter at 1500 Hz with 6dB of gain and bandwidth of 0.5. This peak filter adds color and brings out harmonics that will be shaped nicely by our distortion stage next.

The next step is the distortion stage, where processing was done through a diode clipping algorithm but there are several ways to accomplish this. Several transfer functions sound good in the context of distortion, such as hyperbolic tangent. Waveshaping by using lookup tables is another method where input is run through a predefined lookup table inside a buffer of a certain length. In my case my I run the

signal through a transfer function based on diode clipping with modification by trial and error until a desirable sound was obtained.

eq.jpg

Next is the tone stack, or the tone controls. This is the last stage where we can shape our sound. The tone control is represented by three linear filters labeled low, mid, and high, each occupying separate bands in the spectrum. The low control is a low shelf filter at 200 Hz with a variable gain of plus or minus 6dB with Q at 0.5. The mid control is a peak filter at 1000 Hz with variable gain and Q at 0.5. Lastly, the high control is a broader peak filter at 4000 Hz with a Q at 0.3. These filters were also defined by trial and error until I got it to sound the way I expect a tone stack to behave.