How to test VST/AU plugins using PluginDoctor

Oleh Chaplia
8 min readSep 3, 2018
PluginDoctor with CLA-2A

Have you ever wondered how exactly your favorite audio plugins process your sound? What effects do they give to your sound? Why do they sound so good?

Many of us are looking for great UI and listening to the final sound that the plugin produces. But behind all that, there are math algorithms and programming work. Of course, we couldn’t see the source code of audio plugins because they are packaged as a binary. But we can test them using a “black box” approach.

Short review of PluginDoctor

PluginDoctor is a simple cross-platform application that can analyze your VST and AU plugins. There are 2 versions of this application — demo and full. The demo version has the same tools as the full, but sometimes it is blocked for 30 seconds and can load only 1 plugin at a time. The demo of PluginDoctor can be downloaded here.

Features (taken from the official website) [1]:

  • Highest quality, double precision FFT engine, independent stereo channel analysis
  • Linear analysis: magnitude and phase response using delta or random input signal
  • Harmonic analysis: highly accurate frequency response analysis to a sinusoidal input signal. Input strength and frequency can be varied for THD/THD+N calculation — intermodular distortion modus.
  • Oscilloscope: watch what happens to a sinusoidal input signal in real-time.
  • Dynamics: use a ramping signal to test compression or expansion or an attack-release signal to check your compressor’s attack and decay curves.
  • Performance: how many milliseconds are spent in your plugin’s audio processing callback (as a function of buffer size)
  • Freely resizable user interface
  • Three quality settings corresponding to three different FFT buffer sizes
  • Storage option of curves in Linear and Harmonic analysis mode for easy comparison of settings or of different plugins
  • Built-in screenshot function
  • Comes as a 32 and a 64-bit executable
  • Can load VST and (on Mac) AU effect plugins
Screenshot with loaded plugin to test

Just for note — this plugin was made with the JUCE framework 😁

Settings and plugin selection

First, we need to set plugin settings. To do this, press the settings button (yellow circle at the top right corner), and you’ll see a settings window. Set the quality to the highest and validate your audio hardware settings to use the proper audio buffer size. I prefer to set it to 128 samples (2.9ms).

PluginDoctor settings menu

Let’s check the other buttons at the top right corner:

PluginDoctor settings bar
  1. The first one enables hardware analysis. This mode is enabled in the full version of this application.
  2. Shows a list of all available VST/AU plugins for testing
  3. Shows or hides the UI of the loaded plugin
  4. Takes a screenshot from the PluginDoctor
  5. Opens settings menu

The next step is to load your VST plugin into this plugin. Just press on the plugin selection button. If you don’t see any plugins in the list, scan your computer to find them. Select CLA-2A Mono and click on the Load Plugin button. If you don’t have CLA-2A installed, you can choose any other VST plugin you like.

A list of VST/AU plugins

Real-life test on CLA-2A from Waves

I chose Waves CLA-2A to test because this compressor/limiter is an excellent example for testing harmonics, dynamics, and frequency response. Let’s load CLA-2A into PluginDoctor. This is a total reset state. As we can see, CLA-2A already changed our signal even if we didn’t touch any knobs.

CLA-2A loaded into PluginDoctor

PluginDoctor can analyze several characteristics of your plugin. They are:

  • Linear Analysis — in other words, it shows you a frequency response like parametric EQs.
  • Harmonic Analysis — this shows you how many harmonics your output signal contains.
  • Oscilloscope — a simple oscilloscope.
  • Dynamics — shows the relation between your input sound and output sound volume (compression or expansion curve).
  • Performance — performance of your plugin.

Linear Analysis

Linear analysis is the first view showing you a blue line graph. It has 3 modes. You can also switch between Delta and Random signals. Let’s check Freq, Phase, and IR for the Delta signal. We didn’t change any parameters on CLA-2A.

  • Delta — input signal is a full-scale Dirac Pulse that contains all frequencies in a constant amplitude and is ideally in phase.
  • Random — input signal’s frequency response is changed in time by random values.

The frequency view shows you a frequency response over the spectrum. Here, you should see a similarity with graphics in other spectrum analyzers like Voxengo SPAN. Changing some parameters in your will change the output’s signal frequency. This spectrum is helpful for knowing how your plugin changes the signal frequency.

As we can see, CLA-2A changes low frequencies by High-Pass Filter on 20Hz and has some small attenuation on high frequencies near 15 kHz. The human listening range is from 20Hz to 20kHz, so HPF is OK.

  • X-axis — frequency, from 20 Hz to 20kHz
  • Y-axis — signal volume, from -10.0 dB to 10.0 dB
