Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > General > Audio encoding

Reply
 
Thread Tools Search this Thread Display Modes
Old 14th February 2006, 12:23   #81  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by grokwik
I have noticed that nero aac encode works with or without neroipp.dll without any difference. Is this dll really necessary ?
It's really necessary if you does not have Nero installed
dimzon is offline   Reply With Quote
Old 14th February 2006, 19:44   #82  |  Link
JoeBG
stupid
 
JoeBG's Avatar
 
Join Date: Sep 2004
Location: Cologne
Posts: 638
I cant get work
- upmix (is it still not supportet) (invalid arguments to function "SuperEq"
- normalize (nothing happens)

Do I need some special software packages?
__________________
cu

Joe
------------------------
freedom is just another word for nothing left to loose
JoeBG is offline   Reply With Quote
Old 14th February 2006, 20:05   #83  |  Link
tebasuna51
Moderator
 
tebasuna51's Avatar
 
Join Date: Feb 2005
Location: Spain
Posts: 6,915
- Upmix is in experimental stage by NorthPole, and need Sox Audio Effect Filter ( http://forum.doom9.org/showthread.php?t=104792 ), see the post:
http://forum.doom9.org/showpost.php?...8&postcount=66

- Normalize works fine (amplify the signal until the required level).
tebasuna51 is offline   Reply With Quote
Old 14th February 2006, 20:50   #84  |  Link
JoeBG
stupid
 
JoeBG's Avatar
 
Join Date: Sep 2004
Location: Cologne
Posts: 638
Quote:
Originally Posted by tebasuna51
- Upmix is in experimental stage by NorthPole, and need Sox Audio Effect Filter ( http://forum.doom9.org/showthread.php?t=104792 ), see the post:
http://forum.doom9.org/showpost.php?...8&postcount=66
Works fine now, many thanks


Quote:
Originally Posted by tebasuna51
- Normalize works fine (amplify the signal until the required level).
What means "amplify the signal until the rquired level

I told the tool to normalize to 100 %. Is this not ok?
__________________
cu

Joe
------------------------
freedom is just another word for nothing left to loose
JoeBG is offline   Reply With Quote
Old 15th February 2006, 01:23   #85  |  Link
tebasuna51
Moderator
 
tebasuna51's Avatar
 
Join Date: Feb 2005
Location: Spain
Posts: 6,915
Quote:
Originally Posted by JoeBG
What means "amplify the signal until the rquired level
I told the tool to normalize to 100 %. Is this not ok?
I say "required level" only because you can select other value than 100% with the Configure button.

But, is true, the Normalize() function don't work after the upmix because do a second pass (the first to know the max value) to amplify the sound. And some Sox filters doesn't support restarts (crash), like say the documentation.

I have the same problem with the Dynamic Range Compession function and the compand Sox filter.
tebasuna51 is offline   Reply With Quote
Old 16th February 2006, 01:43   #86  |  Link
NorthPole
Registered User
 
Join Date: Jan 2006
Posts: 141
Well here is the latest revision on the upmix extension

Code:
<?xml version="1.0"?>
<BeHappy.Extension xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://workspaces.gotdotnet.com/behappy">
  <AudioDSP UniqueID="9579E57B-2D27-4583-99A4-921718E25B41">
    <Plugin>
      <MultiOptionDSP Type="BeHappy.Extensions.MultiOptionDSP, BeHappy">
        <TitleFormatString>5.1 Upmix - {0}</TitleFormatString>
        <ScriptPrologue>
	# Store clip in variable
	Stereo_{2} = convertaudiotofloat(last)
        </ScriptPrologue>
        <Option>
          <Name>Audio with mostly dialog (ie. Comedy, Drama)</Name>
          <Value>
	# Profile to use with audio sources that has mostly mono content. 20ms delay and -2db attenuation on surround
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.794,-0.794)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.794,-0.794)
	cc_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),fl_{2},1,-1),mixaudio(front_{2}.GetRightChannel(),fr_{2},1,-1),0.224,0.224)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.562")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.631,-0.631)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.631,-0.631)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <Option>
          <Name>Audio with a mix of sounds (ie. Action, Adventure)</Name>
          <Value>
	# Profile to use with audio sources that more range of sound content. 20ms delay and -2db attenuation on surround
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.668,-0.668)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.668,-0.668)
	cc_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),fl_{2},1,-1),mixaudio(front_{2}.GetRightChannel(),fr_{2},1,-1),0.398,0.398)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.447")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.531,-0.531)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.531,-0.531)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <ScriptEpilogue>
	# Return result
	MergeChannels( fl_{2}, fr_{2}, cc_{2}, lfe_{2}, sl_{2}, sr_{2})
	ConvertAudioTo16Bit()
        </ScriptEpilogue>
      </MultiOptionDSP>
    </Plugin>
  </AudioDSP>
