Can I create an Lt-Rt mixdown in Audacity?

Can I create an Lt-Rt mix-down from 5.1 tracks in Audacity or do I need to purchase an expensive plugin? If it can be done, how do I set it up?


It’s not a pushbutton. You have to produce it. Each of the channels takes separate actions in order to end up with a pleasing stereo show.

You can generally leave FrontLeft and FrontRight alone with maybe a little of the two surround tracks mixed in depending on whether or not they carry any of the storyline (skulking, heavy breathing tigers, etc). Same with the Low Frequency Effects. Generally, you can either ignore that or mix it way down in the case that it’s carrying all the theater, such as thunderstorm, explosions or eruptions.

Most of the dialog is in the Center, so that will have to be mixed half-and-half to left and right. You’re probably not going to try to follow the actors around the screen. I don’t know anybody who does that.

All that and you have to make sure DialNorm doesn’t get in the way. You may find that the auto volume boost system in Dolby (DialNorm) will make it so you can’t ever get a good mix down with the same effects that the DVD has. Many people don’t miss that, however and many DVD creators don’t use it at all.

The Reader’s Digest version is mix the center voice to the left and right and throw everything else away. You can do that easily in Audacity.


I have NOT tried this… I don’t have a 5.1 test file handy…

But, I think [u]TAudioConverter[/u] can do it -

In the lower-right part of the TAudioConverter window, there is a button called “Filters”. Click that button.
In the Filters window, click “Enable”.
Then set Channels to “Stereo”. It’s probably a good idea to check “Normalize” also.

Normally, the LFE (the “point one” Low Frequency Effects channel) is not included in the mix-down. The other 5 channels contain the normal bass. For example, when you play a 5.1 DVD track on a 2-channel stereo system (or if you use the analog stereo jacks on the DVD player) the 5 full-range channels are included in the stereo mix, but the LFE is not.

However on most home theater setups, “bass management” is configured so that all of the normal deep bass from the 5 surround channels (or from two stereo channels) is mixed with the LFE and routed to the subwoofer.

Thanks I’ll check out TAudioConverter. Lt-Rt isn’t as simple as folding the channels together. For proper Dolby decoding you must put certain channels out of phase so the decoder can extract proper L-R-C-Ls-Rs from a 2-chan source.

You can create L-C-R with the following tool:
Load your stereo file and duplicate it.
Use “Remove center” on the first track, this gives the left and right channel.
Use “Isolate Center” on the second track, this gives 2 x C.
You can split to mono and delete one channel.
If you create additionally a pure bass track, you’ll have a 3.1 configuration.
I haven’t ready in mind, where the bass is taken from, this would need some more insight into the codec.
There’s sometimes a 90 degrees phase shift introduced, mainly to encode the rear channels.

The previous post was actually the inverse of what you want.
To quote Wikipedia:

Lt/Rt is a downmix suitable for decoding with a Dolby Pro Logic upmixer to obtain 5.1 channels again. Lt/Rt is also suitable for stereophonic sound playback on a hi-fi or on headphones as it is.
Lt = L + -3dB*C + -3dB*(-Ls -Rs)
Rt = R + -3dB*C + -3dB*(Ls + Rs)
(where Ls and Rs are phase shifted 90°)[1]

The 90 degrees phase shift is the tricky part (180 degrees is easy, it’s a multiplication by -1).
We would need a Hilbert filter for this purpose.

For proper Dolby decoding you must put certain channels out of phase so the decoder can extract proper L-R-C-Ls-Rs from a 2-chan source.

See, your original posting said nothing about creating a Dolby Encoded stereo signal.

It throws us when you do that.


I didn’t say I wanted a Dolby encoded signal…it’s analog stereo folded into Lt-Rt. When a decoder (maybe not Dolby) on the DVD player or TV sees the signal it separates the channels into a version of it’s original multichannel state. yes, it has something to do with phase, as is stated above. I just don;t know how to take my 5.1 channels and create that signal without using an expensive pro tools plugin. Was hoping there was a freeware encoder available.