Linear Analysis — Frequency view — Delta

The second view is Phase. In this view, you can see the difference between phase and frequency. Who remembered math should know that 3.14 is the Pi number 😀. And that is the ratio of a circle’s circumference to its diameter. Why do we have it here? Phase is directly related to the sine wave. As we know, all audio signals are compounded from multiple sine waves. When the sound wave starts, it should have some starting point. A phase value defines this starting point. For example, we all know that signals in phase have bigger volume output, and signals out of phase are canceling. Additional reading is here [2].

For example, we can see that CLA-2A changes w frequencies using this setting. But this is not a very big issue because this compressor is often used for vocals, and we know it is good to do a low cut on vocals up to 80Hz.

  • X-axis — frequency, from 20 Hz to 20kHz
  • Y-axis — phase, from -3.14 to 3.14
Linear Analysis — Phase view — Delta

The third view shows you the Impulse Response (IR). This shows an impulse that was produced in the output of this plugin. As we can see here, there is no difference between input and output, so we can think that the plugin doesn’t change IR timing. For example, this graph could be changed by the reverb of delay effects. For CLA-2A, it is OK not to change the IR.

  • X-axis — time, ms
  • Y-axis — output signal amplitude, from -1.0 to 1.0
Linear Analysis — Impulse Response view — Delta

Harmonic Analysis

The harmonic Analysis view shows you a spectrum of the output signal. Generally speaking, here you can see all harmonics in the audio signal that compressor CLA-2A produced. As we can see, the fundamental frequency for the input signal is 1kHz and contains harmonics till the end of the spectrum, each with a lower volume than the previous. [3]

  • X-axis — frequency, from 20 Hz to 20 kHz
  • Y-axis — output signal volume, from -200.0 dB to 0.0 dB

Harmonics can be viewed in 2 modes — THD and IMD. The first is THD — total harmonic distortion — the ratio of all the harmonics to the fundamental frequency. THD is measured by one sinusoid. It shows you how the CLA-2A distorts all harmonics. You'll see smaller amplitude peaks if you look at the main harmonic at 1kHz. And the same image around other harmonics. This means that they are distorted somehow. [4]

Harmonic Analysis — THD

This view shows you an IMD — intermodulation distortion. This is a related measure of distortion. IMD is measured using the sum of two or more sinusoids as an input signal. Typically, the frequencies combined in the input are not harmonically related. This is convenient because it allows for examining many distortion components in a narrow bandwidth. [4]

Harmonic Analysis — IMD

Oscilloscope

The oscilloscope view shows your sound wave produced by the CLA-2A in the time domain.

  • X-axis — time, in milliseconds
  • Y-axis — output signal amplitude, from -1.0 to 1.0
Oscilloscope

Dynamics

Dynamics shows you a dependency of input signal volume to output signal volume.

  • X-axis — input signal volume, from -100.0 dB to 0.0 dB
  • Y-axis — output signal volume, from -100.0 dB to 0.0 dB

The dashed line is the volume of the input signal over time. The solid line is the volume of the produced signal by CLA-2A. As you can see, a slope on the top was created because we changed some compression parameters.

Dynamics — Ramp

Also, you can switch to a view of attenuation/release over time domain.

  • X-axis — time, from 0.0 s to 4.0 s
  • Y-axis — amplitude, from -1.1 to 1.1 (amplitude is somewhat equal to volume)

Here, you can see how this signal is modified in the time domain.

Dynamics — Attenuation/Release

Performance

This performance view shows you the overall CLA-2A latency in processing from small to big buffers. The graph below shows a dependency of buffer size on processing time. That peak in the middle was produced when I took a screenshot.

  • X-axis — buffer size, from 327 to 65536
  • Y-axis — overall latency from 0.0ms to 18.3 ms
Performance

Summary

Of course, PluginDoctor has some cons. For example, there is no bypass mode to compare the raw signal from the input to the produced output signal by the loaded plugin. Also, the spectrum view is not so contrasting, and it is hard to see signal lines over the spectrum background. It would be great to have more fluid visual animations.

There are few tools like this on the market, so PluginDoctor can be a great tool to test and analyze your VST/AU plugins and understand better how they work their characteristics, and their pros/cons. Knowing how they deform sound in the output, you can create emulations of the tested plugin using other plugins 😁.

--

--

Oleh Chaplia

Senior software engineer. Musician and producer. I am writing about state-of-the-art technologies, software engineering, music production and audio engineering.