I created and built the following circuit:

enter image description here

When the SWITCH is closed, the audio amplifier works as expected, with no noticeable crossover distortion.

When the SWITCH is open, the amplifier still works as expected, with the exception that the output includes a considerable amount of what seems to be crossover distortion.

The distortion is slightly noticeable at full volume (full audio input voltage), very noticeable at medium volume, and renders the amplifier useless at quarter of the volume (sounds like low bit-depth audio).

In all cases, the amplifier is always playing a very very tiny noisy hum which I assume is partially EMI, partially coming from the SMPS that powers it.

What is causing this crossover distortion?

  • 4
    \$\begingroup\$ which opamp ? I doubt that a passive filter would cause crossover distortion. I suspect what you are hearing is something else. A scope shot would be worth more than a 1000 words here. \$\endgroup\$
    – tobalt
    Oct 26, 2021 at 6:52
  • \$\begingroup\$ Do you have bypass caps? Which op-amp is that? Do you see the difference that when the switch closed it means there is a direct DC coupling ath between amps and switch open there is only an AC coupling path so the amplifier and the resistors can bias the input DC level? \$\endgroup\$
    – Justme
    Oct 26, 2021 at 7:32
  • \$\begingroup\$ Can you show PCB layout or picture of prototype? \$\endgroup\$
    – bobflux
    Oct 26, 2021 at 8:42
  • 1
    \$\begingroup\$ Why would crossover distortion be unexpected from a Class B output stage? \$\endgroup\$
    – Finbarr
    Oct 26, 2021 at 10:10
  • 1
    \$\begingroup\$ that's a full B-class stage which lives on crossover distortion even if it's in a feedback loop. I doubt that the passive in the middle are causing it (a band pass filter from the look of it). Also have fun when it heats up :D \$\endgroup\$ Oct 26, 2021 at 11:01

4 Answers 4


There's a surprising variety of behaviors present in the simple circuit you've demonstrated - even just in the final stage that has the 2nd op-amp (call it U2) and the boost transistors.

First, let's be clear: the 2nd stage always has crossover distortion in this circuit. There may be less or more of it, but without active mitigation it simply is always there by design. And it's rather sensitive to component choice, so it's another sign the design is not so great. Robust designs allow larger variation in the component parameters. Sure, an amplifier that works well with a 70MHz GBW op-amp will perform not so great if you use a 1MHz part, but still it would be nice if it operated up to the full potential of that part, and that's not the case here.

I have built your circuit exactly, using 741 for both op-amps for simplicity, and with transistors with very similar specs to the ones you used. It behaves as you describe no matter if the filter is present or not.

Problem 1: DC Offset Exacerbated by the Filter Impedance

By adding the filter into the circuit, the source impedance driving the positive input of U2 is increased. That's likely the primary influence on the "weird" behavior you observed.

The input bias current flowing through this impedance is converted to an offset voltage by the impedance of the filter network. A DC offset makes the zero crossings asymmetric in this circuit, and exacerbates the crossover distortion - see p.3 below for explanation.

These effects depend on the choice of an op-amp. A 741 has bad enough offset all by itself, so the additional offset introduced by the impedance of the filter doesn't seem to matter much. You're not using a 741 I bet :)

Problem 2: Positive Feedback Introduced by the Filter Impedance

Additionally, the increased non-inverting input impedance adds positive, destabilizing feedback. All op-amps have some parasitic, destabilizing capacitance between the two inputs. When the non-inverting input is driven by a low impedance source (with the switch closed to bypass the filter), this tiny capacitance is shunted and essentially removed from circuit. But when the impedance is not low (with the switch open), this capacitance is back in action. The magnitude of the effect it has depends on the particular part, so it's likely not responsible for everything by itself, but it doesn't help.

Problem 3: Loss Of Feedback Around 0V

But your circuit has a much deeper lurking problem: partially open-loop operation due to loss of feedback!

As the U2's output crosses 0V, the feedback impedance becomes very large, as both transistors are in cut-off, yet they are within and in series with the feedback loop. The speaker load further shunts this high impedance, decoupling the feedback path from the op-amp output.

