HEnquist / camilladsp

A flexible cross-platform IIR and FIR engine for crossovers, room correction etc.
https://henquist.github.io/
GNU General Public License v3.0
533 stars 48 forks source link

subwoofer/xmax backoff #352

Open siraaris opened 1 month ago

siraaris commented 1 month ago

Looking at some of the old or existing issues, I note that there's been mention of adding a mechanism other than the Compressor to alleviate subwoofer excursion, back off from selected frequencies gracefully when Xmax for example would be exceeded, or if the driver was about to go beyond a nominal value of distortion.

I think Charles Laub implemented something like this in LADSPA via parallel Linkwitz Riley transforms that are exercised based on configuration modelled from the T/S driver parameters.

Alternative one could measure drivers, and somehow define limits from actual measurements.

Some mention was made in previous Issues that @HEnquist you had some thoughts on how to implement something but at the time (pre v2.0) was too complicated, and that you might revisit it later.

Are there any plans or thoughts in this area?

Feel free to close this down if it's not on the roadmap or consideration for the future!

HEnquist commented 1 month ago

I guess you refer to https://github.com/HEnquist/camilladsp/issues/33 ?

I think that the current compressor should be able to do this (but have not tried). If you add a mixer to create an extra channel, then add filters to it to make it model excursion (some form of lowpass, but will be tricky to get right). Then add a compressor that monitors the extra channel and processes the subwoofer channel. Finally add a mixer that drops the extra channel.

Sealed boxes should be relatively easy to model, a simple lowpass at the resonance frequency should get quite close. Vented will be more challenging, but a higher order lowpass maybe can be good enough to be useful.

siraaris commented 2 weeks ago

Thanks Henrik. #33 was what I was referring to. What you mention makes sense, I'll have a stab and see how it goes.