Warning: When using compressors in Traditional Peak mode, this version has a much higher CPU load, because I've added some extra features for testing. If they are useful I'll optimize them.
Windows stand alone:
http://www.stereotool.com/download/ster ... 32-014.exe
Winamp DSP:
http://www.stereotool.com/download/dsp_ ... 32-014.exe
Windows VST:
http://www.stereotool.com/download/vst_ ... 32-014.dll
I've made the new Traditional Peak and brand new Traditional RMS mode more configurable. That's the only change compared to 012, so if you're not planning to experiment with that just don't download this version.
New settings are:
Traditional RMS mode:
RMS block size (only for Traditional RMS mode) -> bigger values means less precise timing of attack/release behavior, but also less effect from low frequencies (less pumping).
Traditional Peak mode:
- Base smoothing
- Smoothing bass sensitivity
In a compressor we have 2 things: An 'envelope', basically a line that follows the audio level, and the compressor behavior itself. If the level drops a lot, release is faster - and this is based on the envelope. Now, if the envelope just follows sample levels, then there will be a lot of near-0 values (just when a waveform crosses 0) which would cause infinitely fast release behavior. The envelope line needs to be made such that this doesn't happen.
So, say we have a peak at level 1000 (sample value). Then I multiply that by .995 (default 'Base smoothing' value) and the next and previous peak value cannot be lower than that. So, say we get 1000, 0 then I replace it by 1000, 995. That may seem to be a lot, but after 1 ms (44 samples at 44.1 kHz), you're already down to 802. At 4 ms we're at 414. at 8 at 171 etc.
That works fine for high frequencies. But if you take a bass, the sample values are dropping slowly (potentially slower than what this .995 does) and in the valleys the level will still approach 0. Which still causes issues with release behavior.
Because of that, there's some code that measures DC offset and increases the .995 base smoothing value to something close to 1 when there's more DC offset present. The second value, 'smoothing bass sensitivity', controls how big the area is that's considered for DC measurement (closer to 1 = bigger area). What we are actually measuring here is DC offset in a specific direction divided by total (absolute) power.
A lower value of Smoothing bass sensitivity means that DC offset is determined over a smaller period - so higher bass freqs are more ignored.
What remains is determining how strongly the bass affects the release behavior. That's what 'Bass power' does - setting it higher means more release slowdown when we see bass.
Note: If you use this for a single multiband band, then you need less of this because there are less other frequencies that hinder bass detection.
Some final remarks:
Current Traditional Peak values are calibrated to get close to the current Peak mode behavior - which does NOT mean that that's the best possible behavior!
Traditional RMS differs a lot from the current RMS mode, I don't know if it's better but I think it is (waveform that comes out looks much smoother, although there's also more bass pumping but that's normal for RMS mode, also in other compressors).