U2 is running essentially open loop at this point.

Then, U2's input offset voltage, usually on the order of mV or fractions thereof, amplified by the open gain of the op-amp pushes the output towards either rail, hard. The direction depends on what's the offset polarity. As the output departs 0V, one of the two transistors begins to conduct again, the closed loop gain drops from \$A_{OL}\$ towards 10, and U2 is once more driving the output towards 0V - since the input is changing much slower than U2 can slew its output. And the feedback impedance once again gets fairly high, and the cycle repeats.

U2 now oscillates between closed and open loop state, until the input will cross onto the other side of the offset voltage, so that even with increased gain the output will be driven in the correct direction - towards larger absolute voltage, thus increasing the conductance of the output stage and closing the feedback loop, instead of potentially being driven back towards 0.

Now, if the op-amp was capacitively loaded, the effective output impedance would be inversely proportional to the frequency of the pole the capacitance introduced to the response. As the output impedance grew, the pole moved towards low frequencies and made the op-amp unstable, with no easy way of fixing it - since the cross-over frequency can be arbitrarily low.

But here, we have an inductive load. It is a bit more docile, since it introduces a zero into the loop response, and that nominally improves the phase margin. But there's no free lunch - this zero also shifts a lot.

Problem 4: Crossover Distortion Exacerbated by Open Loop DC Offset Magnification

The high gain operation introduced by the transistors turning off is shifting the DC operating point as the output crosses through 0V, and this effect is asymmetric. Transition through 0V in one direction (e.g. rising) is sped up, and the transition in the opposite transition (e.g. falling) is slowed down or even oscillatory.

Problem 5: Loss of Phase Margin Around 0V

We can predict that when the op-amp is fast enough, there won't be a stable DC state around 0V even if the input is DC. That's because the parasitic capacitances present elsewhere in the circuit create a pole in the open loop response. This pole is usually at such a high frequency that the closed loop gain is < 1 at that point. Yet, as the resistive feedback disappears, the crossover frequency (@0dB gain) moves to the right of the Bode plot (higher frequency), and this pole now introduces enough phase shift that the amplifier is not stable anymore. When the amplifier is slower and/or has less open loop gain, the naturally lower crossover frequency will be low enough compared to the pole frequency, and thus the pole will become inconsequential.

So, a slower op-amp like a 741 may well behave more amicably in this circuit, whereas a low distortion audio op-amp is "saddled" with both much higher open loop gain and a much higher gain-bandwidth product. Then, the pole unmasked by the high feedback impedance will be well within the frequency range where the gain is > 1, and thus the stage becomes unstable.

Problem 6: The Motion of the Speaker Cone Couples Strongly Into The Feedback Path Around Crossover

To make matters more interesting, the speaker has mechanical inertia but also mechanical stiffness, and thus a mechanical resonant frequency. The electrical analogue of the speaker's mechanical behavior is largely an RLC parallel tank with mechanical resonant frequency. Its inductance L is much larger than the coil inductance, and the latter can be initially disregarded. There's also a parallel resistance that models mechanical damping; it affects the Q of the tank, and thus the ratio of the zero-to-pole frequencies.

Since the coil is moving, it induces a back-EMF into the transistor output node, proportional to cone velocity. The driving force on the coil is proportional to coil current. These are the two bridges between the electrical and mechanical domains.

An RLC parallel tank approximates an inductive load at low frequencies, and a capacitive load at high frequencies. It thus adds a pole into the closed loop response above the mechanical resonance.

As the U2 output voltage approaches crossover, the transistors increase the effective output impedance of the op-amp. This exacerbates the effect of the capacitive zero.

The speaker's electromechanical response thus adds a yet another zero that destabilizes the op-amp around crossover.

The real fix to the problem would be to keep the output transistors in conduction at all times, by ensuring that a bias current always flows through them. Other answers will likely cover this.

