Quick Sign In:  

Forum: VirtualDJ Plugins

Topic: "Level Translator" - aka "Linear Compressor" - coming soon...

This topic is old and might contain outdated or incorrect information.

TexZKPRO InfinityMember since 2005
I'm doing a graphical "Level Translator", which is just a "Compressor" with linear scale (0.0 to 1.0) instead of decibels. Maybe in the future I'll change the scale, but it's the same. I'm not adding attack/release for now, but I hope to add them, as they aren't so easy to program, but I think some tricks in my crazy brain will help me. Stay tuned! I'm mad enough to use this skeleton to make a compressor ;-D
 

Posted Tue 18 Jul 06 @ 2:38 pm
pernPRO InfinityMember since 2004
For sound, in general it's more useful with a really good peak limiter where you have control over threshold, ADSR-values etc than a linear compressor. Linear compressor/expanders is/was more used in noise reduction systems etc, like DBX before.

And for really pro use, multiband HQ limiters are really great to have, with 3-5 bands. Also add AGC and EQ - That is the base in all PRO Radio Stations sound processing chain.
 

Posted Wed 19 Jul 06 @ 7:37 am
TexZKPRO InfinityMember since 2005
Thanks Pern for your suggestions! By the way, with "linear" I mean I'm now working with decibels, but with a linear floating-point scale, because I don't know how to convert linear scale (values passed by VDJ) into decibels. I know it's logarythmic, but I don't know the formula. I've searched over the Net, but there are only physical formulas, not how to convert WAVE data into decibels. In fact, I can see my compressor (alpha version) only works in the lower-left corner, where decibels will be "shifted" to the center of the graph instead.
As for bands, it supports up to 16 "knees", but I can add more ones... just change a literal in the source code. Everything is graphical: if you click with the left button, you'll add or move a "knee", and if you click with the right button on a "knee", you'll remove it. You can't move horizontally the first and the last knee, and you can't remove them (you need them).
If someone could help me, it will be very appreciated, because many people asked for a compressor. I only need the formula, I'll do the rest by myself. When it will be a "compressor", I'll add post gain (pre-gain is the gain already available on the skin) and attack/release after the dB formula is put the right way.
 

Posted Wed 19 Jul 06 @ 11:20 am
pernPRO InfinityMember since 2004
db = 20 * log10( level / maxLevel)

or

Xdb = 20 * Log(10) (X / X0)

Where X0 is the reference value and X the value to convert.
 

Posted Wed 19 Jul 06 @ 12:04 pm
pernPRO InfinityMember since 2004
What most people that wan't a compressor "really wants" is a AGC + peak limiter. A compressor by definition comress the sound in a fixed ratio, 2:1 , 4:1, 20:1 etc. In a 2:1 senario everything that is at -40 db will be transformed to - 20 db etc. What this does is that it also "compress" noise and other unwanted stuff. This will also limit the dynamic range of the sound with the same ratio.

So to be able to play "louder" etc you need a gated AGC that doesn't respond on noice etc and then a good Peak limiter. On pro equipment you almost also work with 5 "bands", more than that doesn't really add anything.
 

Posted Wed 19 Jul 06 @ 12:29 pm
pernPRO InfinityMember since 2004
Also, the main reason for using multiband compressors/limiters is that you want to create a very dense unique "sound", this is common in high-energy radio stations etc. They want to create a sound that "jumps" out of the speaker. Also to add a little extra you can add a MS-Matrix functionality to it.

So, is the reason for using it just to "fix" the levels or to create a cool sound ? The way you solve it depends on this .
 

Posted Wed 19 Jul 06 @ 1:20 pm
TexZKPRO InfinityMember since 2005
Again: it is a GRAPHICAL compressor. It's like the "color correction" tool included in some image editing softwares: you can add as many knees you want, and move them around. You won't see the compression ratio: you'll see a line with many knees. I'll send you the alpha version when I meet you on M$N, yous suggestion have always been very much appreciated.
Is there a way to avoid the "log()" function of "math.h"? It's very slow. Maybe with "M_LN10", but I'm not very good with logs...

O.T.: when you have time, please help me with the controller project.
 

Posted Wed 19 Jul 06 @ 4:14 pm


(Old topics and forums are automatically closed)