</BeHappy.Extension>
changes are as follows:
- removed the frequency adjustment option because the quality was not very good.
- optimized sox filter usage to speed up execution.
- created 2 different sound profiles to use on different types of audio.

Notes on Usage:
1. You need to have the avisynth sox filter in the avisynth plugin subdirectory. See tebasuna51s' post above for the link.
2. Normalize you audio before upmix.
3. Choose a profile to upmix with from the 5.1 upmix config button.

If after upmixing, you can't hear the center channel dialog because the L & R channels are drowning it out, then try the other profile.
Also, you can add your own profile or change the above ones as needed.

@dimzon

Small feature request...

When you add a file to convert, the name of the destination file is shown as the same as the input file (excluding the dot extension) which is good. But when you add a 2nd file to convert, the destination file name doesn't change (it remains the same as the first). Therefore, you have to type in the destination file name.

Not a big deal if its a problem to change... I hope I explained that clearly enough?
NorthPole is offline   Reply With Quote
Old 16th February 2006, 03:03   #87  |  Link
iceborne
Registered User
 
iceborne's Avatar
 
Join Date: Aug 2003
Posts: 43
does downmixing dts to DLP II wav really work in behappy? wanted to know cause i like to trancode DLP II wav to itunes's aac format.

could you also clarify between DPL II and DPL II(lfe)?
which one is equivalent to "-azid( -s dplii -c normal -L -3db )"?

Last edited by iceborne; 16th February 2006 at 05:51.
iceborne is offline   Reply With Quote
Old 16th February 2006, 17:53   #88  |  Link
tebasuna51
Moderator
 
tebasuna51's Avatar
 
Join Date: Feb 2005
Location: Spain
Posts: 6,915
DPL II is equal to "-azid( -s dplii )" (copied matrix).
DPL II(lfe) equivalent to "-azid( -s dplii -L -3db )".
The "-azid( -c normal )" switch is for Dynamic Range Compression not yet implemented in BeHappy (problem with compand Sox Filter and Normalice see: http://forum.doom9.org/showpost.php?...5&postcount=60 ).

If you have ffdshow like default directshow filter to play dts files you can use DirectShow input instead NicDtsSource, and use ffdshow Audio Decoder Configuration to set:
- Codecs -> Dtd - libdts, Dynamic range compression (Checked)
- Mixer -> Dolby Prologic II, LFE (Unchecked)
-Output -> Output sample - only checked 16 bit integer, Don't use WAVEFORMATEXTENSIBLE ...(Checked)

This is equivalent to "-azid( -s dplii -c normal -L -3db )". After use the Normalice DSP function in BeHappy and select your desired encoder.

I test this method with ac3 source, I hope works also with dts.

Edit: I make a test with dts source:
- Same volume output with NicDtsSource and with ffdshow (drc checked and drc unchecked) (?).
- The output length with NicDtsSource is 2:06.688 (like input) and with ffdshow is cut at 1:50.851 (?)

Last edited by tebasuna51; 16th February 2006 at 18:54.
tebasuna51 is offline   Reply With Quote
Old 16th February 2006, 23:39   #89  |  Link
iceborne
Registered User
 
iceborne's Avatar
 
Join Date: Aug 2003
Posts: 43
from this thread
http://forum.doom9.org/showthread.php?s=&threadid=27936

Quote:
"Pro Logic II with LFE (Not recommended by Dolby)"
... so i shouldn't even be using "-azid( -s dplii -L -3db )" anyways, correct?


Quote:
For downmix you ever have to use DRC because more acoustic power will be concentrated in less channels!
what is frank trying to say? not use dynamic range or to use dynamic range on downmix?
iceborne is offline   Reply With Quote
Old 17th February 2006, 01:55   #90  |  Link
tebasuna51
Moderator
 
tebasuna51's Avatar
 
Join Date: Feb 2005
Location: Spain
Posts: 6,915
See also http://forum.doom9.org/showthread.php?t=57988 with the definitive matrix used in azid 1.9 and in DPL II in BeHappy.

Quote:
Originally Posted by iceborne
... so i shouldn't even be using "-azid( -s dplii -L -3db )" anyways, correct?
From "214_Mixing with Dolby Pro Logic II Technology.pdf" :
"There are other concerns when adding an LFE signal to the mix. If the LFE is simply redistributed within the other channels of the mix, they will usually be subject to some low-frequency bandpass filtering. This filtering causes phase shifts of the LFE signal. When they are acoustically added within a room, these phase shifts are fairly subtle and often go unnoticed. However, when they are electronically added together with the five main channels in the encoder, they may produce less than desirable results at certain frequencies. For this reason, it is recommended that the LFE signal not be used in a Dolby Pro Logic II downmix unless it contains unique information that is not repeated in any of the five main channels."
Is your choice, possible artifacts/lose unique info (my choice is don't include LFE).
Quote:
Originally Posted by iceborne
"For downmix you ever have to use DRC because more acoustic power will be concentrated in less channels!"
what is frank trying to say? not use dynamic range or to use dynamic range on downmix?
I think not use DRC. But isn't my opinion.

You must use DRC to decrease the original signal Dynamic Range if:
1) The source have a wide Dynamic Range (dialogs at -30 dB and explosions at 0 dB).
2) You have a bad/normal audio equipment without support for this wide range (noise with dialogs or explosions distorted) or you don't want disturb the neighbors.
3) You want reencode to a format without support for DRC in play time (mp3, aac, ...)