Lt-Rt isn’t as simple as folding the channels together. For proper Dolby decoding you must put certain channels out of phase so the decoder can extract proper L-R-C-Ls-Rs from a 2-chan source.

Yeah… I thought you wanted stereo. You didn’t say you wanted a Dolby Surround or Dolby Pro Logic encoder.

I’m not sure why you’d want to degrade digital 5.1 to the “old analog” matrix surround… Anyone with a modern 5.1 setup should be able to play true 5.1 (from a DVD or Blu-Ray).

It’s not so simple, and you cannot do it “automatically”. With Pro Logic you don’t have 5 or 6 separate channels. You are “steering” the sound, and it’s not perfect when you have different sounds coming from different directions at the same time. So when mixing (or downmixing) you have to do the panning manually while monitoring through a Dolby decoder to make sure everything is actually steering/panning reasonably. There used to be an instruction guide on the Dolby website, but I don’t know if it’s still there.

Last time I looked… Several years ago… I couldn’t find a cheap (or free) Pro Logic encoder. Also several years ago, I played-around with phase-inversion “tricks” to steer the sound to the rear channels. It worked, but I never tried it with any “real” program material (like a movie soundtrack).

For “playing around” purposes, you don’t actually need the +90 and -90 degree Hilbert transforms… You just need a 180 degree relative difference between the two channels, and the decoder will be happy! I’ve done it and it works! You can do that with Audacity or any audio editor.

The only time the 180 degree “trick” will cause trouble is if you start panning between front and rear (like an airplane flying over from front to back), or if you try to pan around in a circle, etc. The 90 degree phase shifts are relative to the front channels. As long as the front-channel sounds and rear-channel sounds are completely different, there is no phase relationship between the front & rear, so it doesn’t matter.

If you take a mono track and copy it to a stereo track with one channel inverted (180 degrees out of phase), the sound will come out of both rear speakers equally (and the two rear channels will be acoustically in-phase because the “reverse” Hilbert filter in the dolby decoder is shifting one channel by +90, and the other channel by -90, which un-does the phase inversion).

If you “pan” that out-of-phase track partially-right (you’ll have to check the specs, but I think you need about a 4-6 dB difference) the sound will come out of the right-rear. (The opposite for left-rear, of course).

If you pan full-left or full-right (with silence in the other channel) the sound will be steered to that front channel. (In this case, with one channel silent, the phase-difference doesn’t matter.)

If you take a mono track and copy it into a stereo track in-phase (the normal way) the sound will come out of the center speaker.

Something along this line:
However, the mixing instructions from the Wikipedia article (see my previous post) are essentially enough.

Also worth noting that much of the “phase relationship” stuff goes out of the window when playing through domestic hi-fi equipment in a living room (non-ideal acoustic environment). You should be able to achieve pretty good results just mixing by ear, and inverting the side channels if it sounds better,

I’ve presently written some Hilbert stuff and applied to a simple chirp (dual mono).
After shifting the right channel by 90 degrees, the left channel disappears (although the amplitude is actually equal).
The Hilbert transform is made up by 2 x 4 Biquad filters (as allpass).
The problem is that I’ve got no tool to measure the actual phase response…
(It might be worthwhile implementing a phase spectrum option in the Plot Spectrum tool)

(defun hilbert (vector)
  (let* ((h1 (aref vector 0)) (h2 (aref vector 1)) 
         (coeffs1 '(0.6923878 0.9360654322959 0.9882295226860                  0.9987488452737)) 
         (coeffs2 (list 0.4021921162426 0.8561710882420                  0.9722909545651 0.9952884791278))
         (delay (snd-from-array 0 *sound-srate* #(0)))
   (dotimes (i 4 (vector (seq delay h1) (seq h2 delay)))
      (setf arg (expt (nth i coeffs1) 2.0))
      (setf h1 (biquad h1 arg 0 -1 1 0 arg))
      (setf arg (expt (nth i coeffs2) 2.0))
      (setf h2 (biquad h2 arg 0 -1 1 0 arg)))))
(hilbert s)

absolute no warranty granted but presumably a lot of errors…