A Method For Decoding dbx Noise Reduction Using Standard Plugins
by Bob Weitz - October, 2013

I recently had to transfer some of my old tapes into Pro Tools, and realized I had used dbx noise reduction on some of them, mostly the 1/2-inch 8-track stuff from the '80s. A quick Google search revealed that many people have had the same question that came to my mind, "Is there a way to decode dbx NR in software, such as a plugin?" The discussions on many audio forums were interesting, even entertaining, but full of misconceptions and downright nonsense.

The answer is, no one has marketed such a plugin. There would likely be licensing issues and the market would probably be too small to be worth the bother and expense of developing software and bringing it to market. But, it CAN be done from a technical standpoint. You just have to understand what dbx noise reduction is, and how it works, to properly decode it.

The place to start is the owner's manuals of two dbx products from the '70s (models 122 and 150) that explain the process in surprising detail. The dbx company published block diagrams with important information needed to allow us to decode our audio. I have included some here. The manuals make no mention of the attack and release times of the expander. These had to be determined experimentally.

Some audio people old enough to have worked with analog tape can tell you that dbx noise reduction is a companding process, wherein the audio going to the recorder is compressed at a 2:1 ratio, and expanded at a 1:2 ratio upon playback. This is indeed correct, but it isn't the whole story. There are also a few equalization and filter curves to deal with, some in the audio path and some in the control path (the signal fed to the level detector that controls the gain of the compressing or expanding element, the VCA). Also, the attack and release characteristics of the expander, as well as the method of level detection are important. Moreover, there are two different versions of dbx NR, Type I and Type II. They are similar, but not the same, and further, Type II also has a Disk variation for playing the rare dbx encoded LPs. The differences are all in the equalization curves.

The tapes that I wanted to transfer were encoded with dbx Type I, which was designed for professional and semi professional equipment capable of fairly flat and extended frequency response and reasonable dynamic range. The only hardware dbx unit that I still have is a Type II unit, that was designed for consumer equipment with its limited frequency response and dynamic range. The two types are not compatible, but I was able to borrow a Type I unit for my tests to develop my plugin method. I encoded some test signals of various sine wave frequencies and bursts, as well as a frequency sweep. I also encoded some audio samples. This way, I could compare the original signals with my decode attempts, and compare the hardware decode of the unencoded test signals to check my transfer functions. The published curves proved to be very useful, with only minor tweeking of my EQ settings needed to match the decode. I was also able to use the tone bursts to analyze the encoder and decoder attack / release times and set my expander to get as close as possible.

Here's How to Do It

You only need two plugins to do the job: an equalizer and an expander. The equalizer must have enough bands and filters to recreate the necessary control and de- emphasis curves (parametric seems to work better than graphic). You will need two instances of the equalizer, one for the audio path and one for the "control" path that feeds the "key" input of the expander. The expander must have a 1:2 ratio, a "key" input, and variable attack / release times. I found workable plugins included in Pro Tools: "EQ 3 7-Band" and "Expander/Gate Dyn 3". The "Waves C1 Gate" works very well as the expander, with the added benefit of having variable output gain.

After you have transferred your audio to the DAW, create two aux tracks (decode and control) and one audio track (to record the decoded audio). assign the original encoded audio track to bus 1. One aux track will be used to decode the dbx noise reduction, its input is sourced from bus 1 (the encoded audio). Insert the expander into this track, followed by an EQ set to the "dbx DeEmph EQ (Type I or Type II, depending on source material). The output of this decode aux track should be assigned to bus 3, that feeds the blank audio track to record the decoded audio. The other aux track will be used for controlling the expander, its input is sourced from bus 1 (the encoded audio). Insert an EQ into this control aux track and set its curve for "dbx Control EQ" (Type I or Type II, depending on source material). The output of this track should be assigned to bus 2, that feeds the expander key input.

Of course, you don't have to do this in real time. You can process the tracks as follows: Duplicate the encoded material so that you have two identical tracks. One will be used as the control signal, so process it with the contole EQ. Process the other (audio decode) track with the expander, keyed by the EQ'd control track. Then process the audio decode track with the DeEmphasis EQ. You may also have to add some gain to bring it up to a decent level.

If you are decoding stereo tracks, it's OK to do the EQ processing in stereo. This simply applies the same EQ curve to both channels. It's important to ensure that the expander does not have stereo linking, we don't want the control signal from one channel to affect the expansion of the other. I advise splitting everything to mono tracks, decoding, then putting the stereo pairs back together.

Here are a few caveats:

If you look at the Companding Chart, you'll notice that the dbx expander works upward above 0dB and works downward below 0dB. 0dB is the nominal analog operating level, zero on the VU meter, and is usually about 15 dB below tape distortion (saturation). In our digital world, 0dBFS is maximum signal, above which is clipping distortion. The expander in this example works only downward from 0dBFS. This results in a rather low output signal, which is why I've included a "Trim" plugin, to raise the output of the decode channel. You'll also notice added gain in the Post Emphasis EQ. This means that we are not getting all the resolution possible. None the less, the audible results have been quite satisfactory.

The expander does not exactly match the attack / release curves of the analog dbx hardware. The original analog circuitry seems to have a capacitive charge / discharge curve that the digital expander doesn't have. The settings I have arrived at are as close as possible. The Waves C1 gate was able to match slightly better, and didn't need the additional trim plug.

I have no information about the level detector algorithm inside the expanders. To match the dbx system, it would need to be a true RMS detector. My dynamic experiments suggest that both expanders seem to be tracking levels quite well. Perhaps they are RMS detectors... (or close enough).

If you are going to decode dbx encoded discs (LPs), use the Type II settings, but roll of an additional 3 dB at 20 hz in the Control EQ. This was done for discs to eliminate low frequency control tracking errors from warped discs or rumble.

More details

I have included some screen shots of the test signals that I used to develop this method. The top track (blue) contains the generated test signals, 2 second bursts of the standard ISO one-octave frequencies from 32 hz to 16 khz at -20 dB, 1 khz from -50 dB to -10 dB in 5 dB increments, 1 khz and 10 khz alternating between -30 dB and -10 dB, and a 20 hz to 20 khz sweep at -20 dB. The next track (purple) contains test tones encoded through a dbx encoder. The third track (red) contains the same set of tones decoded through a dbx decoder. The fourth track (green) contains the same set of tones decoded with my plug ins. The fifth track (yellow) contains the the tone from the dbx encoded track as decoded by the dbx unit. The last track (lavender) contains the dbx encoded tones as decoded by my plug ins.

You can see that the level and frequency response tracking is quite good. The attack/release charactersitics are relatively good, but don't match perfectly. This represents the best compromise attainable with the available plug ins. Listening tests have convinced me that this is quite effective overall, and could be considered acceptable for all but the most critical applications.

Audio Tones and Samples

You can download my test tones and some cool audio samples here.

Try it, don't be afraid to adjust the levels of the channels and plugins. dbx is not level dependent, it's linear companding, level shifts do not cause mistracking. Mainly, avoid clipping in all channels and plugins. Of course, you could just go out and look for a used dbx unit, but where's the fun in that? Besides, who wants to buy old tired gear that you'll only use once in a blue moon?

This has been an interesting excersize, and quite educational. I hope you find it likewise. If you have questions or comments, you can contact me here.