mb dynamics

multiband compressor / expander

(5 Votes)
kamedin
1.62 (Updated 4 days ago)
1.1MB
December 01, 2018
Reaktor 6
Effect Dynamics

DESCRIPTION

mb dynamics is a multiband compressor / expander. It works on band levels relative to broadband level. A mode is available for setting thresholds to the average levels of the input. An auto gain function lets recover the input broadband level on the output.

Working with relative levels is useful for controlling narrow band dynamics independently of broadband level -say, a harshness / muddiness / etc that is not constant but happens both in loud and soft passages, so a fixed threshold doesn't work well. I made this not to replace other multibands, but to avoid resorting to complex sidechaining setups when they fall short. I also use it for broadband processing (on a mix, a submix, a piano take) to make the general tone more uniform, bringing dissimilar parts closer to an average. For that use, the "get" mode makes a guess of that average and sets thresholds to it. Sometimes I use this function alone to get some insight and then set a fixed eq, especially when the material is dinamically all over the place so the average spectrum over-represents loud parts.

v1.1: Added controls ("x") for excluding individual bands from the computation of broadband level. This allows, for example, to control a high band independently of a low end that comes and goes, by taking a broadband level without the low end.

v1.2: Out gain section restructured. Static out gain is now smoothed, out gain lookahead works whether auto is active or not. Out gain is set to zero when get mode is active. Added an overview diagram to the manual.

v1.3: Added an A/B mechanism to switch between two sets of parameter values.

v1.4: Added a display for transition (between threshold and group delay). Changed the behavior of global threshold when get mode is active (now it does nothing). Added GUI references to the manual. Other minor adjustments.
v1.41: Moved the A/B snapshots to a separate bank, so they don't cause a "no free snapshot" when trying to add to the main bank.
v1.42: Offset (an internal parameter recalculated on each crossover control change) is now driven by an iteration instead of an audio rate timer, so its effect is not delayed (this caused a gap in dynamic gain when a crossover was turned on).

v1.5: Buttons are now flat, boxes are borderless, all curves are antialiased, other minor adjustments.

v1.6: Added a BLEP-like correction to output detectors to smooth the edges between attack and release. The effect is very subtle, but I think it's worth the slight overhead (~5% relative, ~0.5% on my CPU for the stereo version with all bands active).
v1.61: Tiny tweak in the BLEP macros.
v1.62: Added info hints to everything, they include most of the manual. Also added a short explanation (in the manual and the info hints) of why thresholds can be positive. No functional changes.

COMMENTS  (12)

kamedin
2 months ago
an example of the workflow i describe at the end of the manual: youtu.be/S19jwaoyp18
kamedin
6 months ago
(lol, it was the lesser than sign... agh) yap, for the crossovers. anyway the split/delay/remix is done already. there are two places where i could put the xfade. before output gain, would be one xfade per channel (3 ops for mono, 6 for st) -this one breaks the behavior of static output gain when mix is lesser than 100%. placing it after output gain doesn't break that but needs one more delay per channel. i wouldn't use it because the advantages of parallel are pretty much lost here. on the micro level there's transient preservation, mainly because parallel induces a max reduction with soft knee (for example, for a mix of 50% it sets a range of -6 db). here that's already done by the transfer curve, because it's s-shaped (similar to opto compressors), so it slows down before max reduction. on the macro there's raising the level of soft passages, because the compressed path proportionally adds more there. that's lost here because relative thresholds make reduction independent of broadband level, so for the average case there's not more reduction in loud passages than in soft ones. this is more of a multiband dynamic eq than a compressor -i didn't call it that because usually dynamic eq implies parametric. i uploaded the modified versions anyway, both before and after output gain, on a separate "test" folder.
kamedin
6 months ago
(sorry, don't know what happened, it broke the comments. let's go from the start again.) yap, for the crossovers. anyway the split/delay/remix is done already. there are two places where i could put the xfade. before output gain, would be one xfade per channel (3 ops for mono, 6 for st) -this one breaks the behavior of static output gain when mix
kamedin
6 months ago
...when mix
kamedin
6 months ago
yap, for the crossovers. anyway the split/delay/remix is done already. there are two places where i could put the xfade. before output gain, would be one xfade per channel (3 ops for mono, 6 for st) -this one breaks the behavior of static output gain when mix
Thala Estra
6 months ago
hey, i didn`t dive into your coding, so i can`t really judge. but yes, a dry wet/knob makes only sense, if the original input signal will be delayed by the lookahead/latency amount. dunno if there still would be phasing going on.
kamedin
6 months ago
oops, i was talking expansion. for compression it curves the knee and sets a range. anyway, the rest is similar https://tinyurl.com/yazus8n6
kamedin
6 months ago
added a "power" button at the bottom right corner. i leave step sizes at 0 because i use the decimals and i don't want automation to get quantized, just don't like them to show up when i scroll. if i need to fine scroll, i press shift. i tried different ways of adding the mix parameter and ended up deciding against it. it doesn't play well with other functions and the additional computation however slight doesn't compensate that i'd never really use it. it basically turns the sidechain into kx+1-k with respect to the original, which has the effect of raising the threshold and curving the knee (https://tinyurl.com/y6waq8x9). this already has a transfer function with two knees and a range parameter, so for any wet/dry setting there would be a change in dynamic gain scale (which scales the whole transfer function) + global threshold that would achieve almost the same (https://tinyurl.com/y8vowb89). (btw, crossfading the whole thing wouldn't be a good idea unless you're going for the effects of phase-shift and sum. if you're not, the crossfade should be placed after splitting.)
Thala Estra
6 months ago
-the "step size" settings are quantizing the knobs. if it is set to "1" you will never get decimals. -the mouse resolution is just scaling your mouse movement. sure, if one choose a small value it acts like the quantizing step size, but that not the intended way. - bypass and dry/wet should always switch/crossfade the whole thing. (crossfade intput and output). at least the main D/W and bypass. -everything else could be handy! but as i see all these controls on the screen already... maybe better not? but thats just my taste. another may come along and say: yeah i need d/w and bypass for every single band to do surgical intervention. usually i am that guy... why not today? have a nice sunday!
kamedin
6 months ago
fixed mouse resolutions for the displays controls, those were silly. i don't know about the other ones though, i don't like when decimals come and go, i don't see the numbers. i set most ranges at 100 because i automate a lot and vst2 parameters are all 0-100 for the daw. at some point there was a bypass button but i took it out because i always ended up using the daw one, i forgot there's life out of dawland. would it be more useful to have it after splitting and delaying, so there's no ugly click/jump? never occurred to me to do parallel with multiband but it's easy to add. would it be global or per band? i did put a "mix" control like the one in fabfilter pro-mb, which doesn't really mix anything so i called it scale, but it's split in two, one for static gain and another for dynamic.
Thala Estra
6 months ago
using mouse resolutions on knobs below 127 makes it hard to edit for me. especial that mouse resolution of 8 (!) on the upper right setting (band). setting it to 127 or even 255 makes it very smooth to edit. at least on my side.
Thala Estra
6 months ago
wow... thanks a lot for sharing. but i haven`t found a dry/wet knob (parallel processing) or bypass button (for comparing dry/wet) yet.
now