Gibt es irgendwo eine Übersicht wie bei Unterschiedlichen Audio Up-und Downmixen die Kanäle kombiniert werden?
Cu Selur
Gibt es irgendwo eine Übersicht wie bei Unterschiedlichen Audio Up-und Downmixen die Kanäle kombiniert werden?
Cu Selur
In der Mixer-Matrix von ffdshow oder von AC3Filter kann man wohl ablesen, mit welchen Faktoren welche Kanäle bei ProLogic und DPL2 in die Ausgabe eingehen; wenn nicht, könnte auch noch in der Dokumentation von Azid bzw. BeSweet eine solche Matrix zu finden sein.
Allerdings ist Dolby ProLogic (II) mehr als nur zwei gewichtete Summen, wenn es korrekt durchgeführt wird (Rear Channel Filter + 90° Phase Shift, evtl. Delay).
Würde am Ende gerne ne Befehlszeile für SoX drauß machen.
Das mit ffdshow guck ich mir mal an. (aber schon irgendwie merkwürdig, dass das niemand mal genauer dokumentiert hat)
-> da wird natürlich nix angezeigt,.. also Dokumentationen suchen,.. -> in den Doks die mit BeSweetv1.4 kommen steht nix
Cu Selur
Ps.: hab mal im englischen Forum auch nen thread aufgemacht http://forum.doom9.org/showthread.php?t=152034
irgendwie versteh ich nicht wie man von den Matrizen bei:
http://en.wikipedia.org/wiki/Dolby_Pro_Logic
mit:
fl' = FL+(1/2)^(1/2)*C+pi/2*(2/3)^(1/2)*SL+pi/2*(1/3)^(1/2)*SR
fr' = FR+(1/2)^(1/2)*C-pi/2*(1/3)^(1/2)*SL-pi/2*(2/3)^(1/2)*SR
auf:
fl' = 0.3254xFL + 0.2301xC + 0.2818xSL + 0.1627xSR
fr' = 0.3254xFR + 0.2301xC - 0.1627xSL - 0.2818xSR
kommt,...
(ist sicher ganz einfach und logisch, aber irgendwie geht es gerade an mir vorbei)
-> okay, scheint als ob alles mit 0.3254 skaliert wird,.. aber irgendwie passt es dann auch nicht
function Dmix3Stereo(clip a) # 3 Channels L,R,C or L,R,S
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
return MixAudio(flr, fcc, 0.5858, 0.4142)
}
function Dmix3Dpl(clip a) # 3 Channels only L,R,S
{
flr = GetChannel(a, 1, 2)
sl = GetChannel(a, 3)
sr = Amplify(sl, -1.0)
blr = MergeChannels(sl, sr)
return MixAudio(flr, blr, 0.5858, 0.4142)
}
function Dmix4qStereo(clip a) # 4 Channels Quadro L,R,SL,SR
{
flr = GetChannel(a, 1, 2)
blr = GetChannel(a, 3, 4)
return MixAudio(flr, blr, 0.5, 0.5)
}
function Dmix4qDpl(clip a) # 4 Channels Quadro L,R,SL,SR
{
flr = GetChannel(a, 1, 2)
bl = GetChannel(a, 3)
br = GetChannel(a, 4)
sl = MixAudio(bl, br, 0.2929, 0.2929)
sr = MixAudio(bl, br, -0.2929, -0.2929)
blr = MergeChannels(sl, sr)
return MixAudio(flr, blr, 0.4142, 1.0)
}
function Dmix4qDpl2(clip a) # 4 Channels Quadro L,R,SL,SR
{
flr = GetChannel(a, 1, 2)
bl = GetChannel(a, 3)
br = GetChannel(a, 4)
sl = MixAudio(bl, br, 0.3714, 0.2144)
sr = MixAudio(bl, br, -0.2144, -0.3714)
blr = MergeChannels(sl, sr)
return MixAudio(flr, blr, 0.4142, 1.0)
}
function Dmix4sStereo(clip a) # 4 Channels L,R,C,S
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.4142, 0.2929)
blr = GetChannel(a, 4, 4)
return MixAudio(flr, blr, 1.0, 0.2929)
}
function Dmix4sDpl(clip a) # 4 Channels L,R,C,S
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.4142, 0.2929)
sl = GetChannel(a, 4)
sr = Amplify(sl, -1.0)
blr = MergeChannels(sl, sr)
return MixAudio(flr, blr, 1.0, 0.2929)
}
function Dmix5Stereo(clip a) # 5 Channels L,R,C,SL,SR
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.3694, 0.2612)
blr = GetChannel(a, 4, 5)
return MixAudio(lrc, blr, 1.0, 0.3694)
}
function Dmix5Dpl(clip a) # 5 Channels L,R,C,SL,SR
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.3205, 0.2265)
bl = GetChannel(a, 4)
br = GetChannel(a, 5)
sl = MixAudio(bl, br, 0.2265, 0.2265)
sr = MixAudio(bl, br, -0.2265, -0.2265)
blr = MergeChannels(sl, sr)
return MixAudio(lrc, blr, 1.0, 1.0)
}
function Dmix5Dpl2(clip a) # 5 Channels L,R,C,SL,SR
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.3254, 0.2301)
bl = GetChannel(a, 4)
br = GetChannel(a, 5)
sl = MixAudio(bl, br, 0.2818, 0.1627)
sr = MixAudio(bl, br, -0.1627, -0.2818)
blr = MergeChannels(sl, sr)
return MixAudio(lrc, blr, 1.0, 1.0)
}
function Dmix6Stereo(clip a)
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.3694, 0.2612)
blr = GetChannel(a, 5, 6)
return MixAudio(lrc, blr, 1.0, 0.3694)
}
function Dmix6Dpl(clip a)
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.3205, 0.2265)
bl = GetChannel(a, 5)
br = GetChannel(a, 6)
sl = MixAudio(bl, br, 0.2265, 0.2265)
sr = MixAudio(bl, br, -0.2265, -0.2265)
blr = MergeChannels(sl, sr)
return MixAudio(lrc, blr, 1.0, 1.0)
}
function Dmix6Dpl2(clip a)
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.3254, 0.2301)
bl = GetChannel(a, 5)
br = GetChannel(a, 6)
sl = MixAudio(bl, br, 0.2818, 0.1627)
sr = MixAudio(bl, br, -0.1627, -0.2818)
blr = MergeChannels(sl, sr)
return MixAudio(lrc, blr, 1.0, 1.0)
}
function Dmix6StereoLfe(clip a)
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.2929, 0.2071)
lfe = GetChannel(a, 4, 4)
lrc = MixAudio(lrc, lfe, 1.0, 0.2071)
blr = GetChannel(a, 5, 6)
return MixAudio(lrc, blr, 1.0, 0.2929)
}
function Dmix6DplLfe(clip a)
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.2613, 0.1847)
lfe = GetChannel(a, 4, 4)
lrc = MixAudio(lrc, lfe, 1.0, 0.1847)
bl = GetChannel(a, 5)
br = GetChannel(a, 6)
sl = MixAudio(bl, br, 0.1847, 0.1847)
sr = MixAudio(bl, br, -0.1847, -0.1847)
blr = MergeChannels(sl, sr)
return MixAudio(lrc, blr, 1.0, 1.0)
}
function Dmix6Dpl2Lfe(clip a)
{
flr = GetChannel(a, 1, 2)
fcc = GetChannel(a, 3, 3)
lrc = MixAudio(flr, fcc, 0.2646, 0.1870)
lfe = GetChannel(a, 4, 4)
lrc = MixAudio(lrc, lfe, 1.0, 0.1870)
bl = GetChannel(a, 5)
br = GetChannel(a, 6)
sl = MixAudio(bl, br, 0.2291, 0.1323)
sr = MixAudio(bl, br, -0.1323, -0.2291)
blr = MergeChannels(sl, sr)
return MixAudio(lrc, blr, 1.0, 1.0)
return MergeChannels(l, r)
}
Alles anzeigen
Quelle: http://forum.doom9.org/showthread.php?p=1134992#post1134992
Jetzt daraus nur noch SOX remix-Aufrufe und downmix wäre fertig.
:daumen::daumen:
-> okay, scheint als ob alles mit 0.3254 skaliert wird,..
Ja, voll normaaaaal(isiert)! - Oder so?!
Normalisierungswerte die vom Himmelfallen mag ich nicht,..
Mist, bei:
ffmpeg -y -i "AC3-5.1.ac3" -ac 6 -ar 48000 -acodec pcm_s16le -f wav - | sox -s -b 16 -c 6 -r 48000 --norm -t raw - -t wav - remix -m 1v0.3254,3v0.2301,4v0.2818,5v0.1627 2v0.3254,3v0.2301,4v-0.1627,5v-0.2818 norm | ffmpeg -v -1 -threads 4 -y -i - -ab 128000 -ac 2 -ar 48000 "test.mp3"
fehlt der Rear-Right aber k.A. warum,...
function Dmix5Dpl2(clip a) # 5 Channels FL,LR,C,SL,SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.3254, 0.2301) // 0.3254*FL+0.2301*C 0.3254*FR+0.2301*C bl = GetChannel(a, 4) br = GetChannel(a, 5) sl = MixAudio(bl, br, 0.2818, 0.1627) // 0.2818*SL 0.1627*SR sr = MixAudio(bl, br, -0.1627, -0.2818) // -0.1627*SL -0.2818*SR blr = MergeChannels(sl, sr) //0.2818*SL+0.1627*SR -0.1627*SL-0.2818*SR return MixAudio(lrc, blr, 1.0, 1.0) //fl' = 0.3254*FL+0.2301*C+0.2818*SL+0.1627*SR //fr' = 0.3254*FR+0.2301*C-0.1627*SL-0.2818*SR }
=> SoX:
function Dmix6Dpl2Lfe(clip a) # 6 Channels 1FL,2LR,3C,4SL,5SR,6SUB{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.2646, 0.1870) // 0.2646*FL+0.1870*C 0.2646FR+0.1870*C lfe = GetChannel(a, 4, 4) lrc = MixAudio(lrc, lfe, 1.0, 0.1870) // 0.2646*FL+0.1870*C+SL 0.2646*FR+0.1870*C+SL bl = GetChannel(a, 5) br = GetChannel(a, 6) sl = MixAudio(bl, br, 0.2291, 0.1323) // 0.2291*SR 0.1323*SUB sr = MixAudio(bl, br, -0.1323, -0.2291) // -0.1323*SR -0.2291*SUB blr = MergeChannels(sl, sr) // 0.2291*SR+0.1323*SUB -0.1323*SR-0.2291*SUB return MixAudio(lrc, blr, 1.0, 1.0) //fl' = 0.2646*FL+0.1870*C+SL+0.2291*SR+0.1323*SUB //fr' = 0.2646*FR+0.1870*C+SL-0.1323*SR-0.2291*SUB}
=> SoX:
Falls da noch wer durchblickt: Stimmt das so ?
Kauderwelsch
hmmm,.... auch keinen Bock mehr für heute, vielleicht mach ich morgen weiter,... (da ich selber eh so gut wie nie nen DownMix oder UpMix mache ist es zumindest für mich auch nicht soo wichtig ;))
Cu Selur
Ps.: Hab auch mal im englischen Forum noch mal gepostet, eventuell kann ja tebasuna51 oder sonst wer noch was konstruktives dazu sagen.
Ich hab das irgendwo schon mal gesehen... hm, achja, das sind doch die Formeln für den Warpantrieb, oder?
vor allem die letzte Formel sieht irgendwie falsch aus,...
function Dmix3Stereo(clip a) # 3 Channels L,R,C or L,R,S{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) return MixAudio(flr, fcc, 0.5858, 0.4142) //0.5858*FL+0.4142*C 0.5858*FR+0.4142*C}
SoX:
function Dmix3Dpl(clip a) # 3 Channels only L,R,S{ flr = GetChannel(a, 1, 2) sl = GetChannel(a, 3) sr = Amplify(sl, -1.0) blr = MergeChannels(sl, sr) //S S*-1.0 return MixAudio(flr, blr, 0.5858, 0.4142) //FL*0.5858+S FR*0.4142+S*-1.0}
SoX:
function Dmix4qStereo(clip a) # 4 Channels Quadro L,R,SL,SR{ flr = GetChannel(a, 1, 2) blr = GetChannel(a, 3, 4) return MixAudio(flr, blr, 0.5, 0.5) //FL*0.5+SL*0.5 FR*0.5+SR*0.5}
SoX:
function Dmix4qDpl(clip a) # 4 Channels Quadro L,R,SL,SR{ flr = GetChannel(a, 1, 2) bl = GetChannel(a, 3) br = GetChannel(a, 4) sl = MixAudio(bl, br, 0.2929, 0.2929) //0.2929*SR 0.2929*SL sr = MixAudio(bl, br, -0.2929, -0.2929) //-0.2929*SR -0.2929*SL blr = MergeChannels(sl, sr) //0.2929*SR-0.2929*SR 0.2929*SL-0.2929*SL <- Kann das Sinn machen? return MixAudio(flr, blr, 0.4142, 1.0) //0.4142*FL+0.2929*SR-0.2929*SR 0.4142*FR+0.2929*SL-0.2929*SL }
SoX:
Euer Merkwürden
Nicht das ich davon irgendwelche Ahnung hätte, aber den "pseudo" upmix kann doch auch Soundkarte oder Verstärker übernehmen, und Downmix sollte auch recht einfach mit FFmpeg oder Mencoder funktionieren.
ZitatNicht das ich davon irgendwelche Ahnung hätte,...
da will Dir sicher niemand widersprechen
ZitatDownmix sollte auch recht einfach mit FFmpeg oder Mencoder funktionieren.
ffmpeg mach z.B. 5.1 -> Stereo dadurch, dass man alle Kanäle außer FL und FR fallen lässt,... mencoder hat auch so seine Macken beim Up- und Downmuxing.
=> War mal wieder ein Vergnügen Deine Äußerung zu lesen,...
Hi,
Zitat1v0.3254,3v0.2301,4v0.2818,5v0.1627 2v0.3254,3v0.2301,4v-0.1627,5v-0.2818
Das sieht in meinen Augen gut aus.
Zitat1v0.2646,3v0.1870,4,5v0.2291,6v0.1323 1v0.2646,3v0.1870,4,5v-0.1323,6v-0.2291
Das müsste so aussehen:
1v0.2646,3v0.1870,4v0.1870,5v0.2291,6v0.1323 2v0.2646,3v0.1870,4v0.1870,5v-0.1323,6v-0.2291
Gab es da nicht unterschiedliche Anordnung der Kanäle bei verschiedenen Mehrkanalquellen?
Habe mir mal aufgeschrieben, dass für 5.1 -> AAC folgende anordnung ein muss ist: FL, FR, C, LFE, SL, SR
Habe hier noch ein Testfile: ftp://ftp1.fraunhofer.de/institute/iis/…_Channel_ID.wav
Gruß
Im MUX-Wizard von BeLight kann man unterschiedliche Kanal-Reihenfolgen generieren, je nach dem welcher Encoder was erwartet (AC3 / AAC / WAV); bei 6-Kanal-WAV ist das "EXTENSIBLE"-Format ja von Microsoft eigentlich eindeutig spezifiziert.
ZitatGab es da nicht unterschiedliche Anordnung der Kanäle bei verschiedenen Mehrkanalquellen?
Ja, aber nach ffmpeg hat man die Ordnung wie sie in wav existiert und genau da hab ich den Fehler gemacht, weil die ist wie Du es auch anmerktest. (FL, FR, C, LFE, SL, SR)
Hier mal eine korregierte Version
function Dmix6Dpl2Lfe(clip a) # 6 Channels FL, FR, C, LFE, SL, SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.2646, 0.1870) // 0.2646*FL+0.1870*C 0.2646FR+0.1870*C lfe = GetChannel(a, 4, 4) lrc = MixAudio(lrc, lfe, 1.0, 0.1870) // 0.2646*FL+0.1870*C+SUB*0.1870 0.2646*FR+0.1870*C+SUB*0.1870 bl = GetChannel(a, 5) br = GetChannel(a, 6) sl = MixAudio(bl, br, 0.2291, 0.1323) // 0.2291*SL 0.1323*SR sr = MixAudio(bl, br, -0.1323, -0.2291) // -0.1323*SL -0.2291*SR blr = MergeChannels(sl, sr) // 0.2291*SL+0.1323*SR -0.1323*SL-0.2291*SR return MixAudio(lrc, blr, 1.0, 1.0) //fl' = 0.2646*FL+0.1870*C+SUB*0.1870+0.2291*SL+0.1323*SR //fr' = 0.2646*FR+0.1870*C+SUB*0.1870-0.1323*SL-0.2291*SR}
SoX:
Wirst Du eine Option einbauen, dass man beim downmix den Subkanal ein- oder ausschliessen kann?
Gruß
Hier erst mal alles zusammen:
DOWNMIX:--------------------DownMix to Mono:SoX: -function Dmix3Stereo(clip a) # 3 Channels L,R,C or L,R,S{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) return MixAudio(flr, fcc, 0.5858, 0.4142) //0.5858*FL+0.4142*C 0.5858*FR+0.4142*C}SoX: 1v0.5858,3v0.4142 2v0.5858,3v0.4142function Dmix3Dpl(clip a) # 3 Channels only L,R,S{ flr = GetChannel(a, 1, 2) sl = GetChannel(a, 3) sr = Amplify(sl, -1.0) blr = MergeChannels(sl, sr) //S S*-1.0 return MixAudio(flr, blr, 0.5858, 0.4142) //FL*0.5858+S FR*0.4142+S*-1.0}SoX: 1v0.5858,3 2v0.4142,3v-1.0function Dmix4qStereo(clip a) # 4 Channels Quadro L,R,SL,SR{ flr = GetChannel(a, 1, 2) blr = GetChannel(a, 3, 4) return MixAudio(flr, blr, 0.5, 0.5) //FL*0.5+SL*0.5 FR*0.5+SR*0.5}SoX: 1v0.5,3v0.5 2v0.5,3v0.5function Dmix4qDpl(clip a) # 4 Channels Quadro L,R,SL,SR{ flr = GetChannel(a, 1, 2) bl = GetChannel(a, 3) br = GetChannel(a, 4) sl = MixAudio(bl, br, 0.2929, 0.2929) //0.2929*SR 0.2929*SL sr = MixAudio(bl, br, -0.2929, -0.2929) //-0.2929*SR -0.2929*SL blr = MergeChannels(sl, sr) //0.2929*SR-0.2929*SR 0.2929*SL-0.2929*SL <- Kann das Sinn machen? return MixAudio(flr, blr, 0.4142, 1.0) //0.4142*FL+0.2929*SR-0.2929*SR 0.4142*FR+0.2929*SL-0.2929*SL }SoX: 1v0.4142,4v0.2929,4v-0.292 2v0.4142,3v0.2929,3v-0.292function Dmix4qDpl2(clip a) # 4 Channels Quadro L,R,SL,SR{ flr = GetChannel(a, 1, 2) bl = GetChannel(a, 3) br = GetChannel(a, 4) sl = MixAudio(bl, br, 0.3714, 0.2144) //0.3714*SL 0.2144*SR sr = MixAudio(bl, br, -0.2144, -0.3714) //-0.2144*SL -0.3714*SR blr = MergeChannels(sl, sr) //0.3714*SL-0.2144*SL 0.2144*SR-0.3714*SR return MixAudio(flr, blr, 0.4142, 1.0) //0.3712*FL+0.3714*SL-0.2144*SL FR+0.2144*SR-0.3714*SR}SoX: 1v0.4142,3v03714,3v-0.2144 2,3v0.2144,3v-0.3714function Dmix4sStereo(clip a) # 4 Channels L,R,C,S{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.4142, 0.2929) //0.4142*FL+0.2929*C 0.4142*FR+0.2929*C blr = GetChannel(a, 4, 4) return MixAudio(lrc, blr, 1.0, 0.2929) //<- instead of MixAudio(flr, blr, 1.0, 0.2929) //0.4142*FL+0.2929*C+0.2929*SUB 0.4142*FR+0.2929*C+0.2929*SUB}SoX: 1v0.4142,3v0.2929,4v02929 2v0.4142,3v0.2929,4v02929function Dmix4sDpl(clip a) # 4 Channels L,R,C,S{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.4142, 0.2929) //0.4142*FL+0.2929*C 0.4142*FR+0.2929*C sl = GetChannel(a, 4) sr = Amplify(sl, -1.0) blr = MergeChannels(sl, sr) //SUB -1,0*SUB return MixAudio(flr, blr, 1.0, 0.2929) //0.4142*FL+0.2929*C+SUB 0.4142*FR+0.2929*C-1.0*SUB}SoX: 1v0.4142,3v0.2929,4 2v0.4142,3v0.2929,4v-1.0function Dmix5Stereo(clip a) # 5 Channels L,R,C,SL,SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.3694, 0.2612) //0.3694*FL+0.2612*C 0.3694*FR+0.2612*C blr = GetChannel(a, 4, 5) return MixAudio(lrc, blr, 1.0, 0.3694) //0.3694*FL+0.2612*C+0.3694*SL 0.3694*FR+0.2612*C+0.3694*SR}SoX: 1v0.3694,3v0.2612,4v0.3694 2v0.3694,3v0.2612,5v0.3694function Dmix5Dpl(clip a) # 5 Channels L,R,C,SL,SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.3205, 0.2265) //0.3205*FL+0.2265*C 0.3205*FR+0.2265*C bl = GetChannel(a, 4) br = GetChannel(a, 5) sl = MixAudio(bl, br, 0.2265, 0.2265) //0.2265*SL 0.2265*SR sr = MixAudio(bl, br, -0.2265, -0.2265) //-0.2265*SL -0.2265*SR blr = MergeChannels(sl, sr) //0.2265*SL-0.2265*SL 0.2265*SR-0.2265*SR return MixAudio(lrc, blr, 1.0, 1.0)//0.3205*FL+0.2265*C+0.2265*SL-0.2265*SL 0.3205*FR+0.2265*C+0.2265*SR-0.2265*SR}SoX: 1v0.3205,3v0.2265,4v0.2265,4v-0.2265 2v0.3205,3v0.2265,5v0.2265,5v-0.2265function Dmix5Dpl2(clip a) # 5 Channels FL,LR,C,SL,SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.3254, 0.2301) // 0.3254*FL+0.2301*C 0.3254*FR+0.2301*C bl = GetChannel(a, 4) br = GetChannel(a, 5) sl = MixAudio(bl, br, 0.2818, 0.1627) // 0.2818*SL 0.1627*SR sr = MixAudio(bl, br, -0.1627, -0.2818) // -0.1627*SL -0.2818*SR blr = MergeChannels(sl, sr) //0.2818*SL+0.1627*SR -0.1627*SL-0.2818*SR return MixAudio(lrc, blr, 1.0, 1.0) //fl' = 0.3254*FL+0.2301*C+0.2818*SL+0.1627*SR //fr' = 0.3254*FR+0.2301*C-0.1627*SL-0.2818*SR }SoX: 1v0.3254,3v0.2301,4v0.2818,5v0.1627 2v0.3254,3v0.2301,4v-0.1627,5v-0.2818function Dmix6Stereo(clip a) # 6 Channels FL, FR, C, LFE, SL, SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.3694, 0.2612) //0.3694*FL+0.2612*C 0.3694*FR+0.2612*C blr = GetChannel(a, 5, 6) return MixAudio(lrc, blr, 1.0, 0.3694) //0.3694*FL+0.2612*C+0.3694*SL 0.3694*FR+0.2612*C+0.3694*SR}SoX: 1v0.3694+3v0.2612+4v0.3694 2v0.3694+3v0.2612+5v0.3694function Dmix6Dpl(clip a) # 6 Channels FL, FR, C, LFE, SL, SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.3205, 0.2265) //0.3205*FL+0.2265*C 0.3205*FR+0.2265*C bl = GetChannel(a, 5) br = GetChannel(a, 6) sl = MixAudio(bl, br, 0.2265, 0.2265) //0.2265*SL 0.2265*SR sr = MixAudio(bl, br, -0.2265, -0.2265) //-0.2265*SL -0.2265*SR blr = MergeChannels(sl, sr) //0.2265*SL-0.2265*SL 0.2265*SR-0.2265*SR return MixAudio(lrc, blr, 1.0, 1.0) //0.3205*FL+0.2265*C+0.2265*SL-0.2265*SL 0.3205*FR+0.2265*C+0.2265*SR-0.2265*SR}SoX: 1v0.3205,3v0.2265+4v0.2265-4v-0.2265 2v0.3205,3v0.2265+5v0.2265-5v-0.2265function Dmix6Dpl2(clip a) # 6 Channels FL, FR, C, LFE, SL, SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.3254, 0.2301) //0.3254*FL+0.2301*C 0.3254*FR+0.2301*C bl = GetChannel(a, 5) br = GetChannel(a, 6) sl = MixAudio(bl, br, 0.2818, 0.1627) //0.2818*SL 1627*SR sr = MixAudio(bl, br, -0.1627, -0.2818) //-0.1627*SL -0.2818*SR blr = MergeChannels(sl, sr) //0.2818*SL-0.1627*SL 1627*SR-0.2818*SR return MixAudio(lrc, blr, 1.0, 1.0) //0.3254*FL+0.2301*C+0.2818*SL-0.1627*SL 0.3254*FR+0.2301*C+1627*SR-0.2818*SR}SoX: 1v0.3254,3v0.2301,5v0.2818,5v-0.1627 2v0.3254,3v0.2301,6v0.2818,6v-0.1627function Dmix6StereoLfe(clip a) # 6 Channels FL, FR, C, LFE, SL, SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.2929, 0.2071) //0.2929*FL+0.2071*C 0.2929*FR+0.2071*C lfe = GetChannel(a, 4, 4) lrc = MixAudio(lrc, lfe, 1.0, 0.2071) //0.2929*FL+0.2071*C+0.2071*SUB 0.2929*FR+0.2071*C+0.2071*SUB blr = GetChannel(a, 5, 6) return MixAudio(lrc, blr, 1.0, 0.2929) //0.2929*FL+0.2071*C+0.2071*SUB+0.2929*SL 0.2929*FR+0.2071*C+0.2071*SUB+0.2929*SR}SoX: 1v0.2929,3v0.2071,4v0.2071,5v0.2929 2v0.2929,3v0.2071,4v0.2071,6v0.2929function Dmix6DplLfe(clip a) # 6 Channels FL, FR, C, LFE, SL, SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.2613, 0.1847) //0.2613*FL+0.1847*C 0.2613*FR+0.1847*C lfe = GetChannel(a, 4, 4) lrc = MixAudio(lrc, lfe, 1.0, 0.1847) //0.2613*FL+0.1847*C+0.1847*SUB 0.2613*FR+0.1847*C+0.1847*SUB bl = GetChannel(a, 5) br = GetChannel(a, 6) sl = MixAudio(bl, br, 0.1847, 0.1847) //0.1847*SL 0.1847*SR sr = MixAudio(bl, br, -0.1847, -0.1847) //-0.1847*SL -0.1847*SR blr = MergeChannels(sl, sr) //0.1847*SL-0.1847*SL 0.1847*SR-0.1847*SR return MixAudio(lrc, blr, 1.0, 1.0) //0.2613*FL+0.1847*C+0.1847*SUB+0.1847*SL-0.1847*SL 0.2613*FR+0.1847*C+0.1847*SUB+0.1847*SR-0.1847*SR}SoX: 1v0.2613,3v0.1847,4v0.1847,5v0.1847,5v-0.1847 2v0.2613,3v0.1847,4v0.1847,6v0.1847,6v-0.1847function Dmix6Dpl2Lfe(clip a) # 6 Channels FL, FR, C, LFE, SL, SR{ flr = GetChannel(a, 1, 2) fcc = GetChannel(a, 3, 3) lrc = MixAudio(flr, fcc, 0.2646, 0.1870) // 0.2646*FL+0.1870*C 0.2646FR+0.1870*C lfe = GetChannel(a, 4, 4) lrc = MixAudio(lrc, lfe, 1.0, 0.1870) // 0.2646*FL+0.1870*C+SUB*0.1870 0.2646*FR+0.1870*C+SUB*0.1870 bl = GetChannel(a, 5) br = GetChannel(a, 6) sl = MixAudio(bl, br, 0.2291, 0.1323) // 0.2291*SL 0.1323*SR sr = MixAudio(bl, br, -0.1323, -0.2291) // -0.1323*SL -0.2291*SR blr = MergeChannels(sl, sr) // 0.2291*SL+0.1323*SR -0.1323*SL-0.2291*SR return MixAudio(lrc, blr, 1.0, 1.0) //fl' = 0.2646*FL+0.1870*C+SUB*0.1870+0.2291*SL+0.1323*SR //fr' = 0.2646*FR+0.1870*C+SUB*0.1870-0.1323*SL-0.2291*SR}SoX: 1v0.2646,3v0.1870,4v0.1870,5v0.2991,6v0.1323 2v0.2646,3v0.1870,4v0.1870,5v-0.1323,6v-0.2291
ZitatWirst Du eine Option einbauen, dass man beim downmix den Subkanal ein- oder ausschliessen kann?
Man wird je nach Anzahl der Input Kanälen zur Auswahl haben:
- "toMono"
- "toStereo"
- "toStereo (dpl)"
- "toStereo (dp2)"
- "toStereo (lfe)"
- "toStereo (dpllfe)"
- "toStereo (dpl2fe)"
genauer:
if (value.trimmed() == "?") {
values << QObject::tr("toMono");
values << QObject::tr("toStereo");
values << QObject::tr("toStereo (dpl)");
values << QObject::tr("toStereo (dp2)");
values << QObject::tr("toStereo (lfe)");
values << QObject::tr("toStereo (dpllfe)");
values << QObject::tr("toStereo (dpl2fe)");
} else {
values << QObject::tr("don't change");
int count = value.trimmed().toInt();
if (count > 1) {
values << QObject::tr("to mono");
}
if (count >= 1) {
values << QObject::tr("toStereo");
}
if (count > 2) {
values << QObject::tr("toStereo (dpl)");
if (count > 3) {
values << QObject::tr("toStereo (dp2)");
if (count > 5) {
values << QObject::tr("toStereo (dpllfe)");
values << QObject::tr("toStereo (dp2lfe)");
}
}
}
}
Alles anzeigen
Davon ausgegangen das ist soweit alles richtig: Wie sieht das mit dem Upmix aus? Weiß da jemand etwas?
-> okay was gefunden http://forum.doom9.org/showthread.php?p=787216#post787216 nur wie krieg ich darauf SoX Befehle gebastelt?
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!