Hallo zusammen.
Per Script möchte ich den Surround Kanal bei einem Track auf 'nur LFE' setzen.
Ich bekomme das einfach nicht hin. Hat jemand eine Lösung?
Bisher funktioniert folgendes:
Vorher:
Script 'Stereo2Surround':
/**
* Program: Stereo2Surround.cs
* Description: This script will set up and change Stereo to Surround
* Select one Audio track
*
* Revision Date: Sep 03, 2018
* Author: Werner
**/
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using ScriptPortal.Vegas;
public class EntryPoint
{
Vegas myVegas = null;
List<Track> SurrAudioTrk = new List<Track>();
private static string[] trkNames = { "frontLeft", "frontRight", "center", "LFE", "rearLeft", "rearRight" };
public void FromVegas(Vegas vegas)
{
myVegas = vegas;
// Collect list of selected audio tracks
foreach (Track selTrk in myVegas.Project.Tracks)
{
if (selTrk.MediaType == MediaType.Audio && selTrk.Selected)
SurrAudioTrk.Add(selTrk);
}
// leave if no or more then one audio track selected
if (SurrAudioTrk.Count != 1)
{
MessageBox.Show("Please select ONE AUDIO Track.");
return;
}
// set up surround bus if not set
if (AudioBusMode.Stereo == myVegas.Project.Audio.MasterBusMode)
myVegas.Project.Audio.MasterBusMode = AudioBusMode.Surround;
// rename first audio track to 'frontLeft'
SurrAudioTrk[0].Name = trkNames[0];
Track source = SurrAudioTrk[0];
SurrAudioTrk.Clear();
// https://forums.creativecow.net/docs/forums/post.php forumid=24&postid=942170&univpostid=942170&pview=t
// Thank you Edward Troxel
// Create 5 more audio tracks and copy events from source
int trackIdx = source.Index;
for (int i = trackIdx + 1, namesIdx = 1; i < trackIdx + 6; i++, namesIdx++)
{
Track dest = new AudioTrack(i, trkNames[namesIdx]);
myVegas.Project.Tracks.Add(dest);
// Copy all events into dest tracks
foreach (TrackEvent evnt in source.Events)
{
TrackEvent newEvent = evnt.Copy(dest, evnt.Start);
AudioEvent audioEvent = (AudioEvent)newEvent;
// Set disable left channel
if (namesIdx == 1 || namesIdx == 5)
audioEvent.Channels = ChannelRemapping.DisableLeft;
// Set disable right channel
if (namesIdx == 4)
audioEvent.Channels = ChannelRemapping.DisableRight;
// CENTER and LFE
if (namesIdx == 2 || namesIdx == 3)
audioEvent.Channels = ChannelRemapping.Mono;
}
}
// Set disable right channel at source track events
foreach (TrackEvent evnt in source.Events)
{
AudioEvent audioEvent = (AudioEvent)evnt;
audioEvent.Channels = ChannelRemapping.DisableRight;
}
// find LFE audio track and set surround to 'only LFE'
foreach (Track lfe in myVegas.Project.Tracks)
{
if (lfe.Name == trkNames[3])
{
lfe.Selected = true;
AudioTrack tmpLFE = new AudioTrack(lfe.Index);
// what can i do??????
break;
}
}
}
}
Nachher: