PLUG-QA is a Quality Assurance (QA) script for audio effect plugin development (.vst3
, .component
, .dll
, .vst
, .soulpatch
, and .soul
). It displays step, frequency, gain, waveshaper, vectorscope, and spectrogram responses and renders audio files.
octave qa.m <plugin path>
- Logs go to stdout
- Figures and rendered audio placed in
results/
- Non-zero exit code on common errors
- No runtime errors.
- Spectrogram shows no aliasing partials above -60dB running on a plugin with the most aliasing-prone parameters*.
- Common sense (e.g., a low-pass filter should have a low-pass frequency response).
*Only applies to nonlinear plugins. To find the 'most aliasing-prone parameters' set nonlinear parameters (e.g., drive) to max values. For nonlinear parameters (e.g., threshold) that do not linearly correlate with aliasing, set their values to approximately the most aliasing-prone values. Consequently, aliasing is practically inaudible, even though it may surpass -60dB for some untested signal/parameter combinations.
- Only tested on Windows x64 Octave, but should work on Matlab, Windows/Linux, and ARM with minimal tinkering.
- Does not replace unit testing, although PLUG-QA may not run on plugins that fail common unit tests.
Below are some demonstations of the output figures* after running on some SOUL-VA plugins (hereinafter referred to as 'effects'). Please refer to qaFunc.m for a more in-depth explaination of test cases.
The effect passes signals through unmodified; therefore, the output figures plot the test signals. Notice how the step response input is a pulse signal with values 0.5 and 0.25 to measure overshoot/undershoot. The DC IO plot (a.k.a. compressor transfer function) and SinRamp IO plot (a.k.a. waveshaper plot) map, respectively, monotonically increasing DC and the product of a sin wave and ramp signal to their outputs.
The effect is nonlinear. Even though Magnitude Response is specific to LTI systems, it accuractly predicts that TheBass
tends to boost bass frequencies. The DC IO Plot is constant due to the effect's internal DC blocker.
The effect is nonlinear, but does not pass PLUG-QA. Aliasing paritials greater than -60dB in peak amplitude appear as lines nonparallel to harmonics/inharmonics or random dots (circled in red) in SinSweep Spectrogram (BW). Unrelated to aliasing, DC noise also appears from 0 to 6 seconds.