Just messing around with LTSpice I came up with this VCA that simulates shockingly good for what it is:
I don't recall ever seeing the use of an op amp to mix the signal and control voltage in an isolated way like this so I just thought I would post it here for posterity (I will probably never build it myself).
If I plot the current through J1 vs the drain voltage, it's an absolutely perfect diagonal line. But R4 has to be trimmed to be exactly 1/3 R3. In practice maybe this is not possible and the simulation is deceiving me?
With R source 10K and 100mVpp input, attenuation is 37dB and the 2nd harmonic simulates 88dB down. Of course increasing R source or decreasing input would improve things greatly. But at the expense of noise created by from having to boost the signal after attenuating the input.
But when you overdrive this circuit it looks like the kind of distortion that would not be horrible for something like a compressor so one might just put a level control in front so that the user can adjust for maximum noise / distortion balance.
I know you can buy a VCA chip for $5 USD but this looks like this would perform really well with a handful of very common parts.
Now if only there were an equally clever way to linearize the control voltage ...
Note that what is different about this circuit from all of the other FET VCAs I've seen on the Internet, is that different op amp inputs are used to mix the control signal with the control voltage. There are no capacitors coupling the signal and the CV. It's DC coupled. That might be good for something.
Note that when the control voltage gets very close to Vgs(off) the signal does start to affect the linearity of the current through the JFET and you get a compression type of distortion (although I suspect this is true of all circuits like this). For example, the Vgs(off) of the 2N5484 model is 1.5. If I set the CV to 1.49 the attenuation is -4.5dB and the 3rd harmonic is 47 dB down. And this is again with a 100mVpp input which is quite large for this type of circuit.
Also works with a series JFET. Here is a circuit that combines the two to yield better dynamic range (potentially very large if the series JFET is switched completely off because distortion doesn't matter as much when the signal is 60dB down):
The circuit described by Henry Santana in this Electronic Design article:
is superior in almost every way:
The simulated dynamic range is -180dB which is of course impossible but we'll assume whatever reality is that it's pretty good.
The control voltage is linearized. Trimming is not necessary. Noise simulateed slightly better. And it works at DC.
The only thing that my circuit simulates better at is distortion. THD 0.012% compared to 0.004% in my circuit. The second harmonic is 78 dB down (instead of 88 dB). The distortion is also asymertic whereas in my circuit it is purely symetric. But the distortion actually increases less as the input is increased. Meaning this circuit can take 10Vpp input and distortion is still only 0.864% whereas in my circuit the distortion would be horrendous.