MDynamics as EnvFollower + VCA
-
- KVRAF
- 1895 posts since 13 Oct, 2002
I'm trying out MDynamics as a demo and what I'd like to do is impose the volume envelope of one track on another so that as volume increases or decreases in the signal fed to the sidechain (VST3 in this case), the main signal input to MDynamics will follow.
The closest way I can manage to do this is by using the Gate, but in order to work well I believe the Size parameter would have to be significantly larger than 24 dBs.
Is this the wrong tool for the job? We had a parallel discussion about this before; working with the Gate in MDynamics, I can see it's possible, but there's insufficient control available over the fine tuning of the volume depth and range.
The closest way I can manage to do this is by using the Gate, but in order to work well I believe the Size parameter would have to be significantly larger than 24 dBs.
Is this the wrong tool for the job? We had a parallel discussion about this before; working with the Gate in MDynamics, I can see it's possible, but there's insufficient control available over the fine tuning of the volume depth and range.
-
MeldaProduction MeldaProduction https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=176122
- KVRAF
- 14339 posts since 15 Mar, 2008 from Czech republic
I don't think this is the way to go. Basically, dynamics processors (compressors, expanders, gates...) follow only one signal - either the one they are processing (main input) or side-chain, but not both! What you are probably asking for is MAutoVolume:
http://www.meldaproduction.com/plugins/ ... AutoVolume
http://www.meldaproduction.com/plugins/ ... AutoVolume
-
- KVRAF
- Topic Starter
- 1895 posts since 13 Oct, 2002
That's correct: I don't need both! I just need to track the volume of the sidechained signal. The resulting volume variation from that controls the level of a VCA. Done! I can almost do this with MDynamics Gate but lack the fine tuning to adjust it properly. The volume tracking could be 1:1 or a different ratio (either way) and offset as required; if the sidechained sound goes silent, so does the signal output of VCA since gain would be reduced to -inf.MeldaProduction wrote:I don't think this is the way to go. Basically, dynamics processors (compressors, expanders, gates...) follow only one signal - either the one they are processing (main input) or side-chain, but not both! What you are probably asking for is MAutoVolume:...
For example, this way I can control the volume of a sustained sound and have it rise and fall to the sound of waves on a beach.
I'm mystified as to why this is so hard to understand...
-
MeldaProduction MeldaProduction https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=176122
- KVRAF
- 14339 posts since 15 Mar, 2008 from Czech republic
Ok then, you are still describing MAutoVolume though, kind of. The trouble is you are trying to use something relative in an absolute way. It's hard to describe really. I know what you want, but it just doesn't work that way usually. For the sustained sounds it would work I guess, but not for anything "faster".
Basically you want this :
out = in * level_follower(sidechain)
Compressors (and other dynamic processors) work like this :
x = level_follower(sidechain)
out = in * transfercurve(x) / x
As you can see, you cannot get what you want with this. But the main question is if you really want that! The problem is that you want to attenuate input if the sidechain level goes lower. But lower than what??
Anyway enough technical crap. I'd suggest using downwards expander. Just press the arrow down in one of the processors.
Basically you want this :
out = in * level_follower(sidechain)
Compressors (and other dynamic processors) work like this :
x = level_follower(sidechain)
out = in * transfercurve(x) / x
As you can see, you cannot get what you want with this. But the main question is if you really want that! The problem is that you want to attenuate input if the sidechain level goes lower. But lower than what??
Anyway enough technical crap. I'd suggest using downwards expander. Just press the arrow down in one of the processors.
- Banned
- 10196 posts since 12 Mar, 2012 from the Bavarian Alps to my feet and the globe around my head
Can't this be done with sidechained downward expanding by using the the waves as sidechain (and if you don't want to hear the waves, simply not send them to the master bus)?Breeze wrote:For example, this way I can control the volume of a sustained sound and have it rise and fall to the sound of waves on a beach.
EDIT: I just had the idea: What about using a phase-inversed audio-file of the waves as sidechain into a compressor? That could work, too.
-
- KVRAF
- Topic Starter
- 1895 posts since 13 Oct, 2002
Yup! That's it. Easy Peasy, in principle. With adjustments for amount of following (multiply/divide) and offset (add/subtract). Sidechain HP/LP filters are useful + env follower control (A/H/D). Not a compressor.MeldaProduction wrote: Basically you want this :
out = in * level_follower(sidechain)
MeldaProduction wrote:But the main question is if you really want that!
Yes!
I tried it but it's not a perfect solution. It's fiddly and doesn't work as a proper follower because of the way it handles the transfer curve; "1:1" should yield matching of source volume level to destination VCA level. Like I said originally, the MDynamics Gate is the closest one, which in principle is a customized downward expander.MeldaProduction wrote:Anyway enough technical crap. I'd suggest using downwards expander. Just press the arrow down in one of the processors.
Than itself, the sidechain, on an absolute scale like it would be with a hardware Envelope Follower connected to a hardware VCA. It comes down to tracking the volume of one track and controlling the volume of another with that data. I think you've already answered my original question: MDynamics is not the tool for this, and neither is MAutoVolume, although both can exhibit behaviors that are close to this.MeldaProduction wrote:The problem is that you want to attenuate input if the sidechain level goes lower. But lower than what??
I may have to "proof-of-concept" this one... but there's no "construction kit" that implements VST3 sidechains. WD-OL?... I am trying to avoid becoming a programmer.
-
MeldaProduction MeldaProduction https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=176122
- KVRAF
- 14339 posts since 15 Mar, 2008 from Czech republic
But you are probably not aware of the fact, that if this would be done, the level would immediately drop, a lot probably - you need the follower to be slow enough, so probably the level will be low, and hence the output gain will be very low.
Well, you could easily do it with MXXX, but I guess you are not on the preset program and who knows when the official release will be.
I guess you could come close in MDynamics using custom shapes though. Ok, so techtalk
, this is the MDynamics formula:
x = level_follower(sidechain)
out = in * transfercurve(x) / x
So you want
transfercurve(x) / x = x
Therefore
transfercurve(x) = x^2
So just google
x^2
and make the shape curve similar (in range 0..1)
.
Basically all you need to do is enable custom shapes without any processors or gate enabled, and drag the curvature in the middle down. You may want to right click to select a different curvature mode, I think "mode 1" should be ideal for x^2. Note that the output level will immediatelly drop a lot, so you'll need to use output gain to compensate for it.
Well, you could easily do it with MXXX, but I guess you are not on the preset program and who knows when the official release will be.
I guess you could come close in MDynamics using custom shapes though. Ok, so techtalk
x = level_follower(sidechain)
out = in * transfercurve(x) / x
So you want
transfercurve(x) / x = x
Therefore
transfercurve(x) = x^2
So just google
x^2
and make the shape curve similar (in range 0..1)
Basically all you need to do is enable custom shapes without any processors or gate enabled, and drag the curvature in the middle down. You may want to right click to select a different curvature mode, I think "mode 1" should be ideal for x^2. Note that the output level will immediatelly drop a lot, so you'll need to use output gain to compensate for it.
-
- KVRAF
- Topic Starter
- 1895 posts since 13 Oct, 2002
Thanks, I'll try this. MXXX sounds intriguing but unavailable.MeldaProduction wrote:I guess you could come close in MDynamics using custom shapes though. Ok, so techtalk, this is the MDynamics formula:...
Absolutely, it's the closest one. But the latest iteration seems to stray from the original idea. I think it's because like Vojtek, Saverio is thinking of this in terms of compression instead of just envelope following.Svama wrote:Maybe hornet plugins vca is what you are searching for.
What makes this difficult as Vojtek has painstakingly pointed out (thanks, btw) is that traditionally dynamics processing seeks to alter the dynamic range of a signal. "1:1" means "no effect" in traditional dynamics processing, whereas in this context "1:1" means that the sidechain volume variation that is detected is imposed on the input signal exactly. "2:1" would mean "twice as much" and "1:2" would mean "half as much". It's an important distinction.
The only other issue, as Vojtek discussed, is the level calibration. I'm far from a professional programmer so I'm not clear on how amplitude is calculated or evaluated in the VST world, but in the hardware world it's pretty obvious. I would think that for something like this, the reference has to be handled within the plugin itself, and controls to properly offset and scale the detection to the desired effect on the input signal be provided to the user.
It's important for me to do this within the VST3 framework for the sidechaining, which is why I was looking at MDynamics to see if this was possible.
-
MeldaProduction MeldaProduction https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=176122
- KVRAF
- 14339 posts since 15 Mar, 2008 from Czech republic
Did you try the MDynamics approach btw? It should be simple enough.
The trouble is that we need to "hack" the way dynamics processors work, that's why it is "complicated". Anyway "amplitude callibration" is really impossible. Here it is the same as in analog world, but you NEVER know what signals come in! So if the sidechain is going to be low in level, very low gain will be performed and there is and never will be a way to avoid it, because you never know if the level of the sidechain won't rise at one point! You just cannot see the future
.
The trouble is that we need to "hack" the way dynamics processors work, that's why it is "complicated". Anyway "amplitude callibration" is really impossible. Here it is the same as in analog world, but you NEVER know what signals come in! So if the sidechain is going to be low in level, very low gain will be performed and there is and never will be a way to avoid it, because you never know if the level of the sidechain won't rise at one point! You just cannot see the future
-
- KVRAF
- Topic Starter
- 1895 posts since 13 Oct, 2002
Actually the Envelope Graph does the job quite nicely! With that I can pretty much shape what I want and combined with the other controls, it's doing what I need it to do. That's what I like about your plugins: they can be simple to use but also offer lots of tweaking under the hood, although in this case it's in a pretty obvious place.MeldaProduction wrote:Did you try the MDynamics approach btw? It should be simple enough.
I think what you're saying is that "amplitude calibration" is impossible because VST's operate in a floating-point environment. But since I am doing what I need to do with MDyanmics, then it is in fact possible to optimize settings to act as I require, QED. When we look at Cubendo's mixer, some nominal level is selected to represent "0" on their scale and unless I really don't understand this, I would expect this translates to some known value. Optimizing a sidechain signal to a value range between -60 and 0 on that scale is what seems to me optimal. Is this in fact impossible?MeldaProduction wrote:The trouble is that we need to "hack" the way dynamics processors work, that's why it is "complicated". Anyway "amplitude callibration" is really impossible. Here it is the same as in analog world, but you NEVER know what signals come in! So if the sidechain is going to be low in level, very low gain will be performed and there is and never will be a way to avoid it, because you never know if the level of the sidechain won't rise at one point! You just cannot see the future.
While we can't see the future we can insure against it by placing some kind of hard limit that can be adjusted as required. When I was tweaking MDyn's EnvGraph, at one point I interrupted the sidechain and suddenly MDyn's output level slowly started maxing out and distorting more and more. I had put a limiter at the end of this track's plugins and was able to stop the processing with no harm to my ears or speakers. Others may not be so careful. Actual damage is possible with unfettered access to dangerous possibilities; but that's also a place where creativity resides...
-
MeldaProduction MeldaProduction https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=176122
- KVRAF
- 14339 posts since 15 Mar, 2008 from Czech republic
Yeah, that's the spirit! 
But no, it has nothing to do with VST, digital processing or anything. It's simply the fact that you never what the input level is going to be. If you use a hard limit, you may put it too low or too high, both are wrong. So you need to do that manually. And that's what output gain is for. But you need to be careful as you are essentially "squaring" the level - the high level bursts may occur if the 2 signals get too "in sync" with each other.
Anyway the MDynamics not showing level in custom graphs is probably a bug. Anyway you can still enable a processor or gate, they do nothing if the custom shape is enabled.
But no, it has nothing to do with VST, digital processing or anything. It's simply the fact that you never what the input level is going to be. If you use a hard limit, you may put it too low or too high, both are wrong. So you need to do that manually. And that's what output gain is for. But you need to be careful as you are essentially "squaring" the level - the high level bursts may occur if the 2 signals get too "in sync" with each other.
Anyway the MDynamics not showing level in custom graphs is probably a bug. Anyway you can still enable a processor or gate, they do nothing if the custom shape is enabled.
-
- KVRAF
- Topic Starter
- 1895 posts since 13 Oct, 2002
Let's be realistic for a moment: if the signal you're using as a sidechain isn't strong enough or too strong, or is too variable in its dynamic range, it's not up to any automated system to automatically adjust the gain: it's up to the operator. However, I think these reservations are still based on the traditional "out = in * transfercurve(x)/x" dynamics processing formula. It seems to me that doing thisMeldaProduction wrote:It's simply the fact that you never what the input level is going to be. If you use a hard limit, you may put it too low or too high, both are wrong. So you need to do that manually. And that's what output gain is for. But you need to be careful as you are essentially "squaring" the level - the high level bursts may occur if the 2 signals get too "in sync" with each other.
out = in * transfercurve(x) / transfercurve
would solve the problem and allow scaling and biasing of the control signal, but as you've mentioned, it's not the traditional formula. Does the above make sense?
-
MeldaProduction MeldaProduction https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=176122
- KVRAF
- 14339 posts since 15 Mar, 2008 from Czech republic
Well it doesn't make sense to me at all. First of all dividing by "transfercurve" in your formula means what?? The curve is a function, not a number. But you don't really need to think in formulas. It's pretty logical - you do NOT know what's the input level and you never will. Imagine a 3 minute fade in... until you get to the end, you still don't know the maximum
.
-
- KVRAF
- Topic Starter
- 1895 posts since 13 Oct, 2002
I've been trying to understand your perspective on this. While it's true that you don't know the exact level of a signal, you can know its range. So you can optimize functionality within an expected range and set up truncation if it exceeds your expectations. I'm going to re-read this entire thread once again...MeldaProduction wrote:It's pretty logical - you do NOT know what's the input level and you never will. Imagine a 3 minute fade in... until you get to the end, you still don't know the maximum.
