camilladsp icon indicating copy to clipboard operation
camilladsp copied to clipboard

Add a compressor filter

Open HEnquist opened this issue 4 years ago • 7 comments

should process one waveform based on a control input from another channel

HEnquist avatar Mar 30 '20 13:03 HEnquist

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.

nseyedtalebi avatar Aug 19 '21 10:08 nseyedtalebi

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.

HEnquist avatar Aug 19 '21 13:08 HEnquist

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.

HEnquist avatar Dec 25 '21 21:12 HEnquist

A limiter for speaker protection could also be great!

Arnwald avatar May 11 '22 00:05 Arnwald

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.

HEnquist avatar May 12 '22 19:05 HEnquist

Great! I have a potential business project that could involve CamillaDSP. How can we discuss about it?

Arnwald avatar May 12 '22 19:05 Arnwald

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.

HEnquist avatar May 12 '22 19:05 HEnquist

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.

jrbrodie77 avatar Oct 14 '22 14:10 jrbrodie77

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

HEnquist avatar Oct 14 '22 20:10 HEnquist