Cori­ander V. Pines

Free­lance Soft­ware En­gin­eer, Multi­media Art­ist, Indep­endent Audio Re­searcher

Real-Time Virtual Analog Modelling of Diode-Based VCAs

2025. Proc. 28th Intl. Conf. Digital Audio Effects (DAFx25)

This is the companion page to the paper entitled "Real-Time Virtual Analog Modelling of Diode-Based VCAs" by Coriander V. Pines, submitted for publication in the proceedings of the 28th International Conference on Digital Audio Effects (DAFx25).

Download Full Paper
Download Poster
Launch Interactive Audio Demo
BibTeX Citation
Expand
@inproceedings{pines2025,
    address   = {Ancona, Italy},
    author    = {C.~V. Pines},
    booktitle = {Proc. 28th Intl. Conf. Digital Audio Effects (DAFx25)},
    month     = {Sept. 2-5,},
    title     = {Real-Time Virtual Analog Modelling of Diode-Based {VCAs}},
    year      = {2025}
}

Abstract

Some early analog voltage-controlled amplifiers (VCAs) utilized semiconductor diodes as a variable-gain element. Diode-based VCAs exhibit a unique sound quality, with distortion dependent both on signal level and gain control. In this work, we examine the behavior of a simplified circuit for a diode-based VCA and propose a nonlinear, explicit, stateless digital model. This approach avoids traditional iterative algorithms, which can be computationally intensive. The resulting digital model retains the sonic characteristics of the analog model and is suitable for real-time simulation. We present an analysis of the gain characteristics and harmonic distortion produced by this model, as well as practical guidance for implementation. We apply this approach to a set of alternative analog topologies and introduce a family of digital VCA models based on fixed nonlinearities with variable operating points.

Supplementary Material

Analog Circuit Prototype

Figure showing the effect of internal diode capacitance.
Figure A1: Small-signal gain frequency response of the circuit shown in Fig. 1 for various values of VctrlV_\mathrm{ctrl}, with R=1  kΩR = \si{1}{\kilo\ohm} and a 1N4148 diode. The diode's internal capacitance increases the gain of high-frequency components when the overall gain is low.

DSP Model

Figure A2: Top: Input signal sweep for (5). Dashed line indicates the linear function with equivalent gain, AxAx.
Bottom: Time domain waveform y(cos(2πt))y(\cos(2 \pi t)) for (5). Dashed line shows Acos(2πt)A \cos(2 \pi t).
For both plots, AA is animated over time between 0 and 1.
Figure plotting the gain control parameter beta for a given A.
Figure A3: Plot of the gain control parameter (6), β(A)=ω1(A1A)\beta(A) = \omega^{-1}{\left(\frac{A}{1-A}\right)}, semi-log scale. The dashed line shows lnA\ln{A}.

Harmonic Analysis

Figure A4: Magnitude of harmonics introduced by (5) when applied to x=cos(2πft)x = \cos{(2\pi f t)}, relative to the input signal. α\alpha is animated over time from 0.05 to 15. Odd harmonics are purple and even harmonics are orange. Grey grid lines show 20  dB\si{20}{\decibel} per decade slopes.
Figure showing THD at different values of alpha when sweeping A.
Figure A5: Total harmonic distortion introduced by (5) when applied to x=cos(2πft)x = \cos{(2\pi f t)} for different values of AA and α\alpha. Total harmonic distortion is defined here as THDF{y(x)}=n=2hn2h1\mathrm{THD}_\mathrm{F}\{y(x)\} = \frac{\sqrt{\sum_{n=2}^\infty h_n^2}}{h_1}.

Aliasing

In addition to the ADAA method described in the paper, matched filters may also be used to reduce aliasing with minimal changes to a system's overall frequency response. A two-way crossover filter can be used to split the input signal into low- and high-frequency regions; the low-frequency components can be modulated and distorted by a diode VCA model and the high-frequency components by a simple multiplier. In informal listening tests, we found that this technique was highly effective at reducing audible aliasing distortion even in systems with minimal or no oversampling.

