I got this idea while studying how precision digital limiters work. Along the way, I found someone had already produced and patented this idea...
http://www.jbkaudio.com/DOSSIER%20PDF/Aphex%20PDF/720-722.pdf
But that doesn't mean we can't enjoy our own private implementations...
As they point out in their brochure, limiters tend to suffer from pumping and lifelessness when they kick in hard. Since the music is usually dominated by the bass, that region also tends to pull along the mid and high frequencies in conventional limiters.
By splitting the sound into 3 bands, low, mid, and high, and placing identical limiters on each subband, the bass is most likely to be limiting, while the other two are less likely.
However, limiting is just compression with a high ratio. It cannot prevent the output from climbing above its threshold level (!Limiter). So in addition to independent multiband limiting, we take the summed outputs from the limiters and compare against another user settable threshold (!Threshold). When the summed output climbs above that second threshold (which doesn't have to be the same as the Limiter thresholds!), we feed back a little of the error signal to the limiters, causing them to further reduce their own thresholds until the summed output is at or below that second threshold.
This tends to make the limiter sound more transparent, because while the limiters have their thresholds reduced by the feedback system, the bass is most likely the one to begin limiting, while the other two bands may not even be anywhere near their thresholds. This situation can reverse in some kinds of music. But at any rate, likely only one of the 3 bands is in need of limiting.
The version attached here works in stereo and uses the average peak detected output from both L and R to drive the system feedback. Otherwise you could end up destroying the stereo balance.
It uses a DSP sound of mine calle Log2Norm. If you don't want to use that you can use a wavetable instead. This Sound computes the log2(input)/32. It is related to the dB scale given as dB(signal)/192. (32 was chosen for ease of multiplication and division by use of a left or right shift.)
I have to say this sounds pretty good.
-- DavidMcClain - 25 Feb 2004
Now having played with this new limiter for a few hours, I'm realizing why it sounds so clean and natural... Many times when I'm using a broadband limiter, some single impulsive event strikes from out of nowhere and whamo, my volume level takes a nosedive for several seconds.
Those impulsive sounds are probably mostly high frequency stuff, but the bass carries the volume. Hence when that impulse takes everyone down, the volume drops quite noticeably.
Now with the multiband limiter those impulses take down just their portion of the spectrum, which is lightly populated anyway, and it leaves the mid-range and bass regions alone. Hence, you hardly even notice that the limiter just kicked in. This is abolutely terrific.
...By the way, I have reprogrammed the gains in the Limiters to behave more like conventional compressor/limiters which offer gain reduction, not amplification the way the Kyma compressors like to do. So here is that updated version...
-- DavidMcClain - 25 Feb 2004
Well, in an attempt to completely understand how this works, I realized what a total mess I had made of it. Oh, it works just fine, but sometimes my intuitive understanding of what to do gets completely in the way of being able to understand what I just did, and to be able to explain it to someone else...
So as an apology, the above link now points to cleaned up versions of this Sound. And since 3 bands are sooo good!, perhaps 5 bands would be even better, so there is such a version included.
The sounds now work entirely in terms of dB/192, instead of the former mixture of log2/32 and dB/192. The result is much more understandable. The default presets also have the settings I found that produce a good solid limit of -3 dBFS on output.
The way to understand this is as follows... First I arbitrarily said I wanted to limit each band at -6 dBFS (!Limiter = -6), with a compression ratio of 100. That is effectively a flat line on the gain.
But this never really happens. Instead, the energy is divided among equal relative bandwidth filters. The Q is constant. In the case of 3 bands, each one is 10:1 from high cutoff to low cutoff (about 3.3 octaves wide). In the case of 5 bands each one covers about 2 octaves. If the energy were coming from a PinkNoise? source, each band would have equal amounts of power flowing through it. And so the power per band is 1/3rd for 3 bands, and 1/5 for 5 bands. Those fractions work out to -9.5 dB (close enough to -10 dB) for the 3 bands, and -14 dB for the 5 bands. That means that whatever broadband signal strength you have on input, each band will have that much power less these factors.
So if the sound had a broadband intensity of -6 dB, then the 5 bands would each contain -20 dB of power. That would be the RMS level in each filter. Hence you can see how silly it is to set a limiting threshold of -6 dB in each band. The only way you could ever get that high is to have a super powerful sound source and enough wattage in your amps to handle it...
However, now we get to the purpose of the feedback control mechanism, which is quite effective here. You can see that I have !Threshold set to -36 dBFS, and !K = 0.33. That means that for every 3 dB above the -36 dB level, I feedback a request to lower the limiter thresholds by another 1 dB. [These numbers were just found by trial and error. There are probably a lot of others that would work as well.].
[try again... BatMan?! Sheesh!] The !Threshold applies to the broadband power, so when that power rises to -6 dBFS, that is 30 dB higher than !Threshold, and so for a K factor of 1/3, I will send back a request to lower the individual limiter thresholds by another 10 dB.
When you watch those little numerical readouts, what you are seeing are: RMS = broadband power estimate of the duration of !Release seconds, and !ThreshFdbk = the actual limiter thresholds being requested overall.
Now even at -6 dB total power, most of the energy will be contained in the lower bands for real music. A threshold in the bass limiters of -16 dB might actually be accomplishing something. But the highest frequency bands will likely never be even close to that threshold so they go through without any limiting. When a high frequency impulse finally causes one of those high bands to exceed the -16 dB limiter threshold, it will be pulled back with gain reduction, and the other bands will continue unaffected by its presence.
Whatever... it sure sounds sweet! The result is quite transparent as far as limiting action goes. I have yet to pump music through this and even notice any limiting action. Yet I know it is happening by watching the numerical readouts, and by the fact that the Capy DSP Status never climbs above -3 dBFS on output, no matter how intense the input sound gets. Quite effective really.
-- DavidMcClain - 26 Feb 2004
... more corrections to the sounds... new upload of Sound files. A bit more intuitive now.
-- DavidMcClain - 26 Feb 2004
Well I finally found some African music that has really sharp impulses, and these do knock the limiter out of breath... Super sharp impulses are so broadband that the multiple filters with independent limiters don't help there...
So I resorted to my other recent trick... (in the 5-band limiter only -- it sounds so much better than the 3-band and has about the same draw on DSP power).
Parallel PeakDetectors? with complementary e-folding time constants. The output of the filterbank mix is fed into one PeakDetector? with with an Attack of only 0.01 ms (10 microsec), and a release time of 20 ms. It is also fed to another Peak Detector with an attack time of 20 ms and a Release time that is up to the user (typically 1-3 seconds).
The idea here is that a sharp impulse gets through the PeakDetector? with the fast rise time to cause an immediate gain reduction. But this only lasts about 1/50th of a second (barely noticeable). The other PeakDetector? is barely fazed by the super short impulses and it just keeps trucking along at nearly its same value through the whole thing. Hence the limiter steps in to take care of the impulse and then immediately backs out until the music grows louder on average enough to make the slower PeakDetector? have some effect.
This works very well. What is complementary about these time constants is the release of the fast detector matches the attack of the slow detector. Hence, when added together, they ought to detect a step response as a step. The fast detector will emit a pulse with a short exponential decay, while the slow detector will exhibit a matching 1-exponential response (RC rise time curve). Their sum equals the square edge exactly.
No need to multiply each by 1/2 before combining, because as the slow detector comes alive the fast one is backing out. Their direct sum represents any step changes in the musical loudness profile. If the music is just level with sharp impulses, the fast detector does all the work, while the slow one maintains a level threshold.
Since this design is based on Kyma Compressors, with their own time constants, I chose to set the attack times to 10 ms and the release also adjustable by the user. That 10 ms is still long enough to prevent the limiter from locking up on a sharp impulse. But fast enough to feed the slower detectors some good information. I don't know if this is the best setting or not, but it seemed like the right idea...
-- DavidMcClain - 26 Feb 2004
Hi David,
I really love this Sound! Thank you very much!
The first version of the 3 bands dynamic limiter was great, enabling me to efficiently maximize recordings.
However, I was much more expecting of the and 3 and 5 bands version, and I must say I am disapointed. I think it lacks the input gain control, and more important, I find that there a lot of differences between the 3 and 5 bands versions, which is odd : there shouldn't be so much. More, the 5 bands dynamic limiter seem to scoop the mids much more than its 3 bands counterpart. I am going to investigate further in that question, but I don't really know where to start. Perhaps there is a problem with my microsounds, there are so much versions out there that I don't know which one is good for what, really ...
Oh, I almost forgot, did I say thank you for your sounds ?
-- CamilleTroillard - 23 Dec 2005