The DRC is independent and must be do before any downmix.
tebasuna51 is offline   Reply With Quote
Old 17th February 2006, 13:04   #91  |  Link
JoeBG
stupid
 
JoeBG's Avatar
 
Join Date: Sep 2004
Location: Cologne
Posts: 638
AC3 question

Hi,

upmix to 5.1 aac works great now for me. Many thanks.

What not works is AC3. Do I need any special plugins? ffmpeg or something like this? Can someone give a small HowTo? Thanks
__________________
cu

Joe
------------------------
freedom is just another word for nothing left to loose
JoeBG is offline   Reply With Quote
Old 17th February 2006, 13:21   #92  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by JoeBG
Hi,

upmix to 5.1 aac works great now for me. Many thanks.

What not works is AC3. Do I need any special plugins? ffmpeg or something like this? Can someone give a small HowTo? Thanks
You must place ffmpeg.exe into BeHappy folder
Warning! Some ffmpeg versions has buggy stdin support - such versions doesn't work with BeHappy. This version works fine:
Code:
ffmpeg version CVS, build 3211776, Copyright (c) 2000-2004 Fabrice Bellard
  configuration:  --enable-theora --enable-mp3lame --enable-libogg --enable-vorbis --enable-faad --e
nable-faac --enable-xvid --enable-x264 --enable-mingw32 --enable-a52 --enable-dts --enable-pp --enab
le-gpl --enable-memalign-hack --enable-amr_nb --enable-amr_wb
  built on Sep  9 2005 04:00:51, gcc: 3.4.4 (mingw special)
dimzon is offline   Reply With Quote
Old 18th February 2006, 02:29   #93  |  Link
NorthPole
Registered User
 
Join Date: Jan 2006
Posts: 141
I found some additional information on upmix profiles from a couple of other threads

http://forum.doom9.org/showthread.ph...997#post442997

http://forum.doom9.org/showthread.ph...760#post558760

So I added them to the upmix extension:

Code:
<?xml version="1.0"?>
<BeHappy.Extension xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://workspaces.gotdotnet.com/behappy">
  <AudioDSP UniqueID="9579E57B-2D27-4583-99A4-921718E25B41">
    <Plugin>
      <MultiOptionDSP Type="BeHappy.Extensions.MultiOptionDSP, BeHappy">
        <TitleFormatString>5.1 Upmix - {0}</TitleFormatString>
        <ScriptPrologue>
	# Store clip in variable
	Stereo_{2} = convertaudiotofloat(last)
        </ScriptPrologue>
        <Option>
          <Name>Audio with mostly dialog (ie. Comedy, Drama)</Name>
          <Value>
	# Profile to use with audio sources that have mostly mono content. 20ms delay and -3db attenuation on surround
	# Note: the center channel is very weak for this profile
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.794,-0.794)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.794,-0.794)
	cc_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),fl_{2},1,-1),mixaudio(front_{2}.GetRightChannel(),fr_{2},1,-1),0.224,0.224)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.596")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.562,-0.562)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.562,-0.562)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <Option>
          <Name>Audio with a mix of sounds (ie. Action, Adventure)</Name>
          <Value>
	# Profile to use with audio sources that have a wider range of sound content. 20ms delay and -3db attenuation on surround
	# Note: General purpose profile
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.668,-0.668)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.668,-0.668)
	cc_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),fl_{2},1,-1),mixaudio(front_{2}.GetRightChannel(),fr_{2},1,-1),0.398,0.398)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.447")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.473,-0.473)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.473,-0.473)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <Option>
          <Name>Gerzen Profile</Name>
          <Value>
	# Gerzen approach Profile modified with 20ms delay and some attenuation on surround
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.885,-0.115)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.885,-0.115)
	cc_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel,0.4511,0.4511)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.5")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.668,-0.668)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.668,-0.668)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <Option>
          <Name>Farina Profile</Name>
          <Value>
	# Farina/Sursound approach Profile M=L+R, S=L-R, c=0.75, L' = (1-c/4)*M+(1+c/4)*S, C' = c*M, R' = (1-c/4)*M-(1+c/4)*S
	# also added with 20ms delay and some attenuation on surround
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,0.500),mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,-0.500),0.8125,1.1875)
	fr_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,0.500),mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,-0.500),0.8125,-1.1875)
	cc_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel,0.375,0.375)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.5")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.668,-0.668)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.668,-0.668)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <Option>
          <Name>Multisonic Profile</Name>
          <Value>
	# Multisonic approach Profile modified with 20ms delay and some attenuation on surround
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),1,-0.5)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),1,-0.5)
	cc_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel,0.5,0.5)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.5")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.668,-0.668)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.668,-0.668)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <Option>
          <Name>Sound On Sound Profile</Name>
          <Value>
	# SOS approach Profile with 20ms delay and some attenuation on surround
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
	fl_{2} = stereo_{2}.GetLeftChannel()
	fr_{2} = stereo_{2}.GetRightChannel()
	cc_{2} = mixaudio(stereo_{2}.GetRightChannel(),stereo_{2}.GetLeftChannel,0.5,0.5)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.5")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.668,-0.668)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.668,-0.668)
	sl_{2} = DelayAudio(sl_{2},0.02)
	sr_{2} = DelayAudio(sr_{2},0.02)
          </Value>
        </Option>
        <ScriptEpilogue>
 	# Return result
	MergeChannels( fl_{2}, fr_{2}, cc_{2}, lfe_{2}, sl_{2}, sr_{2})
	ConvertAudioTo16Bit()
        </ScriptEpilogue>
      </MultiOptionDSP>
    </Plugin>
  </AudioDSP>
</BeHappy.Extension>
NorthPole is offline   Reply With Quote
Old 18th February 2006, 05:13   #94  |  Link
JoeBG
stupid
 
JoeBG's Avatar
 
Join Date: Sep 2004
Location: Cologne
Posts: 638
@ dimzon

I took the one from 15.02.2006 from celtic druid, works very good

@ northpole

IŽll try it immediatly
__________________
cu

Joe
------------------------
freedom is just another word for nothing left to loose
JoeBG is offline   Reply With Quote
Old 19th February 2006, 00:59   #95  |  Link
NorthPole
Registered User
 
Join Date: Jan 2006
Posts: 141
Sorry about so many revision on this upmix extension...

This pretty much finishes what I have been able to come up with so here it is

