Custom Compressor module in Scriptnode
-
@iamlamprey said in Custom Compressor module in Scriptnode:
Is there any reason for wanting a different compressor? Isn't knee the only parameter that changes within the actual compression algorithm?
Yeah I think knee factor (not ratio) is the cause. When I adjust thje same attack time and compare it with other plugins, the compressor behaviour is not the same. ı can't capture the same tone just like the hardware I like.
-
@ustk said in Custom Compressor module in Scriptnode:
Yes it is possible, you'll have to find how such an algorithm is made though…
The most obvious reason to me is that everyone's plugin doesn't have the same effects. Imagine if everyone use the same reverb, comp or saturation just by creating a UI and connect it to stock modules…
Of course they can be good to add a bit of this or that in an instrument that does not use effects as center piece. But for FX plugins it is a whole other matter if people commercialise just a gui with nothing but a stock module behind imo@iamlamprey said in Custom Compressor module in Scriptnode:
I suppose you could make one using various math nodes and the envelope follower node, I'd have no idea how to approach it but.
Is there any starting point for this?
-
@Fortune said in Custom Compressor module in Scriptnode:
Is there any starting point for this?
I just tried some things and didn't get anywhere, sorry. If you know C++ you can always delve into the code of the actual node and see if you can identify and modify the knee there.
-
@iamlamprey said in Custom Compressor module in Scriptnode:
@Fortune said in Custom Compressor module in Scriptnode:
Is there any starting point for this?
I just tried some things and didn't get anywhere, sorry. If you know C++ you can always delve into the code of the actual node and see if you can identify and modify the knee there.
Do you know the location of the scriptnode compressor C++ file?
-
[HISEFOLDER]/hi_modules/nodes
I think the compressor files are DynamicsNode.cpp and DynamicsNode.h.
I'm seeing a
p.range.setSkewForCentre(50.0);
In the attack and release sections which might be what you're looking for, but honestly edit these at your own risk I'm just spitballing here
There's also a reference to chunkware_simple::SimpleComp which is found at
[HISEFOLDER]/hi_modules/effects/fx/chunkware_simple_dynamics which I'd also take a look at :)
Good luck!
-
You could also wait for the SNEX Workbench that was mentioned by Christoph recently, a lot of us DSP guys are hyped for that.
-
@iamlamprey said in Custom Compressor module in Scriptnode:
[HISEFOLDER]/hi_modules/nodes
I think the compressor files are DynamicsNode.cpp and DynamicsNode.h.
I'm seeing a
p.range.setSkewForCentre(50.0);
In the attack and release sections which might be what you're looking for, but honestly edit these at your own risk I'm just spitballing here
There's also a reference to chunkware_simple::SimpleComp which is found at
[HISEFOLDER]/hi_modules/effects/fx/chunkware_simple_dynamics which I'd also take a look at :)
Good luck!
I will check Thank you!
-
A skew factor is used to determine the center value of a knob, it has nothing to do with a knee… The stock comp seems to have a simple hard knee so it's not customizable, somewhat a very simple code. When above the threshold, it just multiply with the ratio. A simple ramp/saw test can show you the hard knee
-
@ustk said in Custom Compressor module in Scriptnode:
A skew factor is used to determine the center value of a knob, it has nothing to do with a knee… The stock comp seems to have a simple hard knee so it's not customizable, somewhat a very simple code. When above the threshold, it just multiply with the ratio. A simple ramp/saw test can show you the hard knee
I see that the Compressor module uses Simple Envelope too. Maybe the hard knee factor is directly related to this?
Also in SimpleComp.cpp file (line 70);
// simple compressor with RMS detection //------------------------------------------------------------- SimpleCompRms::SimpleCompRms() : ave_( 5.0 ) , aveOfSqrs_( DC_OFFSET ) { }
Might it be RMS detection smoothness value?
-
@Fortune RMS stands for Root Mean Square, it is a way to average the signal because you probably don't want the compressor to act on every samples that pass above the threshold. So you average it's envelope for a smoother response, nothing to do with the knee either. A knee factor is a way to have an variable ratio depending how much the signal exceeds the threshold. The RMS detection or average envelope smoothes out the compressor reaction, or makes it less erratic
-
@ustk Understood, thank you!
-
@Fortune When I first started, I did exactly what you are doing now. Look thru the code, figure out what everything does, then modify to suit your needs.
-
@dustbro I also did this only I also added in bricking my HISE multiple times :)
-
-
@dustbro said in Custom Compressor module in Scriptnode:
@Fortune When I first started, I did exactly what you are doing now. Look thru the code, figure out what everything does, then modify to suit your needs.
Do you prefer to use scriptnode comp or Hise's Dynamics FX unit (not scriptnode)?
-
@Fortune The source code is exactly the same for those 2 modules