mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.49k stars 1.28k forks source link

compressor effect #6453

Open mixxxbot opened 2 years ago

mixxxbot commented 2 years ago

Reported by: Pegasus-RPG Date: 2012-05-17T13:51:48Z Status: Confirmed Importance: Wishlist Launchpad Issue: lp1000759 Tags: effects, microphone


(Testing with a Shure SM58 through an SCS.1m firewire sound card via JACK on Debian Squeeze.)

At first glance, the microphone input seems to be too quiet, but because it's possible to max out the level in the software (though the clip indicator never lights) and clip the hardware input just by yelling into it, we should add a compressor to the input stage so that the voice can be substantially louder without the user having to turn the gain so high on the hardware.

mixxxbot commented 2 years ago

Commented by: rryan Date: 2014-03-18T19:41:17Z


Internally there is a compressor now thanks to Bug #⁠1035065. It's just used under the covers to implement talkover ducking. We don't currently plan to expose its parameters to the user.

mixxxbot commented 2 years ago

Commented by: rryan Date: 2014-03-18T19:42:34Z


The end problem (mic too quiet) actually may be solved by Bug #⁠1034065. Adding a compressor could be done manually with the effects framework, so is this a dupe of Bug #⁠857450 ?

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2014-03-18T19:59:40Z


The "too quiet" part is IMHO best solved with a gain knob, instead of volume Bug #⁠1280771

(Bug #⁠1034065 is a unity-lens-radios bug)

mixxxbot commented 2 years ago

Commented by: ywwg Date: 2014-03-18T20:02:43Z


The compressor as written does ducking, which lowers the volume of the other channel. This sort of compression is different and involves raising volume over a knee at a certain threshold. The implementation will be different.

Yeah, compression is a word that means a lot of things.

mixxxbot commented 2 years ago

Commented by: rryan Date: 2014-03-18T20:08:09Z


Oops I meant Bug #⁠1035065.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2014-04-24T13:05:51Z


See workaround at http://www.mixxx.org/forums/viewtopic.php?f=3&t=6297

mixxxbot commented 2 years ago

Commented by: Pegasus-RPG Date: 2014-09-18T16:45:42Z


What I'm saying is that at least on the hardware I tested, I can reach maximum volume (evidenced by clipping the hardware mic input and maxing the volume meter in Mixxx) by yelling into the mic, so the signal chain is working correctly, it's just that the dynamic range is too great since regular talking is significantly lower than the maximum the chain supports. So we need an upward compressor assigned to the mic channel by default so as to automatically bring up the lower signal levels without affecting the higher ones. http://en.wikipedia.org/wiki/File:Upward_compression.svg Since we have effects now, I would expect that this would be fairly easy to do.

mixxxbot commented 2 years ago

Commented by: ywwg Date: 2014-09-18T16:56:38Z


It should be possible to adapt the code I wrote for mic ducking to do this

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2017-12-28T02:35:19Z


We have a flexible effects framework now. IMO it would make most sense to implement this as an effect so users could load it into an effect unit and assign the effect unit to microphones. Any volunteers to take this up for 2.2? Daniel? I think it is the one glaring omission from our available effects presently.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2017-12-28T09:40:39Z


Should the ducking be moved to the effects as well? The ducking knob feels like a satellite currently.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2017-12-28T13:45:51Z


No, the ducking feature needs to stay in its special place within the engine because it takes a sidechain input. The effects system cannot take a sidechain input. I'm not sure if the code for that should be reused for this effect or if it would sound better to write it from scratch or adapt the code from some other software.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2017-12-28T14:23:54Z


We can make it work though.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2017-12-28T14:38:34Z


What do you mean? We cannot make the mic ducking functional part of the effects system. We could refactor the compressor code used for mic ducking into a common class that can be used both for the mic ducking and for the effect somewhat like how the various filters are reused by different effects.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2017-12-28T14:59:37Z


We can make a compressor effect and load it to the master channel. We can add a selector switch, which bus is controlling the gain. In this case talk-over. Instead of actual altering samples, we can pass the controls to the original ducking place. That controls that the master is effected but not the talkover channel.

Some ugly globals will be involved but. But the current ducking implementation is also global in a way. Maybe we can find a way to make it more generic.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2017-12-28T15:24:42Z


I think refactoring the microphone ducking feature to use the effects system would not make the implementation any cleaner. IMO it would overcomplicate that because we'd need to implement a new special EffectUnit. I think it would make more sense to have a class that can be used both for the special microphone ducking feature and for the effect. In the effect, the sidechain input to the common class would be hardcoded to be the same as the input signal to the effect.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2017-12-28T15:26:23Z


Daniel, would you like to volunteer to take this up for 2.2? If so, please assign yourself to the bug and assign it to the 2.2 milestone.