sensorless DSP cone excursion limiter

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
I recently developed some DSP code that can reduce bass boost to a woofer/subwoofer when the signal level exceeds some threshold. The impetus for this was to avoid digital clipping when significant amounts of boost (e.g. via a Linkwitz-Transform applied to a subwoofer) are used at low frequencies. Using some hand-waving, this was also shown to more or less also limit the cone excursion, but only as a side effect.

Recently I figured out a way to get a good estimate of the cone excursion for the driver from the input signal alone (there is no sensor of the actual cone position, velocity, etc.) using a model of the driver. This is valid for closed box systems only (vented box may also be possible but I haven't looked at it yet). Open baffle system can be treated as closed box system with infinite box volume for this purpose.

This estimate of peak cone excursion can be integrated into the lookahead limiter code I previously developed, so that it is the cone excursion that is being limited in a more direct fashion. As before, there is a latency penalty for the lookahead function and the audio signal to the rest of the system must be delayed to match. Longer latencies allow the changes to the system to be smoother in time, and this is an adjustable user parameter.

The application is meant especially for open baffle systems where low bass requires significant excursion and the driver can easily be over-driven. By reducing low frequency levels only when the excursion would exceed some level (e.g. Xmax) the driver can be protected from over-excursion or bottoming out on the back plate of the motor. It would also allow low-level bass to be increased, while at higher level the bass is automatically dialed back as needed in response to program material. This approach better matched the low frequency hearing sensitivity curves as well.

I will provide additional detail in a few days time and I hope to integrate this into an upcoming open baffle project that I have planned.
 
Very interesting. A compressor/limiter for a specific frequency band.

I was thinking of something along similar lines - something that mimics the crossover network to figure out the power going into each of the various elements in the speaker - woofer, midrange, tweeter - and limiting the drive to protect them against overload.

If you use your system to reduce the drive to the subwoofer, will that change the tonal balance of the overall sound? Are you considering a way to alert the user to the change, so he can take corrective action?
 
Very interesting. A compressor/limiter for a specific frequency band.
Sort of, but not exactly like that. You are describing a multi-band compressor, which is slightly different.

I was thinking of something along similar lines - something that mimics the crossover network to figure out the power going into each of the various elements in the speaker - woofer, midrange, tweeter - and limiting the drive to protect them against overload.
The input to my algorithm would typically be the output from the "crossover" filters. My limiter could be added on to an existing system, for example one that uses one of the popular miniDSP crossovers, as long as the other channels are delayed to match the latency that results from my algorithm.

If you use your system to reduce the drive to the subwoofer, will that change the tonal balance of the overall sound? Are you considering a way to alert the user to the change, so he can take corrective action?
If you run the algorithm on a small ARM platform computer (like a Raspberry Pi) you can connect an alert LED to show the user when the algorithm is kicking in. You could do this to show digital clipping, and not alter the signal in any way - use it only to advise the operator.

In the intended application (subwoofer, etc.) there really is no need to take any corrective action. The limiting should only happen sporadically and won't change the tonal balance of the music since it's really only the lowest bass that would be altered.

I would not use this on other bands like midrange or you WILL hear the effects. This is really for high-excursion drivers like subwoofers.
 
Hypex DLCP

@CharlieLaub: I found your post as the first hit after googling "DSP bass limiter excursion", for I am building an open baffle active crossover stereo sound system using the Hypex DLCP DSP and 6x Hypex UcD180 amplifiers (so tri-amp). I was just thinking about how to prevent over-excursion on the subwoofer when paradoxically one will want to boost the bass region due to the reduced low frequency response of the open baffle setup. I could imagine that a big 20Hz peak in the signal (music), some 20dB above nominal, could kill my woofer driver when I have the gain set based on the nominal music level. One solltion I thought of is to sacrifice the very low end, say 20Hz - 40Hz, by attenuating that by some dB's in the DSP and then only boost from 40Hz upwards, but better would be if indeed, as you also describe, the low end would be limited / compressed by only attenuating peaks above a certain threshold level, so one does not loose that whole frequency range. It seems logical that indeed you can only do this by looking ahead and filtering the signal depending on the signal content. I wonder if Hypex thought of something like that in their DLCP firmware. I havent studied it really yet. Just designed the casings (cutouts), general design, speaker driver choices, etc, now waiting for the cases for the DSP and the power amp to arrive in the mail :)
Thanks for your idea. I welcome any other info / suggestions / tips, since I am actually completely new in the hifi DIY audio (but have math & physics degree, worked in acoustics, built PC's, quadcopters, etc so that helps to understand the info I find on the web :) )
Rgds,
Werner
 
So, how does one get information about the cone excursion in real time without a sensor??? Answer: you predict it from the input. This has been done very nicely using a very complicated analysis and characterization of the driver including thermal and other effects by Klippel, however, the complexity of this modeling approach is too high for DIY use.

Instead one can make use of the work of R.H. Small. In his papers "Closed Box Loudspeaker Systems Part I: Analysis" and "Direct-Radiator Loudspeaker System Analysis" he presents equations for the peak cone excursion of a driver as a function of frequency. These equations are used in many box-modeling programs. The calculations consists of two parts:
  • A low-pass transfer function
  • A multiplication factor
The input for these parts are the Thiele-Small driver parameters and the input power. The low pass TF predicts the "shape" of the excursion curve as a function of frequency, with respect to the excursion at DC, from the in-box resonance frequency and Q. The multiplication factor takes into account the input power, cone area, and other Thiele-Small parameters. Together the product of these two quantities predict the peak excursion.

I believe that these equations can also be used on a time-varying signal to predict the instantaneous cone position using DSP. The audio data stream (signal versus time) is low pass filtered using Small's transfer function. This is easily done in real time in software. Then the resulting signal is substituted for the input voltage and instantaneous power into a load equal to the DC voice coil impedance (per Small) is calculated, along with the rest of the multiplication factor. The result should be the instantaneous cone position, sample by sample, or at least a prediction of it.

This method is not exact, but it's exact enough for our purposes. The cone position is not being measured, it's being predicted by a model. The model is a linear one, and excludes some well-known driver non-linearities so you could not use this approach to try to reduce distortion, for example. The TS parameters can be measured but typically only in the small-signal regime and these parameters will like by somewhat different under large-signal conditions. It's the large signal conditions that are of interest, because large excursions are what we are interested in limiting. None of this is really a major obstacle because we are trying to get an estimate of the excursion only. We do not need to know the excursion to an accuracy of 0.1mm, but rather within 1 or 2 millimeters or so. For improved accuracy, the large-signal TS parameters can be obtained, for example using a Klippel Analysis of the driver.

The limiting action is done in this way:
  • A set of attenuating filters are chosen to represent various amounts of "bass reduction", e.g. the low bass is rolled off to varying degrees
  • All filters are calculated, in parallel, on the input signal
  • The limiting algorithm looks to see if the input signal level will cause the driver excursion to exceed a user-specified threshold (e.g. Xmax)
  • If the threshold is exceeded, the algorithm then looks through the filters in order of increasing attenuation until it finds one with an output that is no longer exceeding the threshold
  • The output signal is then transitioned over to the output of this filter over a short period of time (it's a lookahead algorithm)
  • In general the action is to, only when needed, apply frequency dependent attenuation such that peaks are dialed down to keep the excursion below the pre-determined limit.
I have already written and tested a LADSPA plugin that employs a very similar lookahead limiter algorithm. In it, the signal level was being limited instead of a model of the cone excursion, but the action of the algorithm is very much the same, so I am confident I can modify the code to include excursion limiting as well.
 
Hello Charlie,

For someone with your programming skills and DSP knowledge this might be interesting.

The Schurer Thesis is based on the Klippel work.

http://doc.utwente.nl/13925/1/t0000002.pdf

http://etd.dtu.dk/thesis/185888/imm3871.pdf

Good Luck,

Eelco

Thanks for linking to those texts. I like to read this stuff, actually.

Some of these approaches are intended to make the transducer perform better, e.g. by reducing non-linearities, etc. That's not my (current) goal.

I build open baffle speakers mostly these days. OB bass requires very large swept volume because of the cancellation due to the open path between front and rear. Typicallly one has to apply some boost (depending on a variety of factors) below 100-200 Hz to raise the response on axis to the rest of the passband and this can easily exceed 12dB. At low volumes this is probably OK but on louder passages cone excursion can easily exceed Xmax. In fact, it is very possible to create a system that can bottom out the voice coil former, and that is not good. But I do want to add extension when I can.

One solution is to apply limiting. The idea is to still use a good amount of bass lift and allow the driver to do as much as its excursion will allow. When playing at louder volumes where this may cause excessive excursion the bass lift should be dialed back just enough to keep the cone excursion within a safe limit. My existing LADSPA plugin did this essentially by keeping the signal level under some limit. This also has the effect of preventing clipping when the digital signal is rendered via the DAC, but I showed that it will also limit cone excursion in a sense. I built the plugin around a Linkwitz-Transform function and dialed back the amount of boost by modulating the LT filter itself. This new twist is an effect to more directly get an estimate on the cone excursion. Again it's only a linear model, but that is probably good enough in this case.

I have always thought that Klippel's Mirror Filter concept was interesting. Seems to have some modest success in the real world, at least that is what I recall reading some while back, but the characterization and implementation seemed a bit more than I wanted to tackle on my own. It seemed to be targeted at making small, inexpensive drivers perform much better. This is very important in the commercial realm. But for DIY purposes, when you are not building speakers for a laptop or TV, you might as well just choose a better performing driver to begin with.
 
The real challenge with the feedforward process, as described by Schurer, is the accurate establishment of the non-liniar parameters of the speaker in question. Not two drivers seem to be alike. Also, an amp that is really fully dc coupled and can actually deliver dc pulses to the speakers is necessary. Fine for a lab, not for series production. This might be an explanation for the non-use of Klippels concept.

Eelco
 
Seems similar to Bag End's Infrasub.

Nice work!

The limiter should actually perform better than Bag Ends circuit, at least from what I know about that. The consequence of my approach is latency, which is unacceptable in a commercial standalone subwoofer that will be used with other loudspeakers. My LADSPA limiter plugin is just one part of the overall crossover system, and so you can delay the rest of the loudspeaker system to match the latency from the subwoofer's limiting algorithm. Well, a better choice of words would be: you have to!

I'm still thinking about how best to (re) configure the existing limiter plugin so that it can be used in this way (excursion limiting).
 
I really need to visit this forum more.

Charlie this is of extreme interest for me. This is a sliding high pass limiter right?

I'm not super familiar with that term, but I think that it one way you could describe it. The limiting function is like a high pass filter, and with increasing limiting action the filter corner frequency is increased. The code modulates the corner frequency along with the music signal so that some quantity of interest (predicted cone excursion in this case) is kept below user-defined ceiling value.
 
I'm not super familiar with that term, but I think that it one way you could describe it. The limiting function is like a high pass filter, and with increasing limiting action the filter corner frequency is increased. The code modulates the corner frequency along with the music signal so that some quantity of interest (predicted cone excursion in this case) is kept below user-defined ceiling value.

Yes, that's exactly what they are.

Have you ever considered doing the inverse to compensate for thermal compression? This is pretty significant for woofers that have large amounts of bass boost that would quickly have a lot of power heating the voice coils.

Without a temperature sensor accurate feedback isn't possible, but an approximation should still do quite a good job. For example, since excursion can be modeled for a given signal, then power requirement can be modelled too. An approximation can be made on the heat buildup and heat dissipation rate to approximate temperature on the voice coil. Then a certain amount of boost can be applied depending on the temperature of the voice coil.
 
Last edited:
David Birt's self-balancing bridge described in an AES publication and two (now expired) patents might be what you are looking for... I have discussed some aspects of this much overlooked stroke of genius in two other threads, namely "Better dome midrange design than ATC?" and "ATC SCM200 ASL Pro" that you may also care to read.

Birt's self-balancing bridge provides accurate temperature sensing and excursion sensing WITHOUT any additional sensor required for the driver. The output can be used to drive limiters as required (although strictly this becomes a compressor for the coil temperature case) regardless of whether it is used for motional feedback as is/was its intended purpose.

As I said, a stroke of genius that to date remains conspicuous by its absence...
 
David Birt's self-balancing bridge described in an AES publication and two (now expired) patents might be what you are looking for... I have discussed some aspects of this much overlooked stroke of genius in two other threads, namely "Better dome midrange design than ATC?" and "ATC SCM200 ASL Pro" that you may also care to read.

Birt's self-balancing bridge provides accurate temperature sensing and excursion sensing WITHOUT any additional sensor required for the driver. The output can be used to drive limiters as required (although strictly this becomes a compressor for the coil temperature case) regardless of whether it is used for motional feedback as is/was its intended purpose.

As I said, a stroke of genius that to date remains conspicuous by its absence...
I never claimed to do anything "new" here...

Thanks for the tip on the Birt stuff. Any chance you have a link or reference for that?

My work is to develop a limiter, specifically a look-ahead limiter running in software on inexpensive ARM boards. The other types (e.g. analog implementations) have major flaws IMO. I have already completed another lookahead limiter that limits the signal level. I am modifying it to be more flexible in that it will be able to limit the cone excursion in a more direct way.
 
The other types (e.g. analog implementations) have major flaws IMO

Would you care to enlighten us what these major flaws are?

I have implemented the exact same limiter/compressor using a modified form of Birt's self-balancing bridge in whole analogue and DSP-driven versions. There is no compromise - audible or otherwise - of which I am aware with either approach.

Limiter design does take some care in the analogue domain but audible artefacts can be overcome - and reduced to a level below that of the intended limiter operation. Compressors are somewhat easier and can be implemented via opto-coupled devices.

In DSP there is, however, a big disadvantage, namely that hard limiting even at the lower end of a passband can produce aliased components folding back into the passband. To prevent such distortion for a tweeter requires operating at at least twice the baseband sampling rate.

I would also recommend that if using excursion, thermal or power compression in an active set-up that the compression is implemented prior to the crossover (although possibly post any excess phase part). This does not compromise the compressor action but does avoid the audible changes to the overall frequency balance that will occur with specific band compression.
 
Would you care to enlighten us what these major flaws are?
Sure. For example, a pure limiter (e.g. without fudging by adding some compression near the limiting threshold) only knows two things: (a) the signal is below the limit threshold, or (b) the signal is above the limit threshold. Let's say we feed it a signal that will exceed the limit threshold. The limiter say to itself:
...signal below threshold...
...signal below threshold...
...signal below threshold...
...signal below threshold...
Oops! Signal has exceeded the threshold! Limit it!
Oops! Signal has exceeded the threshold! Limit it!
Oops! Signal has exceeded the threshold! Limit it!
Oops! Signal has exceeded the threshold! Limit it!
...signal below threshold...
...signal below threshold...
...signal below threshold...
(etc).
The above is what a hard limiter would (analog or otherwise). Very poor!

Ah, says some wise person, let's tweak this a bit to improve the limiting behavoir and avoid all those nasty side effects! Enter myriad schemes that try to smooth out the limiting behavior, usually by adding some compression around the limit threshold. This has the result of limiting the signal before it needs any limiting. Also, by reducing the "hardness" of the limiting, you can't enforce a ceiling but instead have to put up with an occasional "above the limiting threshold" blip. When the action (no matter what circuit you are using) is applied at the same instant that the governor monitors the circuit, there really is no way around these problems. You can only try to mitigate them to make the downsides less objectionable. IMHO this is why limiters have a very bad rap.

With DSP you get a new dimension that you can use: delay. No longer does the limiting algorithm need to take action on the signal immediately. It can monitor the signal and then "decide" what should be done IN ADVANCE! Yes, that's right, it has "advance" warning of a peak! This is because the delay that is introduced (which also produces latency) allows some time for the algorithm to make smooth and gradual changes BEFORE the peak occurs and before the data must be delivered by the limiter to the rest of the signal chain. The delay allows the algorithm to "look ahead" in time, and so is called a look-ahead limiter. The limiting action can be frequency dependent, if perhaps there is some knowledge that the signal peak is due to some sub-band of the full audio spectrum. The algorithm can smoothly modulate the audio signal around the peak to JUST accommodate it so that the peak is exactly reduced below some threshold. The downside is that you cannot do this for one band in a multi-band system without adding in the latency of the band that is being limited. Some pro units try to implement this as a "multiband" limiter for the full audio spectrum, but this again is just a series of compromises because, in general, this kind of limiter knows nothing about why the peaks is exceeding the threshold and all the frequencies within each band are treated the same way. In my case I am designing the limiter specifically for a subwoofer, and have some information about where and why the peaks must be limited. This helps to tailor the action so as to be as blameless as possible, only compressing that part of the signal that is causing the peak in the first place and only doing it when (in time) and where (in frequency) it is needed.

I really don't know anything about your balanced bridge approach, but I am convinced that a customized DSP look ahead limiter is better than any other approach for this application.
 
IMHO this is why limiters have a very bad rap

In my experience this is not the case. There is a distinction that first needs to be drawn between limiters employed to effect such as multi-band limiters in a studio rack and those employed for loudspeaker protection. The major failing of limiters employed for protection is in the release and not the attack provided the 'knee' is soft enough. FET limiters applied with caution are capable of being practically inaudible in such applications.

From here two corollaries are evident: Firstly the audible effects of such limiters are confined to the 'post' response and the ability to shape a 'pre' response by implementing delays is superfluous; Secondly, displacement limiting is by its nature apparent at the low frequency end of the passband (or at the low frequency end of a sub-woofer band in your application) where a simple FET limiter that is good enough at high frequencies is then more than adequate here.

A further point of relevance here is that a sub-woofer channel is likely active and therefore processed separately plus band-limited by its very nature. Any higher harmonics due to an overly sharp knee are not then likely to be audible in any case. Indeed the major advantage of 'look ahead limiters' is to prevent the aliasing I described in my previous post and this will simply not be relevant in a sub-woofer application with a FET limiter.

The limiting action can be frequency dependent... only compressing that part of the signal that is causing the peak in the first place... a customized DSP look ahead limiter is better than any other approach

This requirement is simply a linearly filtered detector (for your uncalibrated model at least). As stated previously, the best method is to use a bridge to extract both the coil displacement and coil temperature. And as also stated I have done this in both the analogue and DSP domains where the latter offers some advantages - but audibility is not one of them. Look-ahead limiting is not a requirement for realising a "blameless" displacement limiter but accounting for thermal compression and a more accurate model are.
 
Last edited:
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.