A high-cut filter may also be applied to the input signal followed by a matching high-boost filter after the VCA's output; this configuration lowers the effective α\alpha value for frequency components above the cutoff frequency, mitigating the creation of high-frequency harmonics.

Figure showing aliasing present when performing a sinusoidal sweep.
Figure A6.1: Spectrogram of linear sine sweep from 0 to 24kHz with α = 5 and A = -40 dB. The amplitude scale is -100 dBFS to -60 dBFS. No antialiasing was applied.
Figure comparing different antialiasing methods applied to a sinusoidal sweep.
Figure A6.2: A sweep sampled at 4× the previous sample rate. No antialiasing was applied.
Figure comparing different antialiasing methods applied to a sinusoidal sweep.
Figure A6.3: A sweep where antiderivative antialiasing was applied using a rectangular kernel.
Figure comparing different antialiasing methods applied to a sinusoidal sweep.
Figure A6.4: A sweep where antiderivative antialiasing was applied using a linear kernel.
Figure comparing different antialiasing methods applied to a sinusoidal sweep.
Figure A6.5: A sweep where the low- and high-frequency components were first separated using a Linkwitz–Riley crossover filter; the low-frequency components were modulated by the diode VCA model and the high-frequency components by a simple multiplier.
Figure comparing different antialiasing methods applied to a sinusoidal sweep.
Figure A6.6: A sweep where a 4th order high-cut filter was applied to the input signal before the VCA model, followed by a matched high-boost filter applied to the output signal.

Variation: Quasi-Logarithmic Converter

Plot of the gain control parameter for (15c).
Figure A7: Plot of the gain control parameter (15c), β(A)=ω1(1AA)\beta(A) = \omega^{-1}{\left(\frac{1-A}{A}\right)}, log-log scale. The dashed line shows A1A^{-1}. Note that β\beta takes on a much larger range of values compared to (6), which may introduce additional rounding errors.
Figure A8: Top: Input signal sweep for (12a). Dashed line indicates the linear function with equivalent gain, AxAx.
Bottom: Time domain waveform y(cos(2πt))y(\cos(2 \pi t)) for (12a). Dashed line shows Acos(2πt)A \cos(2 \pi t).
For both plots, AA is animated over time between 0 and 1.
Figure A9: Magnitude of harmonics introduced by (12a) when applied to x=cos(2πft)x = \cos{(2\pi f t)}, relative to the input signal. α\alpha is animated over time from 0.05 to 20. Odd harmonics are purple and even harmonics are orange. Grey grid lines show 20  dB\si{20}{\decibel} per decade slopes.
Figure showing THD at different values of alpha when sweeping A.
Figure A10: Total harmonic distortion introduced by (12a) when applied to x=cos(2πft)x = \cos{(2\pi f t)} for different values of AA and α\alpha.

Variation: Current-Controlled Bridge

Figure A11: Top: Input signal sweep for (16). Dashed line indicates the linear function with equivalent gain, AxAx.
Bottom: Time domain waveform y(cos(2πt))y(\cos(2 \pi t)) for (16). Dashed line shows Acos(2πt)A \cos(2 \pi t).
For both plots, AA is animated over time between 0 and 1.
Figure A12: Magnitude of harmonics introduced by (16) when applied to x=cos(2πft)x = \cos{(2\pi f t)}, relative to the input signal. α\alpha is animated over time from 1 to 50. Odd harmonics are purple and even harmonics are orange. Grey grid lines show 20  dB\si{20}{\decibel} per decade slopes.
Figure showing THD at different values of alpha when sweeping A.
Figure A13: Total harmonic distortion introduced by (16) when applied to x=cos(2πft)x = \cos{(2\pi f t)} for different values of AA and α\alpha.