SynthMaker Circuits Manual Open SynthMaker (opens in a new tab)
Chapter 5 · Transistors and valves

Crossover distortion: why a push-pull stage needs bias

Crossover distortion is the gap a push-pull output leaves around zero: its NPN and PNP transistors each need about 0.6 V before they conduct, so the middle 1.2 V of the wave is lost, worst on quiet sounds. Two diodes biasing both slightly on close the gap.

PushPull · the parts list
circuit PushPull  setting input: 2 V, from 0.2 V to 6 V  setting output: 8 V  V1 vcc gnd 15V  V2 gnd vee 15V  Q1 vcc in out 2N3904  Q2 vee in out 2N3906  Rl out gnd 1k  # Two diodes of bias (class AB):  # R1 vcc b1 2.2k  # D1 b1 in 1N4148  # D2 in b2 1N4148  # R2 b2 vee 2.2k  # The op-amp loop:  # U1 in out d opamp 741end
Scope · out

Press Play to see the wave after the circuit, at out.

A short riff through the circuit, round and round. Turn the knobs while it plays. Open in SynthMaker ↗ (opens in a new tab)

What you're hearing

Two followers take turns: one pushes, one pulls. Each transistor is an emitter follower: its emitter follows its base, about 0.6 to 0.7 V away. When the input rises, the NPN conducts and pushes current from +15 V into the load. When it falls, the PNP conducts and pulls current from the load down to −15 V. That's push-pull. Each transistor handles only its own half of the wave, and at rest neither carries any current at all, so nothing is wasted while it's quiet. That's class B.

Between about −0.6 V and +0.6 V, neither transistor conducts. A transistor's base has the same knee as a silicon diode: almost nothing flows until about 0.6 V. So at 0.5 V in, only 1.9 mV comes out. At 0.6 V, 30 mV; at 1 V, 0.37 V; at 2 V, 1.33 V. The stage's gain is under a half from −0.62 V to +0.59 V in: a dead zone 1.2 V wide around zero. Past it, the output follows the input, about 0.7 V short: 6 V in comes out at 5.29 V. Every time the wave crosses zero, it falls into the gap, and the Scope shows a flat notch.

Quiet sounds lose the most, unlike clipping. The dead zone is always the same 1.2 V, so it takes a bigger share of a smaller wave. A 1 V sine spends 41% of each cycle inside ±0.6 V; a 6 V one only 6%. Clipping works the other way round: clean when quiet, worse when loud. Here's the distortion (all the harmonics up to 20 kHz, against the note) for each button, on a 1 kHz sine:

input peakno bias (class B)two diodes (class AB)op-amp loop around class B
0.5 Valmost nothing comes out0.005%0.44%
1 V45%0.015%0.24%
2 V21%0.04%0.13%
6 V6.9%0.08%0.05%

Both halves lose the same middle, so the harmonics are mostly odd: at 2 V in, the 3rd is 14.5 dB under the note and the 5th 22 dB under. The notches have sharp corners, so the harmonics reach high, and they sound harsh and buzzy rather than warm.

Two diodes of bias close the gap: class AB. The second button adds two diodes, with the input between them. Each is fed from its supply through 2.2 kΩ, so 6.5 mA flows through them and each holds 0.67 V. The NPN's base now sits 0.67 V above the input and the PNP's 0.67 V below, so both transistors are already just on at rest. About 0.9 mA of idle current flows from +15 V through both of them to −15 V. Around zero, both conduct a little at once, and one hands over smoothly to the other. The gain stays between 0.981 and 0.989 everywhere: no dead zone. At 1 V in the distortion falls from 45% to 0.015%, about 3,000 times less. What's left grows with level, as ordinary distortion does. More idle current would lower it further, but the transistors would run hotter. Many amplifiers use a Vbe multiplier instead of the diodes: one transistor and two resistors whose voltage is the transistor's own base-emitter voltage times 1 + R1/R2, usually with a trimmer to set the idle current. In real amplifiers the bias parts usually sit on the output transistors' heatsink, because a transistor's 0.6 V falls as it warms, and the bias has to follow.

