camilladsp
camilladsp copied to clipboard
Add a compressor filter
should process one waveform based on a control input from another channel
An idea I got from an ad for a power amp: a compressor that is set based on driver Xmax. You'd need to have at least an estimate for the T-S parameters, but that is usually pretty easy to get. Not even sure if it's useful in practice, but I liked the idea and wanted to share in case it might be.
I have been thinking about something along those lines. I think that such a compressor should be smart and apply some frequency-dependent compression. It gets a bit involved, but certainly doable.
This won't be built the way I first intended, see https://github.com/HEnquist/camilladsp/issues/23
Instead I'll make something less generic and much simpler.
A limiter for speaker protection could also be great!
A limiter for speaker protection could also be great!
This has been on my to-do list for quite some time. I'll add a limiter filter when I add the compressor. It already exists, as part of the compressor. I just need to break it out as a separate filter.
Great! I have a potential business project that could involve CamillaDSP. How can we discuss about it?
Drop me an email (address is in my profile). Short version is that I don't offer commercial licences because I simply don't have the time to handle it properly. But of course camilladsp can still be used in commercial projects, as long as the GPL terms are followed.
This project looks awesome. I've had to design and implement limiters like this in professional speaker applications. Happy to discuss when you get to it. Limiting excursion without causing weird artifacts is tricky. A convenient way is to generate two bands that when summed produce a flat response (like a high and low pass filter outputs) and then duck the LF signal based on a third signal that models the excursion. The trick is designing these signals and also tailoring the dynamics to act quickly without adding too much distortion.
I have been thinking about something along those lines. I think that such a compressor should be smart and apply some frequency-dependent compression. It gets a bit involved, but certainly doable.
The compressor is done! It will be included in version 1.1. See https://github.com/HEnquist/camilladsp/tree/next11#compressor There is also an example config for compressing only low frequencies here: https://github.com/HEnquist/camilladsp/blob/next11/exampleconfigs/lf_compressor.yml