The loads on the opamps is also pretty heavy - around 1K.
i dont get how you and BrianHG come up with 1K load, i only can see at least 10K termination/feedback to ground on each opamp output, on the 1st stage, the voltage swing is only 0.4V, hardly near the opamp limit of 13mA sink current. even with 1K load. 0.4V swing will be 0.4mA of current.
Also the LM324 can definitely not drive 220 ohms well and the output stage has this followed by an unknown value capacitor. If that capacitor is too big, it could easily cause a problem with the final LM324.
i put cap in sch only just in case i need to put filter cap there, but in reality i havent installed any capacitor there. 220ohm i put there to isolate voltage bias up front (see vd.png). changing the bias will not improve or worsen the distortion, at best the load of bias divider is 6K, the worst is 1K.
Definitely more then crossover distortion. Are we seeing the correct DC voltages, or have you offset the waveforms to fit on the screen?
i've offset some/all channels to fit the screen to get maximum Vpp reading and better clarity of the distortion. you can see the channel marker on the left, some of them are offset 3 graticules below.
Something more is at play here. That positive spike of U8B so perfectly matches that negative spike on U8C in location with an offset
i guess thats because 3-opamp diff-amp nature of floating/connected/linked -ve input between U8B and U8C? ie R152 (1.8Kohm) there?
Can you show us what U8A is driving in your schematic.
here we go, see a1.png. U8A is driving a voltage divider bias (vd.png) and an NE5532 +ve input that acts as buffer (vb.png), so its pretty light imho. the U8D however is driving a voltage gain bjts v_amp_+ve.SchDoc (picture in a3.png), from my basic calculation, the worst case, the 50V voltage gain stage may cause the U8D to sink 5mA (when Q2b saturated), Q1b and C3b are indeed ommited in the pcb as stated.
Also, where is your scope GND tied?
When probing U8B + and -, GND your scope to in-between the decoupling caps & nowhere else...
my probe gnd was tied to the edge of the board where i can grab the gnd plane. done with your setup, i soldered a wire to near the decoupler gnd, distortion is still there. the Vcc rail is a bit noisier i believe due to longer gnd clip + wire.
yellow channel 1: Vcc (+15V) ripple AC coupled to scope
cyan channel 2: signal at Vri-, Vri+ is floated (NC) hence grounded through R162, R154
purple channel 3: probe at U8B +ve input
purple channel 4: probe at U8C +ve input
DS1Z_QuickPrint1.png
yellow channel 1: same as above (not shown)
cyan channel 2: same as above
purple channel 3: probe at U8B -ve input
purple channel 4: probe at U8C -ve input
DS1Z_QuickPrint1a.png
yellow channel 1: same as above
cyan channel 2: same as above
purple channel 3: probe at U8B output
purple channel 4: probe at U8C output
DS1Z_QuickPrint2.png
yellow channel 1: same as above
cyan channel 2: same as above
purple channel 3: probe at U8A output (Irdi-)
purple channel 4: probe at gain voltage output (Q3b's emitter) (not seen as its overlapped with CH3)
DS1Z_QuickPrint5.png
as i change the input signal upward to be more +ve, the distortion is gone since they are occuring at fixed voltage. so i dont think its loading problem. as can be seen in DS1Z_QuickPrint3.png, DS1Z_QuickPrint4.png (setup same as DS1Z_QuickPrint2.png) and DS1Z_QuickPrint6.png, DS1Z_QuickPrint7.png (setup same as DS1Z_QuickPrint5.png)