An op-amp loop hides most of what's left. The third button keeps the unbiased stage but puts an op-amp in front: its plus input takes the input, its minus input watches the output, and its output drives both bases. Whenever the output falls behind, the op-amp swings its own output to make up the difference, jumping across the dead zone. With a 741, a slow, classic op-amp, 1 V at 1 kHz comes out with 0.24% distortion instead of 45%, about 190 times less. It can't jump instantly, though: at each zero crossing the output falls a few tens of millivolts behind for about ten microseconds, and that glitch is the 0.24%. It's worse on quiet sounds and at high frequencies, where the op-amp has less gain to spare: on a 1 V sine, 0.10% at 220 Hz and 0.58% at 5 kHz. The faster the op-amp, the smaller the glitch (see slew rate and bandwidth). Most audio amplifiers do both: they bias the output stage into class AB, and wrap negative feedback round it.

Why it matters for audio. Clipping only touches the loudest moments. Crossover distortion lives in the quietest ones: soft passages, reverb tails and the end of every note. A note through class B starts fairly clean, turns harsher as it decays, and then drops out entirely once its peaks fall under about 0.6 V. Nothing loud is there to cover it. That's why audio amplifiers bias their output stages: a little idle current keeps the decay clean.

What the model covers, and what it leaves out. The 2N3904 and 2N3906 are standard SPICE models, without capacitances or temperature, so the bias here never drifts as a real one does when the transistors warm up. The load is a 1 kΩ resistor, not a speaker, and the diodes are fed straight from the supplies, where a real amplifier drives them from a transistor stage. The 741 is modelled for speed only: its gain-bandwidth and slew rate.

Try this

  • Press "No bias (class B)" and turn input from 6 V down to 0.5 V. The sine gets buzzier as it gets quieter, and by 0.5 V almost nothing comes out: 1.9 mV. The notches on the Scope widen as the wave shrinks.
  • Set input to 1 V and switch between the first two buttons. Class B is harsh and 12 dB quieter; class AB is a clean sine at almost the full level.
  • Press "Two diodes of bias (class AB)". Open it in SynthMaker to change the parts: change R1 and R2 from 2.2 kΩ to 10 kΩ. The diodes then carry less current and hold less voltage, the idle current falls to about 0.06 mA, and at 1 V the distortion rises from 0.015% to 1.5%. Too little bias leaves some of the gap.
  • Press "Op-amp loop around class B" and change opamp 741 to opamp TL072. The faster op-amp leaves a smaller glitch: at 1 V, 1 kHz, 0.08% instead of 0.25%. Or give the loop the bias too: also take the # off R1, R2, D1 and D2, write their middle as d (D1 b1 d 1N4148, D2 d b2 1N4148) and put Q1's and Q2's bases on b1 and b2. Then the distortion falls under 0.001%, even at 6 V.

The parts list

PushPull · the parts list
circuit PushPull  setting input: 2 V, from 0.2 V to 6 V  setting output: 8 V  V1 vcc gnd 15V  V2 gnd vee 15V  Q1 vcc in out 2N3904  Q2 vee in out 2N3906  Rl out gnd 1k  # Two diodes of bias (class AB):  # R1 vcc b1 2.2k  # D1 b1 in 1N4148  # D2 in b2 1N4148  # R2 b2 vee 2.2k  # The op-amp loop:  # U1 in out d opamp 741end

This is class B. The class AB button takes the # off R1, D1, D2 and R2 and moves Q1's base to b1 and Q2's to b2. The loop button takes the # off U1 and moves both bases to d, the op-amp's output. setting output: 8 V makes 8 V at the output full volume, so the 6 V top of the input knob has room.

How we checked it

Checked against ngspice, a standard circuit simulator: all three versions, driven by a 1 kHz sine, are within about 0.01% of ngspice across the audible band. The op-amp loop's leftover glitch is the hardest part, and its distortion figures here are the ones measured in SynthMaker.

Build it step by step

  • The circuit format: Start a circuit, for writing transistors, diodes and supplies in a parts list.

Next and previous

  • Next: How a valve preamp works: a triode gain stage (planned)

Further reading