Code:
<?xml version="1.0"?>
<BeHappy.Extension xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://workspaces.gotdotnet.com/behappy">
  <AudioDSP UniqueID="9579E57B-2D27-4583-99A4-921718E25B41">
    <Plugin>
      <MultiOptionDSP Type="BeHappy.Extensions.MultiOptionDSP, BeHappy">
        <TitleFormatString>5.1 Upmix - {0}</TitleFormatString>
        <ScriptPrologue>
	# Store clip in variable
	stereo_{2} = convertaudiotofloat(last)
	front_{2} = stereo_{2}.soxfilter("filter 20-20000")
	back_{2} = stereo_{2}.soxfilter("filter 100-7000")
        </ScriptPrologue>
        <Option>
          <Name>Balanced Center Channel Profile</Name>
          <Value>
	# Balanced approach L' = (L-R)*0.668  R' = (R-L)*0.668  C' = (L-L')*0.398 + (R-R')*0.398
	# Profile for general purposes to use with audio sources that have a wide range of sound content
	# Attempts to balance sound levels of L', R' and C' with common mono content in center only
	# 20ms delay and -2db attenuation on surround  SL' = (L-R)*0.531  SR' = (R-L)*0.531
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.668,-0.668)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.668,-0.668)
	cc_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),fl_{2},1,-1),mixaudio(front_{2}.GetRightChannel(),fr_{2},1,-1),0.398,0.398)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.500")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.531,-0.531).DelayAudio(0.02)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.531,-0.531).DelayAudio(0.02)
          </Value>
        </Option>
        <Option>
          <Name>Decreased Center Channel Profile</Name>
          <Value>
	# Decreased center approach L' = (L-R)*0.668  R' = (R-L)*0.668  C' = (L-L')*0.224 + (R-R')*0.224
	# Profile to use for older movies or videos with mostly mono content. 
	# Same as balanced approach but with significally reduces C' power
	# 20ms delay and -2db attenuation on surround  SL' = (L-R)*0.531  SR' = (R-L)*0.531
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.668,-0.668)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.668,-0.668)
	cc_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),fl_{2},1,-1),mixaudio(front_{2}.GetRightChannel(),fr_{2},1,-1),0.224,0.224)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.596")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.531,-0.531).DelayAudio(0.02)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.531,-0.531).DelayAudio(0.02)
          </Value>
        </Option>
        <Option>
          <Name>Increased Center Channel Profile</Name>
          <Value>
	# Increased center approach L' = (L-R)*0.596  R' = (R-L)*0.596  C' = (L-L')*0.473 + (R-R')*0.473
	# Profile to use with audio sources where quieter dialog or lots of loud sound effects.
	# Same as balanced approach but with slightly higher C' power and slightly lower L' and R' power
	# 20ms delay and -2db attenuation on surround  SL' = (L-R)*0.473  SR' = (R-L)*0.473
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.596,-0.596)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.596,-0.596)
	cc_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),fl_{2},1,-1),mixaudio(front_{2}.GetRightChannel(),fr_{2},1,-1),0.473,0.473)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.473")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.473,-0.473).DelayAudio(0.02)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.473,-0.473).DelayAudio(0.02)
          </Value>
        </Option>
        <Option>
          <Name>Gerzen Profile</Name>
          <Value>
	# Gerzen approach  L' = (0.885*L)-(0.115*R)  C' = (L+R)*0.4511  R' = (0.885*R)-(0.115*L)
	# Modified by adding 20ms delay and some attenuation on surround  SL' = (L-R)*0.531  SR' = (R-L)*0.531
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.885,-0.115)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.885,-0.115)
	cc_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel,0.4511,0.4511)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.5")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.531,-0.531).DelayAudio(0.02)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.531,-0.531).DelayAudio(0.02)
          </Value>
        </Option>
        <Option>
          <Name>Farina Profile</Name>
          <Value>
	# Farina/Sursound approach  M=L+R, S=L-R, c=0.75, L' = (1-c/4)*M+(1+c/4)*S, C' = c*M, R' = (1-c/4)*M-(1+c/4)*S
	# Modified by adding 20ms delay and some attenuation on surround  SL' = (L-R)*0.562  SR' = (R-L)*0.562
	fl_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,0.500),mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,-0.500),0.8125,1.1875)
	fr_{2} = mixaudio(mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,0.500),mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.500,-0.500),0.8125,-1.1875)
	cc_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel,0.375,0.375)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.5")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.562,-0.562).DelayAudio(0.02)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.562,-0.562).DelayAudio(0.02)
          </Value>
        </Option>
        <Option>
          <Name>Multisonic Profile</Name>
          <Value>
	# Multisonic approach  L' = L-(0.5*R)  C' = (L+R)*0.5  R' = R-(0.5*L)
	# Reduced above formula by 10% to eliminate potential clipping on L' and R'
	# Modified by adding 20ms delay and some attenuation on surround  SL' = (L-R)*0.596  SR' = (R-L)*0.596
	fl_{2} = mixaudio(front_{2}.GetLeftChannel(),front_{2}.GetRightChannel(),0.9,-0.45)
	fr_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel(),0.9,-0.45)
	cc_{2} = mixaudio(front_{2}.GetRightChannel(),front_{2}.GetLeftChannel,0.45,0.45)
	lfe_{2} = ConvertToMono(stereo_{2}).SoxFilter("lowpass 120","vol -0.5")
	sl_{2} = mixaudio(back_{2}.GetLeftChannel(),back_{2}.GetRightChannel(),0.596,-0.596).DelayAudio(0.02)
	sr_{2} = mixaudio(back_{2}.GetRightChannel(),back_{2}.GetLeftChannel(),0.596,-0.596).DelayAudio(0.02)
          </Value>
        </Option>
        <ScriptEpilogue>
 	# Return result
	MergeChannels( fl_{2}, fr_{2}, cc_{2}, lfe_{2}, sl_{2}, sr_{2})
	ConvertAudioTo16Bit()
        </ScriptEpilogue>
      </MultiOptionDSP>
    </Plugin>
  </AudioDSP>
