AUDACITY and Compander DBX 124 emulation

I would like to find a plugin for Audacity which decodes the magnetic tapes recorded decades ago in DBX II (DBX 124 device). I cannot do it myself because I did not find in Audacity how to control a compressor (ratio 2 in dB) with a control signal carried out by a sampling of the zone 50 at 10khz. This is the principle of DBX II (The professional DBX I with a control signal of 50 to 20khz).
The overall bandwidth of the device is from 20hz to 20khz. To complicate the problem, before processing the signal is pre-emphasized (same problem as the RIAA vinyl curve for treble and bass) then de-emphasized during playback.

Each operation is a delight for Audacity … but the chain of these operations simultaneously is blocking. For me.
I saw in the forum the compressor made by Chri’s (rejected, it is a ‘simple’ compressor to replace a linear compressor DBX 118) then a plugin which would be infected by a Trojan and whose link is broken. Nothing found more.
The 2 DBX II type 124 encoders / decoders that I used to record dozens of tapes in REVOX A77 are broken (the first one dates from 1977, capacitors are dead. Some capacitors are in critical locations (Tantalum).

After exchange, I must re-adjust everything (with important equipment). Not possible.
I stopped recording in analog as soon as the recordable CDs arrived (after an unfortunate interlude in DCC broken after 4 tapes!).
I absolutely need to rip all of my DBX II tapes before I too die of grief.
NOTE: Now I pay very close attention to my archives (APE, FLAC or other?). How many bits, what sampling speed and on what medium. The almost obsolete CD, the DVD with non-repairable ‘Fashion Victim’ recorders, USB keys and flash memories (max. 10 years and probably less).

For the moment I work in hard disk. Easy to transfer when there is a new technological leap.
I’m sure I’m not alone in my case. If you are aware of a Software solution, do not hesitate to post here.

By the way, DOLBY recordings on large reels (Type A and Type B) have the same problem but the decoders are easier to find.
As I am retired in France, I cannot have a paid and expensive solution.
I think Audacity is the ideal tool for such a realization. I do not feel capable of making such a plugin and I do not see an easy solution in commercial audio software.

The problems of vintage material do not concern them at all.
Until Audacity is a solution,

Thank you for your possible answers.
Envoyer des commentaires

Vintage DBX II model 124 Noise Reduction Systems are still available on ebay. Prices seem to be in the range $80 to $200. A genuine hardware device is the only way you will achieve “true” dbx decoding.

Some suggestions for approximating dbx decoding in Audacity:

dbx is a proprietary noise reduction system, and while some details are available, not enough details are available in the public domain to be able to reproduce the effect exactly (and an exact copy of the dbx decoder would probably infringe their patents).

This code, when run in the Nyquist Prompt effect ( will apply 2:1 dB expansion (though I’ve no idea how well this matches an actual DBX II 124):

;version 4
;type process
(defun dbexpand (sig)
  (let* ((env (snd-avg sig 441 441 OP-PEAK))
         (log-env (linear-to-db env))
         (xenv (db-to-linear (mult log-env 0.5))))
    (mult sig xenv)))

(if (= *sound-srate* 44100)
    (multichan-expand #'dbexpand *track*)
    "Error.\nTrack must have sample rate of 44100.")

This post gives some information about the pre-emphasis:

To reverse the pre-emphasis, use the “Filter Curve” effect:

WAV format is best during the production stage.
FLAC or WAV may be used for archive copies (or both). FLAC has advantages of smaller file size (usually around 40% smaller than WAV) and better support for metadata. WAV has the advantage of being supported by virtually all audio applications and devices.

Audacity works internally in 32-bit float format, so your tracks in Audacity should be 32-bit float.
On export, a normal 16-bit WAV, or 16-bit FLAC will be fine. Higher bit formats are less compatible, much bigger, and no better than 16-bit in this case.

The code I posted in my previous post requires the sample rate to be 44100 Hz.

Coincidentally the patent expires today … US4112254A - Signal compander system - Google Patents

What a coincidence :slight_smile:

Were you able to find more details about the expander (attack, release, hold, lookahead …)

On second reading it may have expired earlier than today :blush:

The patent just has the frequency-response curves & a schematic diagram …

Few years later… :stuck_out_tongue_winking_eye:
Maybe do you wanna try this?:

It’s playing very good samples posted on

“zero” level is 32767.0

void  Dbx2dec_f( float *_buf, int _nsamples, int _nch )
	static float  RPY[8]={0.0}, RDY[8]={0.0};
	static float  PDY[8]={0.0};

	float  X, RPX, RDX, VGCY, Y, PDX;

	float  *sx = _buf;

	int a=0;

	for( int nch=0; nch<_nch; nch++ )
		a = nch;

		for( int ns=0; ns<_nsamples; ns++ )
			X = sx[a];

				 // "RMS preemphasis"
				RPX = X*11;
				 RPY[nch] += ( 0.53 * (RPX-RPY[nch]) );
				 RDX = RPX-RPY[nch];	// highpass...
				RDX += (RPX*0.063);

				 // "RMS detector"
				if( RDX<0 )	RDX = -RDX;
				else			RDX = RDX;
				RDX = RDX*RDX;
				RDY[nch] += ( 0.000475 * (RDX-RDY[nch]) ); // (T = 30 ms)
				VGCY = sqrt(RDY[nch]);

			  // "VCA"
			 PDX = (float)( ((double)X*(double)VGCY) * 0.00015 );

			 // "Play Signal De-Emphasis"
			PDY[nch] += ( 0.047 * (PDX-PDY[nch]) );
			Y = PDY[nch] + (PDX*0.31);

			sx[a] = Y;

			a+= _nch;