Edward Rawde posted an eight-transistor low distortion sine wave oscillator circuit recently, and John May pointed out that you could leave out half the transistors.
I couldn't immediately see exactly how either of the circuits worked, though I could get the simulations to run under LTSpice and see roughly what was going on.
I've now dug a bit deeper. Here is a five transistor version of John May's four transistor version.
Version 4 SHEET 1 3020 2548 WIRE 80 -208 -288 -208 WIRE 800 -208 160 -208 WIRE -288 -96 -288 -208 WIRE 80 -96 -288 -96 WIRE 400 -96 160 -96 WIRE -288 32 -288 -96 WIRE -176 32 -288 32 WIRE -32 32 -96 32 WIRE 48 32 -32 32 WIRE 208 32 128 32 WIRE 256 32 208 32 WIRE 400 32 400 -96 WIRE 400 32 320 32 WIRE 464 32 400 32 WIRE 608 32 544 32 WIRE 656 32 608 32 WIRE 800 32 800 -208 WIRE 800 32 720 32 WIRE -752 48 -816 48 WIRE -624 48 -688 48 WIRE -288 144 -288 32 WIRE -176 144 -288 144 WIRE 208 144 208 32 WIRE 256 144 208 144 WIRE 608 144 608 32 WIRE 656 144 608 144 WIRE -816 160 -816 48 WIRE -752 160 -816 160 WIRE -624 160 -624 48 WIRE -624 160 -672 160 WIRE -32 160 -32 32 WIRE -32 160 -112 160 WIRE 400 160 400 32 WIRE 400 160 320 160 WIRE 800 160 800 32 WIRE 800 160 720 160 WIRE 832 160 800 160 WIRE -176 176 -288 176 WIRE 256 176 224 176 WIRE 656 176 624 176 WIRE 224 208 224 176 WIRE 624 208 624 176 WIRE -1968 224 -1968 144 WIRE -1008 272 -1104 272 WIRE -816 272 -816 160 WIRE -816 272 -944 272 WIRE -736 272 -816 272 WIRE -624 288 -624 160 WIRE -624 288 -672 288 WIRE -544 288 -624 288 WIRE -416 288 -480 288 WIRE -288 288 -288 176 WIRE -288 288 -336 288 WIRE -208 288 -288 288 WIRE 208 288 -128 288 WIRE 400 288 400 160 WIRE 400 288 208 288 WIRE -736 304 -816 304 WIRE -816 336 -816 304 WIRE 400 336 400 288 WIRE -1968 400 -1968 304 WIRE -1856 400 -1968 400 WIRE -1664 400 -1776 400 WIRE 208 400 208 288 WIRE 208 400 -1600 400 WIRE 400 448 400 416 WIRE 544 448 400 448 WIRE 368 464 336 464 WIRE -1968 496 -1968 400 WIRE -1968 496 -2304 496 WIRE 368 496 368 464 WIRE 400 496 400 448 WIRE 544 496 544 448 WIRE -2432 544 -2432 496 WIRE -2304 560 -2304 496 WIRE -2240 560 -2304 560 WIRE -2144 560 -2176 560 WIRE -1360 576 -1360 480 WIRE 384 608 384 560 WIRE 544 608 544 576 WIRE 544 608 384 608 WIRE -1968 640 -1968 496 WIRE -32 656 -32 160 WIRE 208 656 208 400 WIRE 384 656 384 608 WIRE 800 656 800 160 WIRE -2304 672 -2304 560 WIRE -2256 672 -2304 672 WIRE -2144 688 -2144 560 WIRE -2144 688 -2192 688 WIRE -2032 688 -2144 688 WIRE -1360 688 -1360 656 WIRE -1104 688 -1104 272 WIRE -1104 688 -1360 688 WIRE -2432 704 -2432 624 WIRE -2256 704 -2432 704 WIRE -32 752 -32 720 WIRE 208 752 208 720 WIRE 384 752 384 720 WIRE 800 752 800 720 WIRE -2432 832 -2432 704 WIRE -2432 832 -2544 832 WIRE -2544 864 -2544 832 WIRE -2432 864 -2432 832 WIRE -1360 880 -1360 688 WIRE -32 880 -32 832 WIRE 208 880 208 832 WIRE 208 880 -32 880 WIRE 384 880 384 832 WIRE 384 880 208 880 WIRE 800 880 800 832 WIRE 800 880 384 880 WIRE -1968 928 -1968 736 WIRE -1424 928 -1968 928 WIRE -2544 960 -2544 928 WIRE -32 976 -32 880 WIRE -320 992 -416 992 WIRE -160 992 -256 992 WIRE -2432 1008 -2432 944 WIRE -416 1072 -416 992 WIRE -368 1072 -416 1072 WIRE -256 1072 -304 1072 WIRE -160 1072 -160 992 WIRE -160 1072 -176 1072 WIRE -2160 1152 -2160 1040 WIRE -1664 1152 -1664 1040 WIRE -160 1184 -160 1072 WIRE -160 1184 -240 1184 WIRE -32 1184 -32 1056 WIRE -32 1184 -160 1184 WIRE 48 1184 -32 1184 WIRE 176 1184 128 1184 WIRE 272 1184 240 1184 WIRE 368 1184 336 1184 WIRE 480 1184 432 1184 WIRE 576 1184 544 1184 WIRE 688 1184 640 1184 WIRE 816 1184 816 1168 WIRE 816 1184 752 1184 WIRE -1968 1200 -1968 928 WIRE -1968 1200 -2096 1200 WIRE -1904 1200 -1968 1200 WIRE -1728 1200 -1904 1200 WIRE -416 1200 -416 1072 WIRE -416 1200 -1088 1200 WIRE -304 1200 -416 1200 WIRE -2480 1216 -2480 1184 WIRE -2480 1216 -2528 1216 WIRE -208 1216 -240 1216 WIRE -2528 1232 -2528 1216 WIRE -1360 1232 -1360 976 WIRE -2480 1248 -2480 1216 WIRE -1664 1280 -1664 1248 WIRE -1424 1280 -1664 1280 WIRE -2160 1296 -2160 1248 WIRE -2160 1296 -2240 1296 WIRE -208 1328 -208 1216 WIRE -2240 1344 -2240 1296 WIRE -1664 1360 -1664 1280 WIRE -1360 1440 -1360 1328 WIRE -2240 1488 -2240 1424 WIRE -1664 1504 -1664 1440 WIRE -2160 1648 -2160 1296 WIRE -1648 1648 -2160 1648 WIRE -1088 1648 -1088 1200 WIRE -1088 1648 -1568 1648 WIRE -1904 1712 -1904 1200 WIRE -2160 1760 -2160 1648 WIRE -1968 1760 -2160 1760 WIRE -1904 1888 -1904 1808 FLAG 224 208 0 FLAG 624 208 0 FLAG 832 160 vout FLAG -272 1168 vcc FLAG -272 1232 vee FLAG -2528 1232 0 FLAG -2480 1104 vcc FLAG -2480 1328 vee FLAG -144 128 vcc FLAG -144 192 vee FLAG 288 128 vcc FLAG 288 192 vee FLAG 688 128 vcc FLAG 688 192 vee FLAG 336 464 0 FLAG 416 528 vcc FLAG 352 528 vee FLAG -2224 656 vcc FLAG -1968 144 vcc FLAG -2224 720 vee FLAG -1360 480 vcc FLAG -2432 496 vcc FLAG -2432 1008 0 FLAG -1360 1440 0 FLAG -704 256 vcc FLAG -704 320 vee FLAG -816 336 0 FLAG -1664 1504 vee FLAG -1904 1888 0 FLAG -1664 1040 vcc FLAG -2160 1040 vcc FLAG -208 1328 0 FLAG -2544 960 0 FLAG 816 1168 vee FLAG -2240 1488 vee SYMBOL res -80 16 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R1 SYMATTR Value 10K SYMBOL res 144 16 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R2 SYMATTR Value 16K SYMBOL res 560 16 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R3 SYMATTR Value 16K SYMBOL cap 320 16 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C1 SYMATTR Value 10n SYMBOL cap 720 16 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C2 SYMATTR Value 10n SYMBOL res 176 -224 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R4 SYMATTR Value 10K SYMBOL res 176 -80 M270 WINDOW 0 32 56 VTop 2 WINDOW 3 0 56 VBottom 2 SYMATTR InstName R5 SYMATTR Value 82k SYMBOL cap -256 976 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C3 SYMATTR Value 1000n SYMBOL res 32 1200 R270 WINDOW 0 32 56 VTop 2 WINDOW 3 0 56 VBottom 2 SYMATTR InstName R10 SYMATTR Value 680K SYMBOL diode 176 1200 R270 WINDOW 0 32 32 VTop 2 WINDOW 3 0 32 VBottom 2 SYMATTR InstName D1 SYMATTR Value 1N914 SYMBOL res -48 960 R0 SYMATTR InstName R11 SYMATTR Value 40.2K SYMBOL res 560 592 R180 WINDOW 0 36 76 Left 2 WINDOW 3 36 40 Left 2 SYMATTR InstName R18 SYMATTR Value 10K SYMBOL res 416 432 R180 WINDOW 0 36 76 Left 2 WINDOW 3 36 40 Left 2 SYMATTR InstName R19 SYMATTR Value 10k SYMBOL diode -16 656 M0 SYMATTR InstName D2 SYMATTR Value 1N914 SYMBOL diode 224 656 M0 SYMATTR InstName D12 SYMATTR Value 1N914 SYMBOL diode 368 656 R0 SYMATTR InstName D13 SYMATTR Value 1N914 SYMBOL diode 816 656 M0 SYMATTR InstName D14 SYMATTR Value 1N914 SYMBOL res -48 736 R0 SYMATTR InstName R13 SYMATTR Value 68k SYMBOL res 192 736 R0 SYMATTR InstName R14 SYMATTR Value 68k SYMBOL res 400 736 M0 SYMATTR InstName R15 SYMATTR Value 68k SYMBOL res 784 736 R0 SYMATTR InstName R16 SYMATTR Value 68k SYMBOL voltage -2480 1088 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V3 SYMATTR Value 15 SYMBOL voltage -2480 1232 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V4 SYMATTR Value 15 SYMBOL OpAmps\\LT1679 -144 160 R0 SYMATTR InstName U5 SYMBOL OpAmps\\LT1679 288 160 R0 SYMATTR InstName U6 SYMBOL OpAmps\\LT1679 688 160 R0 SYMATTR InstName U8 SYMBOL res -112 272 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R8 SYMATTR Value 10k SYMBOL res -320 272 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R9 SYMATTR Value 560 SYMBOL cap -480 272 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C8 SYMATTR Value 1000n SYMBOL res -272 1088 R270 WINDOW 0 32 56 VTop 2 WINDOW 3 0 56 VBottom 2 SYMATTR InstName R6 SYMATTR Value 100k SYMBOL cap -304 1056 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C4 SYMATTR Value 10000n SYMBOL OpAmps\\LT1679 384 528 R90 WINDOW 3 37 22 VRight 2 SYMATTR InstName U1 SYMBOL pnp -2032 736 M180 WINDOW 3 84 0 Left 2 SYMATTR Value 2N3906 SYMATTR InstName Q4 SYMBOL res -1984 208 R0 SYMATTR InstName R12 SYMATTR Value 82k SYMBOL res -1760 384 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R25 SYMATTR Value 2.7Meg SYMBOL cap -2176 544 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C7 SYMATTR Value 10p SYMBOL npn -2096 1152 M0 SYMATTR InstName Q1A SYMATTR Value NSS40301MDR2G SYMBOL npn -1728 1152 R0 SYMATTR InstName Q1B SYMATTR Value NSS40301MDR2G SYMBOL npn -1424 1232 R0 SYMATTR InstName Q2B SYMATTR Value NSS40301MDR2G SYMBOL npn -1968 1712 R0 SYMATTR InstName Q2A SYMATTR Value NSS40301MDR2G SYMBOL res -1552 1632 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R28 SYMATTR Value 100k SYMBOL res -1376 560 R0 SYMATTR InstName R29 SYMATTR Value 100k SYMBOL res -2448 528 R0 SYMATTR InstName R32 SYMATTR Value 10k SYMBOL res -2448 848 R0 SYMATTR InstName R33 SYMATTR Value 15k SYMBOL cap -944 256 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C12 SYMATTR Value 1000n SYMBOL res -656 144 R90 WINDOW 0 0 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R7 SYMATTR Value 14k SYMBOL cap -688 32 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C5 SYMATTR Value 10p SYMBOL cap -1600 384 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C6 SYMATTR Value 100n SYMBOL res -1648 1456 R180 WINDOW 0 31 76 Left 2 WINDOW 3 31 40 Left 2 SYMATTR InstName R17 SYMATTR Value 220k SYMBOL OpAmps\\LT1679 -704 288 R0 SYMATTR InstName U2 SYMBOL OpAmps\\LT1679 -272 1200 M0 SYMATTR InstName U3 SYMBOL OpAmps\\LT1679 -2224 688 R0 SYMATTR InstName U4 SYMBOL cap -2560 864 R0 SYMATTR InstName C9 SYMATTR Value 10n SYMBOL res -2224 1440 R180 WINDOW 0 31 76 Left 2 WINDOW 3 31 40 Left 2 SYMATTR InstName R20 SYMATTR Value 360k SYMBOL npn -1424 880 R0 SYMATTR InstName Q3 SYMATTR Value 2N3904 SYMBOL diode 272 1200 R270 WINDOW 0 32 32 VTop 2 WINDOW 3 0 32 VBottom 2 SYMATTR InstName D3 SYMATTR Value 1N914 SYMBOL diode 368 1200 R270 WINDOW 0 32 32 VTop 2 WINDOW 3 0 32 VBottom 2 SYMATTR InstName D4 SYMATTR Value 1N914 SYMBOL diode 480 1200 R270 WINDOW 0 32 32 VTop 2 WINDOW 3 0 32 VBottom 2 SYMATTR InstName D5 SYMATTR Value 1N914 SYMBOL diode 576 1200 R270 WINDOW 0 32 32 VTop 2 WINDOW 3 0 32 VBottom 2 SYMATTR InstName D6 SYMATTR Value 1N914 SYMBOL diode 688 1200 R270 WINDOW 0 32 32 VTop 2 WINDOW 3 0 32 VBottom 2 SYMATTR InstName D7 SYMATTR Value 1N914 TEXT -2792 1560 Left 2 !.tran 0 10 0 1u startup TEXT -2792 1504 Left 2 !.options plotwinsize=0 numdgt=15 TEXT -2248 -112 Left 2 ;Low distortion 1KHz oscillator. Edward Rawde 30 March 2025.\nBased on designs by JM and BS. Re-worked by JM, getting rid of half the transistors,\nand again by Bill Sloman, making Q1A/B and Q2A/B close matched transistor pairs\nand adding the cascode transistor at Q3, 12th April 2025.. TEXT -2896 16 Left 2 !.MODEL NSS40301MDR2G NPN\n+is=6.87023e-12 bf=445.496 nf=1.08926 vaf=60.529\n+ikf=7.23313 ise=2.38192e-09 ne=4 br=23.6872\n+nr=1.10701 var=8.89608 ikr=1.25064 isc=1e-16 \n+nc=1.13174 rb=905.334,irb=2.30349e-07 rbm=1e-10\n+re=0.00600548 rc=0.0300274 xtb=1.2219 xti=4,\n+eg=1.05 cje=3.80477e-10 vje=0.912237 mje=0.397194,\n+tf=5.90916e-10,xtf=0.0998483,vtf=7.09172,itf=0.010481,\n+cjc=8.35472e-11 vjc=0.702862 mjc=0.43477 xcjc=0.899998\n+fc=0.414631 cjs=0 vjs=0.75 mjs=0.5 \n+tr=5.64658e-08 ptf=0,kf=0 af=1
The circuit works by adding a portion of the sine wave output from U6 inside the ring oscillator to bigger DC current, and delivering as current from Q4 into an asymmetric current mirror formed by the dual transistor Q2A and Q2B.
Q2A and Q1A turned it into a voltage at V(n022) - once the circuit has settled this sits around 904mV about ground with a 727uV 1kz ripple, driven by the 1.83uA 1kHz current ripple going through Q2A
The actual voltage is set by the stable (but adjustable) base-emitter voltage of Q2A. The stable base-emitter voltage of Q1B applies a slightly smaller voltage (but with much the same variation) to the base of Q1B, whose output then has the 1.63uA 1kHz current ripple needed to keep the ring-oscillator running at a stable amplitude.
Q3 is a cascode to minimise Early effect distortion of the current coming out of Q1B.
The output of U3 adjusts base emitter voltage drop of Q2A by changing the current through it via R28.
During startup Q1B delivers more current to build up the oscillation.
The circuit take about 5 seconds to stabilise, and the output sine wave has a little harmonic content - the worst offender is a 4hKz spur about
140dB below the fundamental. Or at least this is what LTSpice 17.0.36 tells me.
At this distortion level LTSpice isn't all that credible.
The only other significant change to the circuit is the string of six diode (D1, D3, D4, D5, D6, and D7) which are intended to balance out the temperature dependent forward voltage drops across the rectifier diodes D2, D12, D13 and D14, which sit in series with a couple of volts of signal, rather less than the 15V from the negative rail.