</BeHappy.Extension>
Changes:
- Tweaked most of the surround levels to try and match the particular profile.
- Nuked the sound on sound profile (the last one) because it was just the alot of same sound from the L, R & C (not much channel or dialog separation).
- Changed the names on the first 2 profiles to better explain what they are trying to do.
- Added another profile to increase the center channel levels.
- Added some notes, etc.

Thanks again dimzon for this slick audio convertion tool.
NorthPole is offline   Reply With Quote
Old 19th February 2006, 12:40   #96  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
@NorthPole
Thanx for Your investigations.
I just wrote a tool, but You and tebasuna51 fill it life

By the way - future of BeHappy
I'm really waitng when MeGUI refacoring done. Probably BeHappy will be assimilated by MeGUI completly (currently it share same code but MeGUI has subset of BeHappy functionality)
dimzon is offline   Reply With Quote
Old 19th February 2006, 19:54   #97  |  Link
JoeBG
stupid
 
JoeBG's Avatar
 
Join Date: Sep 2004
Location: Cologne
Posts: 638
Quote:
Originally Posted by dimzon
@NorthPole
Thanx for Your investigations.
I just wrote a tool, but You and tebasuna51 fill it life

By the way - future of BeHappy
I'm really waitng when MeGUI refacoring done. Probably BeHappy will be assimilated by MeGUI completly (currently it share same code but MeGUI has subset of BeHappy functionality)
Please leave it as a standalone tool
__________________
cu

Joe
------------------------
freedom is just another word for nothing left to loose
JoeBG is offline   Reply With Quote
Old 19th February 2006, 20:29   #98  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by JoeBG
Please leave it as a standalone tool
Why? Why does not combine them with MeGUI (preserving BeHappy functionality/flexibility)
dimzon is offline   Reply With Quote
Old 20th February 2006, 20:08   #99  |  Link
JoeBG
stupid
 
JoeBG's Avatar
 
Join Date: Sep 2004
Location: Cologne
Posts: 638
Quote:
Originally Posted by dimzon
Why? Why does not combine them with MeGUI (preserving BeHappy functionality/flexibility)
OK, this makes sense. I just want to be able to use it without MeGUI for quick encoding decisions.
__________________
cu

Joe
------------------------
freedom is just another word for nothing left to loose
JoeBG is offline   Reply With Quote
Old 1st March 2006, 14:45   #100  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by tebasuna51
The solution is make alternate curves with normalized output. I'm work about this.
Hi! Any progress with it?
dimzon is offline   Reply With Quote
Reply

Tags
behappy

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 04:25.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.