View Full Version : Creating a 5.1 audio from a 2.0 Surround
ernnnn
16th March 2024, 23:34
Hi!
I'm trying to "create" a 5.1 audio from a 2.0 surround. I've tried three different methods.
1. Using the 2 wavs to complete the rest of channels. Not a good idea as you hear the voices on the rear speakers, being "weird".
2. Upmixing with, for example, BeHappy, but the result is also not "ideal".
3. Using the channels from the English track to complete the missing channels on the Spanish 2.0. The problem is, even low, you can still listen to the conversation in English on the rears at the same time as the Spanish voices on the front. I've tried ilencing those parts with voices, but apart from being a very tricky procedure, there is always something there I didn't notice.
Any ideas?
Thanks in advance!
Guest
17th March 2024, 00:52
Hi!
I'm trying to "create" a 5.1 audio from a 2.0 surround.
Any ideas?
Thanks in advance!
You could try this:-
https://forum.doom9.org/showthread.php?p=1905666#post1905666
I've used this for some strange audio conversions, seems to work just fine.
manolito
17th March 2024, 02:51
@FTLOY
The link in your post is incorrect, please fix it...
@ernnnn
You are talking about "Pseudo" surround target files, right? And you hopefully know the limitations of this method. Having said this, about 10 years ago I make an AviSynth script for AVStoDVD heavily based on Tebasuna's work to create such "Pseudo" surround files from stereo input files.
If you are familiar with AviSynth it should be easy to use this script...
Upmix.avsi
# Upmix Library: increase number of audio channels by smart mixing
# Written by tebasuna51 and manolito (http://forum.doom9.org/showthread.php?p=1733767#post1733767) (August 2015)
# Updated by MrC (September 2015)
function UmixMonoStereo(clip a)
{
l = GetChannels(a, 1)
r = GetChannels(a, 1)
return MergeChannels(l, r)
}
function UmixStereoPseudo4(clip a)
{
sl = MixAudio(GetLeftChannel(a), GetRightChannel(a), 0.473, -0.473) # max 0.5 to avoid clip
sr = MixAudio(GetRightChannel(a), GetLeftChannel(a), 0.473, -0.473)
sl = DelayAudio(sl, 0.02)
sr = DelayAudio(sr, 0.02)
return MergeChannels(a, sl, sr)
}
function UmixStereoPseudo5(clip a, bool "NormalizeSurround")
{
NormalizeSurround = default(NormalizeSurround, false)
cc = Amplify(GetLeftChannel(a), 0)
sl = MixAudio(GetLeftChannel(a), GetRightChannel(a), 0.473, -0.473) # max 0.5 to avoid clip
sr = MixAudio(GetRightChannel(a), GetLeftChannel(a), 0.473, -0.473)
sl = DelayAudio(sl, 0.02)
sr = DelayAudio(sr, 0.02)
surr = MergeChannels(sl, sr)
surr = (NormalizeSurround == false) ? surr : surr.Normalize(0.8)
return MergeChannels(a, cc, surr)
}
function UmixStereoPseudo6(clip a, bool "NormalizeSurround")
{
NormalizeSurround = default(NormalizeSurround, false)
c_lfe = Amplify(a, 0)
sl = MixAudio(GetLeftChannel(a), GetRightChannel(a), 0.473, -0.473) # max 0.5 to avoid clip
sr = MixAudio(GetRightChannel(a), GetLeftChannel(a), 0.473, -0.473)
sl = DelayAudio(sl, 0.02)
sr = DelayAudio(sr, 0.02)
surr = MergeChannels(sl, sr)
surr = (NormalizeSurround == false) ? surr : surr.Normalize(0.8)
return MergeChannels(a, c_lfe, surr)
}
I am sure that Tebasuna has better ideas for this funktionality these days, but for me these functions have always worked well.
Good luck
manolito
Guest
17th March 2024, 06:15
@FTLOY
The link in your post is incorrect, please fix it...
manolito
Fixed, thanks :)
tormento
17th March 2024, 09:55
I'm trying to "create" a 5.1 audio from a 2.0 surround. I've tried three different methods.
I asked the very same question some time ago and the answer was to use a foobar plugin. Dig in the subforum and you will find it.
tebasuna51
17th March 2024, 10:57
I don't know news about that.
There are some people in spanish webs than use the full english track, and replace all the dialogs with the dialogs in the spanish stereo track.
But it is a hard work and not always it is perfect.
My recommendation is let the stereo track at is and use functions in the 5.1 audio player to use the full channels. There are many effects to try and maybe one of them...
But if you want do the conversion you can try AviSynth methods, with many variants about mix and filter channels, like Manolito say or I put in BeHappy.
Also ffmpeg have some options (I suposse included in FTLOY link)
Also I try some methods in Sticky: GUIDE LIST: Stereo-to-Surround Conversion Guides (https://forum.doom9.org/showthread.php?t=83752), I can recommend V.I. Converting stereo to 5.1 surround for FREE (https://forum.doom9.org/showthread.php?p=1640451#post1640451)
To convert a 2.0 to 5.1 we need do the next operations:
1) Extract the common parts of FL-FR channels and send it to FC' channel
2) Delete the common parts from FL-FR channels to new FL'-FR'
3) Create a SL', SR' with a mix (coeficients?) of FL'-FR', delayed and maybe low filtered to cancel the rest of voices.
4) Create a empty LFE' always. A 5.1 equipment always extract the low frequencies from all channels to subwoofer, don't try to do this yourself.
Sometimes I try do the 1) and 2) steps with CenterCutCL (https://forum.doom9.org/showthread.php?p=1733941#post1733941)
And after obtain the SL'-SR' with mix-delay-filter, but I can't recommend one exact setting, try yourself.
EDIT: Like Tormento say if the 2.0 was created with a Dolby ProLogic Surround downmix there are a method with Foobar2000, but the spanish tracks from movies are standard 2.0 without Dolby ProLogic downmix.
If your track is a 2.0 DPL let the AVR 5.1 do the upmix, all have a DPL decoder.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.