• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Improving nonlinear distortion of a full DSP loudspeaker system by adding passive speaker-level filter networks

bmc0

Member
Joined
Dec 23, 2020
Messages
67
Likes
129
I've been tinkering with my DIY speakers a bit to see if I can improve certain aspects of their performance (see this thread for more info on them). Previously, the drivers were connected directly to the amplifier outputs with all filtering done digitally, but recently I decided to experiment with adding passive filters after the amplifier. Some people here seem to believe that doing this can only be detrimental to system performance. However, as explained in this Purifi application note, passive components can significantly reduce drive unit distortion if used judiciously. An additional benefit in my setup is a reduction in hiss from the compression driver (~8dB perceived reduction) without needing to build/buy exceptionally low noise amps.

The primary goals I had in mind when designing the passive filter networks were:
  1. Low driving impedance at low frequencies and high driving impedance at high frequencies.
  2. Flat-ish frequency response from both the woofer and tweeter over their intended passbands before applying digital filters.
  3. Similar overall sensitivity for both sections.
#2 and #3 together maximize the signal to noise ratio. #1 reduces the effect of flux and inductance modulation without reducing the electrical damping too much near each driver's LF resonance. Here's a schematic:
schematic.png
Driving (a.k.a. lookback) impedance seen by each driver (solid is magnitude, dashed is phase):
lookback_z.png
Frequency responses (both passive and digital filters):
filter_response.png
The woofer has a rising response characteristic, which is convenient in this case—lots of output in the upper midrange that I can throw away. Final sensitivity is around 96dB/2.83V, save for the bottom end of the woofer's range.

I measured the distortion with the drivers connected directly to the amp outputs, then again with the passive filters (and modified digital filters, of course). The frequency responses are within ±0.2dB except for a narrow band difference of 0.5dB around 1.9kHz. Multiple sweeps were used to suppress noise. Repeatability was very good above ~40Hz.

Direct, 86dB@1m:
direct_86dB.png
With passive filters:
passive_filters_86dB.png

Direct, 96dB@1m:
direct_96dB.png
With passive filters:
passive_filters_96dB.png

Direct, 103dB@1m:
direct_103dB.png
With passive filters:
passive_filters_103dB.png
 
Last edited:
Industry insiders know this for many years, both from a noise and a distortion POV, installing passive series cells to additionally block out-of-band signals and raising source impedance. In the simplest case it is only one air-core inductor for the (mid-)woofer and a capacitor and resistor for the tweeter so it can be quite cost-effective.
Adding more parts to get a flatter passband (and/or better phase tracking around XO point, etc) then helps even more to maximise performance with everything operating closer to the sweet spots.
 
The Purifi app note doesn’t compare the analog filters to digital ones as far as I can see. Why couldn’t those notches be done in the digital domain?
 
The Purifi app note doesn’t compare the analog filters to digital ones as far as I can see. Why couldn’t those notches be done in the digital domain?
Because what you're reducing the impact of is the nonlinearity of the current flowing through the voice coil. A digital notch does not bring the same benefits, as it only affects the linear behaviour of the system. It would (probably) be possible to use nonlinear compensation to achieve a similar result, but that requires far more resources and know-how than a simple RLC circuit. No need to make it complicated when it can be simple.

While the purifi application note doesn't compare the passive notch filters to digital ones, the theory presented is sound, and you can find examples where passive and digital notches have been compared on DIYaudio or other forums. I've done this myself on some 4'' drivers, and the result was as predicted. It's also one of those things that is very easy to verify yourself, as you only really need a driver, a few passive components, and a couple of minutes of work.
 
Industry insiders know this for many years, both from a noise and a distortion POV, installing passive series cells to additionally block out-of-band signals and raising source impedance. In the simplest case it is only one air-core inductor for the (mid-)woofer and a capacitor and resistor for the tweeter so it can be quite cost-effective.
Raising source impedance for a tweeter might be done with a resistor, but at the disadvantage of behavior around the resonance frequency (even worse so with a protection capacitor). So the inductance parallel to the tweeter coil is a clever idea for hiss attenuation I did not see before (and is not covered in the Purifi paper).
 