I'll now focus on fixes that work around the loss-of-feedback problem caused by the output stage going open-circuit (-ish).

  1. For AC, add a capacitor between U2's output and its inverting input. In fact, you'll want such a capacitor anyway just to stabilize U2. It's not a good idea to run most practical op-amp circuits without it. For stabilization, a small value like 1-20pF will do.

  2. At DC, you can have a bypass resistor between U2's output and the output node shared by the two transistors. Since the output node is heavily loaded by the speaker, the feedback amplitude is further decreased by approximately the ratio of speaker impedance to the bypass resistor, as the two form a voltage divider. This ensures reasonably controlled gain even at DC. The resistor needs to be large enough not to load the op-amp output too much.

    We could use a value similar to the load impedance reflected toward U2 through the transistors when they are conducting. The impedance is multiplied by the current gain of the transistors, and only one transistor is conducting at any given time. I don't know what gain grade of the transistors you're using (there are several grades to choose from), so let's conservatively assume \$h_{fe}=100\$. The load impedance seen by U2 is thus \$ R_L \cdot h_{fe} = 4\Omega \cdot 100 = 400\Omega \$. We could thus add a 1-2kΩ resistor between the output of U2 and the speaker output node.

    When the transistors are not conducting, with 1kΩ bypass resistor, the feedback factor \$ \beta \approx 4/1000 \cdot 10\text{k}/100\text{k} \approx 0.0004 \$. Thus, the closed loop gain at DC becomes \$ A_V\approx 1/\beta \approx 2500 \$. That's still at least an order of magnitude lower than the open loop DC gain of any IC op-amp you may use.

  3. Even with the fix #2, we're still paying a partial price for the vastly increased output offset when the output stage is not conducting. This will make the crossover distortion bad: not as bad as it was when the loop was truly open, but still worse that it needs to be. To minimize the crossover distortion, U2's DC offset should be trimmed out using any of the applicable trim techniques for a non-inverting op-amp without nulling inputs. The choice of 741 let me "cheat" here, since it has dedicated offset null pins. But it's a slow op-amp and it cannot really cross the zero quickly enough to eliminate the distortion when the boost transistors are in cut-off.

    The need for offset nulling applies even if we had AC-coupled the speaker. That's because the op-amp operates at two gains: ~10 and ~2'500, and the transition between the two causes a change in stable operating point. Nulling out this change gets rid of that problem.

  • \$\begingroup\$ while it probably addresses the question at hand, it is also a good read for anyone getting into audio amps, showing the real detailed problems that are usually in the second row of attention, along with solutions. wonderful content \$\endgroup\$
    – tobalt
    Oct 27, 2021 at 3:32

The "very very tiny noisy hum" might be due to the DC coupling of the speaker.

Try adding a 100 µF electrolytic capacitor between your push-pull output and the speaker. Connect the - sign of the capacitor to the speaker.

Even though your push-pull output has a negative feedback network that reduces distorsion, at high input signals the BJT's show their non linearity.

  • \$\begingroup\$ The electrolytic suggestion is careless: The output could be very well more negative than the speaker due to various offsets. Moreover, 100µF would result in a corner frequency at about 400 Hz - way too high for most speaker drive purposes. \$\endgroup\$
    – tobalt
    Oct 27, 2021 at 7:05

The high impedance of the twin-T filter allows messy wiring of the filter parts and output amplifier's input to pickup the high audio frequencies of the crossover distortion from the output by capacitive-coupling.

When the switch bypasses the filter then the extremely low output impedance of the first opamp blocks the crossover signal that is picked up.

The hum might also be picked up by messy or unshielded wiring.


This is the "The real fix" to the problem as alluded to by Kuba hasn't forgotten Monica, which is to keep the output transistors in conduction at all times, by ensuring that a bias current always flows through them.

You need a couple of diodes in series between the base of the two output transistors to eliminate or reduce the crossover distortion. Something like this:

enter image description here

Picture from https://www.electronics-tutorials.ws/amplifier/amp_6.html.

This causes both transistors to conduct a bit around the crossover region, which increases power draw a tad but reduces or eliminates the crossover distortion, depending on the forward drops of the diodes vs Vbe of the two transistors.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.