|
|||||||
![]() |
|
|
Thread Tools |
|
|
#1 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
New: Compressor plugin
I am not sure what has become of eYagos, and I found myself in need of a lightweight compressor in 3538m (the APS Compressor does not seem (to me) to work quite right), so I took the APS Compressor and modified it in such a way that it works more like I expect it to. It used the same GUI, but I changed the way the parameters are calculated (in part because I do not understand the calculations that the APS Compressor uses (i.e. they look to be reverse engineered using a debugger rather than using some common formula)), and I modified the microcode in such a way that makes more sense to me (in order for it to work the way I expect it to, etc). In any case, I thought I would share it. You can download the plugin from here.
-Russ Last edited by Russ; Nov 9, 2009 at 06:33 PM. |
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
Since different compressors work a little differently, (and without knowing how a particulair compressor works makes it difficult to use) I thought I should add some basic info as to how this one works.
For the most part, this compressor does not apply any gain to signal levels below the threshold, with the exception of the output gain. Also, you should think of the output gain as being seperate from the compressor (i.e. it is like a GainHQ connected to the output of the compressor), such that it applies a constant gain to the output. With the above in mind, the controls work as follows: Attack: This determines how fast the compressor turns on (i.e. how fast it responds to in increase in level). Release: This determines how fast the compressor turns off (i.e. how fast it responds to a decrease in level). The above may sound simple enough, but the effects of different attack/release times are hard to explain, so rather than trying to fully explain it, I would suggest looking up that info on the internet, where you should be able to find a better explanation than what I can offer. Output Gain: This determines the amount of gain that is applied to the output of the compressor. [ a suggestion for (the starting value) setting Output Gain = (1/Ratio * abs(Threshold) - abs(Threshold)) /2 (you might want more gain with faster attack times) ] Threshold: This determines the level at which the compressor starts compressing. i.e. Signal levels above this level are compressed (reduced) by an amount determined by the Ratio setting. Ratio: This determines how the signal is compressed when it goes above the Threshold level. The setting is the amount the level must go above the Threshold level, in order to increase in gain by 1 dB. i.e. With a Ratio setting of 2, the level (out of the compressor) goes up by 1 dB, for every 2 dB that the signal level is over threshold. So if the level is 10 dB over the Threshold value, it is reduced in gain by 5 dB (thus it is 5 dB above the threshold value). PreDelay: This determines how much the input is delayed and can be used to help offset the attack delays. Here are some graphs (input -vs- output) to help show the effect of different Ratio settings, and how Output Gain is applied (with a input level ranging from -60 dB to +12 dB). BTW: The graphs depict an Attack setting of 0 (must be 0 for hard limiting). Threshold -20 dB, Ratio 2:1 Threshold -20 dB, Ratio 5:1 Threshold -20 dB, Ratio 100:1 BTW: It should be noted that the slopes do not continue to rise past the end (top and right sides) of the graphs (i.e. +12 dB is the max possible input value, anything above that is clipped/saturates (so the lines end (max values) where they would end in the DSP)). Again, this is modeled after how I think the APS Compressor is supposed to work, and offers no extra functionality beyond that. -Russ Last edited by Russ; Feb 18, 2011 at 01:06 PM. |
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
I see that some people still use the APS Compressor, and it seems that they are unaware of the issues with it, so I am curious as to how people are determining what settings to use. For this reason I thought I would list some of the issues that I noticed (some of them are due to the fact that it was not written specifically for kX), and how it differs from this version:
APS Compressor: It should be used with a x4 plugin before it's inputs, and a div4 plugin at the output (in all of the DSP screenshots that I have seen (that I can recall anyway) that include the APS Compressor, the x4/div4 plugins are not included (so again, I wonder how people determine what settings to use)).This version: No need for x4/div4 plugins (this saves 4 GPRs).Other than the above, they should be very similair. i.e. Screenshot (using default settings) -Russ Last edited by Russ; Mar 25, 2007 at 01:44 PM. |
|
|
|
|
|
#4 |
|
HardwareHeaven Senior Member
Join Date: Mar 2003
Location: Montevideo, MN USA
Posts: 973
Rep Power: 0 ![]() |
I did not know about the X4 and div4 required before and after the APS compressor. I will have to reinstall 3538m on my other computer and give your compressor a run.
Thanks |
|
|
|
|
|
#5 |
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62 ![]() ![]() ![]() ![]() |
>>An Attack setting of 0 is 0 (again, necessary for full limiting).
I haven't treid your compressor but I'm curious/puzzled about the above statement. If attack is truly 0 (as in 0 msec) and ratio set high, then you will get hard clipping(distortion) instead of limiting. Limiting (in compressor context) is; output signal does not exeed threshold but without clipping/distortion Just some thoughts. |
|
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
In any case, I noticed that I can get rid of 2 instructions, and I am considering adding a mono version, so I will probably add an update when I have the chance. |
|
|
|
|
|
|
#7 |
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
A mono version would be great!
|
|
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
i.e. Try this with the APS Compressor (do not forget x4/div4 plugins). Attack: 0. Threshold: -36. Ratio: 100. Feed it a signal of 0 dB from the Wave Generator (same signal to both inputs). Mute/unmute the WaveGen plugin a few times to simulate quick changes in level and you will see spikes that reach to approx. -12.1 dB, which is 23.9 dB over the threshold. The above is not an unrealistic situation. i.e. I use it often as a compressor and full limiter for late night TV watching (connected to Line In), and without an attack of true 0, I would get quick loud bursts that were unacceptable to me. There may be some distortion, but I really have not noticed noticed anything with my TV tests (but I do not have exactly high quality speakers). Additionally, no-one has to use an attack setting of zero. In any case, thanks for the feedback, it is always appreciated. -Russ |
|
|
|
|
|
|
#9 | |
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62 ![]() ![]() ![]() ![]() |
Quote:
The better compressors designs compensate for this. (i.e; use a feedforward topology with lookahead) Anyway, attack 0 produces distortion and is as such (in most cases) undesirable/useless. Sure, the release will prevent some of the distortion, but not all. Usualy there's this crispy little fuzz tone superposed onto the signal if attack is truly 0. EDIT: Also note that minimum Attack time is quite dependant on Low Freq. content. Much LF content needs longer attack time. EDIT2: Lol, yes I guess in your example with that TV signal it doesnt matter if signal distorts a bit. On the other hand, I can't believe that a simple feedforward compressor with ~2msec attack time produces peaks that makes you 'jump out of your chair'
Last edited by Lex Nahumury; Mar 25, 2007 at 08:47 PM. |
|
|
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
Yes, I understand that (actually I have read an article from the Dolby website about Dolby Noise Reduction, which gives some good details about such things), but again, for late night TV watching, for me, keeping the vocals at an audible volume, while preventing *any* volume spikes is more important, and again, people can use whatever setting they want to.
Quote:
![]() <edit> BTW: The other thing is that I use the output_gain to boost the lower end, and it also boosts the spikes (making them even louder). </edit> Last edited by Russ; Mar 25, 2007 at 09:06 PM. |
|
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
I updated the plugin and added the mono version (will show as Compressor (m) on the plugin list).
-Russ |
|
|
|
|
|
#12 |
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
|
|
|
|
|
|
#13 |
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
edit: nevermind, it was the release time that was set too low... Working great. Thanks, Russ!
Last edited by JGSF; Mar 30, 2007 at 01:53 AM. |
|
|
|
|
|
#14 |
|
DriverHeaven Newbie
Join Date: Apr 2007
Posts: 14
Rep Power: 0 ![]() |
Hello,
I believe I might be noticing a bug in the stereo version of this compresser. I'm using a SB0610 10k2 card with kX project 3538m. Using the ProFX plugins, I've connected some music piping through Winamp through the APS Compresser+ as well as the Compressor from this thread. I've connected oscilliscopes to the outputs of each compresser and I'm noticing something strange. The output of the Compressor from this thread randomly jumps up all the way to the top of the oscilliscope. The APS Compressor+ does not do this. When I hook up the output of this compressor to some speakers, they sound quite well, so this might just be a bug with oscilliscoping the compressed output? Does anyone else notice this? Thanks! -guyinco6nito |
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
Did you use the 'x4' and 'div4' plugins with APS Compressor when you were testing?
|
|
|
|
|
|
#16 |
|
DriverHeaven Newbie
Join Date: Apr 2007
Posts: 14
Rep Power: 0 ![]() |
No, I did not use them.
I had figured if someone was going to make a plugin, they would include everything that plugin needs. How wrong I was. :-) I'll read though this thread and make sure I'm using the plugins correctly, and see if I can't emulate the wierd spikes I'm noticing when using the APS compressor properly. Thanks! -guyinco6nito |
|
|
|
|
|
|
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,503
Rep Power: 60 ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
|
![]() |
| Bookmarks |
| Thread Tools | |
|
|