Very interesting topic, but I think I'm missing something, because it still doesn't make sense to me. The Purifi app note shows what is well known, which is that in passive crossovers parallel notches interact with the variable L of the driver more than series notches do (see https://sound-au.com/parallel-series.htm). The result is shown in the overall measured response, which is up to 6dB higher in the range of interest around 5KHz than for the series filter. This only matters because it messes with the output of the preceding 2nd order LPF part of the passive crossover though. All the words about source impedances seem to be another way of saying the same thing.

With an active filter of any kind (i.e. before the presumably decently engineered power amp), the source impedance seen by the driver is ~0 at all frequencies, and non-reactive. So the driver FR can be made to be exactly as wanted, and the same distortion lowering will result. At least I can't find anything to contradict that, but I am no EE so may well be wrong.

Oh and happy holidays!
 
Last edited:
I think I'm missing something, because it still doesn't make sense to me.
A pertinent detail to remember is that the force generated depends on the current through the voice coil, not the voltage. Certain nonlinearities in speaker drivers—particularly the ones that tend to dominate in a driver's mid band—can be thought of as a voltage source in series with the voice coil which produces a distorted version of the input signal. If the source impedance is zero, the current from the series voltage source is maximized. If the source impedance is infinite, the current is zero.
 
  • Like
Reactions: MAB
The result is shown in the overall measured response, which is up to 6dB higher in the range of interest around 5KHz than for the series filter. This only matters because it messes with the output of the preceding 2nd order LPF part of the passive crossover though.
You have to look separately at the linear (FR) and the nonlinear (distortion) aspect of what is going on.
Your statement is only correct for the linear effect.
For the (harmonic) distortion it is a bit more complicated and therefore different.
the source impedance seen by the driver is ~0 at all frequencies, and non-reactive. So the driver FR can be made to be exactly as wanted, and the same distortion lowering will result.
The bold part is not what happens.
The distortion is lowered because
A. the signal level is lowered outside the passband. This is the same for all filters (active/passive) with the same FR
B. the distortion current for nonlinear (harmonic) distortion is different. The cases active/parallel notch/series notch behave differently.
The sound distortion results from the change in inductance that then gives rise to a distortion electromotoric force (emf - voltage), in turn pushing a distortion current through the driver and this in the end creates the distorted sound.
The distortion emf is correlated with the movement of the driver and will be the same in all cases (with the same FR).
But the current depends on the impedance in the circuit. Connected directly to the amp the circuit impedance is identical to the driver impedance. But with a network in between, the circuit impedance will be higher (as seen from the speaker, where the distortion emf originates). In particular the series notch filter (in the right place) creates a high impedance and therefore the resulting distortion current will be lower and so will the distorted sound.
As the impedance is significantly higher (than parallel filter) in the range ≈3-7kHz this translates to H2 being lower in ≈1.5-3kHz range and H3 being lower in ≈1-2kHz.
This effect is due to the high impedance in the circuit seen from the speaker. Higher is better in this case (inductance nonlinearity in mids).
 
Last edited:
Thank you both, I think I’ve got it! The self generated voltage is damped by the impedance of the filter. As this error is outside the feedback loop of the amp it can’t be corrected by pre-filtering the signal. Is that about it?
 
Is that about it?
Sort of. I'm not sure that damping is the correct term. A higher source impedance reduces the current from the error voltage. Consider the following simplified model:
driver_model.png

Zout is the source/driving impedance. The error voltage is produced within the driver as a result of nonlinearities in its motor (ignore the fact that it says "noise" :)). If Zout is zero, the current from the error voltage is maximized. If Zout is increased, the current is decreased.

Say you have an ideal 1.5kHz low pass filter and a perfect 1kHz sine wave stimulus. The error voltage contains odd harmonics of the 1kHz input: 3kHz, 5kHz, 7kHz, etc.. Since the original input signal contains only 1kHz, a digital (or analog) filter placed before the amp cannot influence the acoustic output. In contrast, a filter placed between the amp and speaker can influence the acoustic output by modifying Zout at the harmonic frequencies.

There are ways to increase Zout without post-amp passive filters, such as using transconductance (current source) or mixed-mode feedback amplifiers. Adding a few passive parts is generally simpler though.
 
  • Like
Reactions: MAB
...
If Zout is zero, the current from the error voltage is maximized. If Zout is increased, the current is decreased.
...
Hi, I'll extend a bit and explicitly mention that only current, and any current, through voice coil turns into acoustic sound.
 
  • Like
Reactions: MAB
Raising source impedance for a tweeter might be done with a resistor, but at the disadvantage of behavior around the resonance frequency (even worse so with a protection capacitor). So the inductance parallel to the tweeter coil is a clever idea for hiss attenuation I did not see before (and is not covered in the Purifi paper).
Apparently this filter has a name: "sine-cap" filter. I first saw it mentioned here, likely very old trick. https://www.diyaudio.com/community/...f-hybrid-crossover.389129/page-2#post-7093526

edit. This is some 14 years earlier thread, where someone mentions it's been used at least 30 years :D

Hardly anything is new in audio but it's great myths get busted around active / passive debate, as well as awareness that it's usually commercial products that use either but in diy land we can easily use both active and passive for relatively independent filtering and impedance manipulation. Also some simple thinking and calculations from the very same phenomenon helps to figure out what is system Q and how to manipulate that, what kind of passive filters work with any system, and all kinds of myths around speaker cabling and amplifier damping factor and all, to our advantage. Knowledge is power.
 
Last edited:
Yeah, that configuration for a "first-order" filter is really old. A few of the popular speakers in the 1960-70's employed a configuration like that. ('Probably more before that I'm unaware of.)
However, in this particular context, he's referring to LP filtering above the audio range. So, a somewhat different application.....with the same topology.

The great thing about audio breakthroughs is......somebody else has already done it before. :)

Dave.
 
