Provide limiters / compressors with controller rack function

Got a great idea for the future of LMMS? Post it here.
Forum rules

Make sure to search to see if your idea has been posted before! Check our issue tracker as well, just to make sure you are not posting a duplicate: https://github.com/LMMS/lmms/issues

Provide limiters / compressors with controller rack function

So I've had this idea for a while now, and I want it to be implemented into LMMS in some way, and i will explain what it could be used for later.

The feature that I am proposing will take any built-in limiter (eg. Calf Limiter LADSPA), and the limiter will output how much it is reducing the volume of a channel in dB, and put it in the controller rack. I want it to still output to the controller rack even when the limiter is disabled when "bypass" is toggled, so that the limiter isn't altering the volume of the channel it's on. This would decouple the limiter's effect, and the effect of the limiter could be applied to any channel. It would behave similarly to a peak controller, but instead of reducing its value whenever it detects any level of amplitude, it reduces it only when the audio it's tracking passes the point of peaking.

Why would this feature be useful?

Imagine that you applied a limiter to the master channel. This is where the limiter is helpful, because it forces the master channel to never cross the 0 dB threshold, and the audio never clips. The limiter works great for exporting the whole mix, but what if you wanted to export individual stems, while having all of the stems have their volumes reduced, so that when they're all combined, they don't clip? Typically, there are 4 stems (drums, instruments, melody, bass) and it's difficult to make sure that they're all at a volume where they don't clip when combined. But, if you had a limiter that was put on the master, which is the combination of all of the stems, the limiter could reduce the volumes in just the right way that none of them would cross the 0 dB threshold when they're all combined. The limiter could lower the volume of all of the stems by a certain number of decibels for every given moment of time. It's a very niche use case, but very powerful.

But, I'm not sure how it could be implemented without causing problems. If you had the limiter on the master, but it's also controlling the volume of the channels that are sent to the master, then it could cause a feedback loop. But I'd like to see what everyone else thinks about this concept, and how it might be done.

+1 to the idea. The Lv2 and ladspa standards (probably even vst, dont quote me on that tho) already provide a way for plugins to have output parameters. A ton of existing plugins (including some I made) already take advantage of this feature. LMMS would just need to give us access to those outputs in some shape or form and the sidechaining hell would finally be somewhat addressed. It would not allow for sample-exact resolution though, but still a big step forward.

trancwolve wrote:
July 18th, 2026, 9:51 pm

+1 to the idea. The Lv2 and ladspa standards (probably even vst, dont quote me on that tho) already provide a way for plugins to have output parameters. A ton of existing plugins (including some I made) already take advantage of this feature. LMMS would just need to give us access to those outputs in some shape or form and the sidechaining hell would finally be somewhat addressed. It would not allow for sample-exact resolution though, but still a big step forward.

The output would need to be sample-exact, because without that, some samples might creep through and cause clipping again. I'm not sure that the limiter does do sample-exact limiting anyway, since I had found out through testing that the lookahead for the "Calf Limiter LADSPA" effect has a length of precisely 441 samples when the lookahead is set to 10. So in this case, I think it only updates every 1/100 of a second, and it finds the peak amplitude of the input wave within that 441 sample window. Some form of interpolation may be done between these samples, but I really don't know and would have to find the source code to this filter.

With that said though, I still don't know how it could be implemented without causing feedback loops, or requiring a very complex setup of channels / sidechains to prevent them. LMMS does have some ways to prevent feedback loops in different scenarios. One example is when using an LFO Controller, and then trying to connect one of its parameters to itself. You will get a "Cycle detected" error, and perhaps this error could be used to prevent these feedback loops.