Yeah it's bit of a different context, not sure if it was originally done to avoid capacitor or just enable first order filter in firat place, perhaps potential distortion reduction wasn't very important among benefits. Not sure how good distortion reduction this is for weeters anyway as motor distortions seem low anyway due to small displacement, but when there needs to be a resistor to attenuate this is one way to do tgings in active system, a logical solution when one wants low source impedance for main resonance to maintain electrical damping and higher above that to reduce distortion. Woofers would get a low pass filter anyway so series inductor does it, but tweeter we don't want to low pass so parallel inductor with series resistor does it.
 
Last edited:
Apparently this filter has a name: "sine-cap" filter.
Or just an R-L high pass filter. I don't recall having seen it used in a speaker previously, but I'm certainly not surprised that I'm not the first to think of it :). It just seemed to me to be the simplest and best way to achieve goal #1 in this application, especially since most of the disadvantages of the topology don't apply.
 
The original Sonus Faber Extrema had a sine-cap HP filter back in the 90's


 
I looked at the measurement graphs and I see passive filters bringing reduced distortion at 20-30 Hz, but raising it through mid and high frequencies.

This looks a lot like the current drive experiments that haven't really caught on, mainly because modern drivers won't benefit much from them.
 
Hi, yeah it's exactly same phenomenon here working out by increasing series impedance, as what current drive is essentially all about. See this article to get to the base of it all: https://www.edn.com/loudspeaker-operation-the-superiority-of-current-drive-over-voltage-drive/ just ignore the provocative title and wording within the article, it's really about the impedance and distortion mechanism within the driver, almost nothing to do with what the amplifier is as the amplifier can be abstracted away with basic circuit analysis equivalents.

As you say it's not always useful, while sometimes it is, so it's not black and white situation. Some drivers won't likely benefit much, big systems less than small ones, and so on. For examle, if you have a small two way speaker where the woofer has huge excursion while playing all the way through midrange, it likely is worth it to consider. The excursion would make the whole mid range distort, and if you can drop that distortion for example 6db with 10$ inductor and adjustment in DSP it might be audible enough in normal use to be worth it. If you have high sensitivity three way system for example, it's likely not that audible even if the distortion plots show improvement. As you say some motors are good enough, like Purifi, while some are quite poor and likely benefit more. Main power with this subject is that it's a design freedom and a useful tool one can use when necessary / benefitical, and leave out when it's not.

It's also important to realize that difference with active and passive speaker is the impedance in series with the driver, and to some extent how the amplifier works assuming it would be the same amp in case of both passive and active system. Now, if someone claims passive speaker sounds better than active one, and both had exactly same transfer function, the only difference is the impedance. Logically this means that active system to optimize transfer function and passive parts to optimize impedance would make up the difference, best of both. Not always economically justified, but a good nice option for DIY people.
 
Last edited:
I looked at the measurement graphs and I see passive filters bringing reduced distortion at 20-30 Hz, but raising it through mid and high frequencies.
You and I clearly have different interpretations of the data. Noise dominates at very low frequencies, so that's mostly what you're looking at below ~40Hz at 96dB and 103dB, or ~70Hz at 86dB. The 2nd harmonic is not strongly affected, but is generally slightly lower with the filters except around 2kHz. The 3rd and 5th harmonics are significantly lower at most frequencies above 350Hz at 86dB and 96dB, with the exception of around 1kHz at 96dB (due to a mechanical nonlinearity in the compression driver, I believe). The woofer's 3rd harmonic drops nearly 10dB in the top octave of its passband (500Hz-1kHz), while the tweeter's 3rd harmonic drops ~5dB above 2kHz. There seems to be less difference at 103dB compared to the lower levels. At the moment I'm not entirely sure why this is.

A small note regarding perceived sound quality:
First, this is just based on sighted listening so I fully accept that what I heard could be entirely the result of bias. I didn't expect much audible difference besides a reduction in hiss (which was mostly inaudible anyway) as the measured harmonic distortion (>H2, anyway) was already pretty low. However, the more I listen the more I'm (cautiously) convinced that the sound quality is improved. In particular, I've long noticed a low-level "grit" in the sound which was particularly noticeable with certain instruments—piano perhaps being the worst offender, especially if the recording had a generally dark/warm tonal balance. This impression persisted across multiple systems that I built, all having only digital filters. With the added passive networks, this "grit" seems to be absent or at least notably reduced. So what's going on? My guess is that the dominant factor in this case is a reduction in hysteresis-related distortion. Or I'm fooling myself. Could be either.
 
Yeah hysteresis / barkhausen noise stuff is the gritty sounding variety, unrelated to the music and can do crackling kinda sound as multiple magnetic domains rotate cascading, or something like that. Purifi has a blog post on that too, and some audio samples here for example https://www.diyaudio.com/community/threads/experiments-with-the-current-drive.417774/post-7799645 and you can do yoir own using (ex. diyaudio member miket's) matlab library called fsaf, or use REW which has recently baked FSAF in I think.
 
Back
Top Bottom