mr.Troxel and other Scripting Pros

ziggly wrote on 8/23/2007, 6:01 PM
Help
i'm using Vegas 4(there are audio routing issues with later versions)

it would mean so much to me if i could have two versions of RenderOnMarkers script. One to render as Windows media audio V9. and another version of this script to render as 48hz 16 Bit, Stereo PCM wave file.

i have tried unsuccessfuly to modify the RenderOnMarkers script. I would appreciate any help offered, i find this script invaluable.





/**
* This script will render between markers
*
* Written By: Edward Troxel
* www.jetdv.com/tts
* Modified: 05-29-2003
**/

import System;
import System.Text;
import System.IO;
import System.Windows.Forms;
import System.Object;
import SonicFoundry.Vegas;

// here are some default variables for the GUI.
//Path names must use "\\" to indicate a standard path "\"
//so, defaultBasePath refers to D:\renders
var defaultBasePath = "D:\\vmedia\\";

// set this to true if you want to allow files to be overwritten
var overwriteExistingFiles = false;

try {

var mrkEnum = new Enumerator(Vegas.Project.Markers);

var zeroMark = new Timecode(0);
var PrevMark = zeroMark;
var currMark = zeroMark;
var SubClipNum = 1;
var renderStart : Timecode;
var totalLength = Vegas.Project.Length;
var renderLength : Timecode;

var renderer = FindRenderer(/Video for Windows/);
if (null == renderer)
throw "failed to find renderer";

var template = FindRenderTemplate(renderer, /NTSC DV/);
if (null == template)
throw "failed to find template";


//Go through the list of Markers
while (!mrkEnum.atEnd()) {
currMark = Marker(mrkEnum.item()).Position;

renderStart = PrevMark;
renderLength = currMark - PrevMark;
DoRender(defaultBasePath + "test" + SubClipNum + ".AVI", renderer, template, renderStart, renderLength);

PrevMark = currMark
SubClipNum++;
mrkEnum.moveNext();
}

// Do the final clip
renderStart = PrevMark;
renderLength = totalLength - PrevMark;
DoRender(defaultBasePath + "test" + SubClipNum + ".AVI", renderer, template, renderStart, renderLength);

} catch (e) {
MessageBox.Show(e);
}


// perform the render. The Render method returns a member of the
// RenderStatus enumeration. If it is anything other than OK, exit
// the loops. This will throw an error message string if the render
// does not complete successfully.
function DoRender(fileName, rndr, rndrTemplate, start, length) {
// make sure the file does not already exist
if (!overwriteExistingFiles && File.Exists(fileName)) {
throw "File already exists: " + fileName;
}

// perform the render. The Render method returns
// a member of the RenderStatus enumeration. If
// it is anything other than OK, exit the loops.
var status = Vegas.Render(fileName, rndrTemplate, start, length);

// if the render completed successfully, just return
if (status == RenderStatus.Complete)
return;

// if the user canceled, throw out a special message that won't be
// displayed.
if (status == RenderStatus.Canceled) {
var cancelMsg = new String("User canceled");
cancelMsg.skipMessageBox = true;
throw cancelMsg;
}

// if the render failed, throw out a detailed error message.
var msg : StringBuilder = new StringBuilder("Render failed:\n");
msg.Append("\n file name: ");
msg.Append(fileName);
msg.Append("\n Renderer: ");
msg.Append(rndr.FileTypeName);
msg.Append("\n Template: ");
msg.Append(rndrTemplate.Name);
msg.Append("\n Start Time: ");
msg.Append(start.ToString());
msg.Append("\n Length: ");
msg.Append(length.ToString());
throw msg;
}



function FindRenderer(rendererRegExp : RegExp) : Renderer {
var rendererEnum : Enumerator = new Enumerator(Vegas.Renderers);
while (!rendererEnum.atEnd()) {
var renderer : Renderer = Renderer(rendererEnum.item());
if (null != renderer.FileTypeName.match(rendererRegExp)) {
return renderer;
}
rendererEnum.moveNext();
}
return null;
}

function FindRenderTemplate(renderer : Renderer, templateRegExp : RegExp) : RenderTemplate {
var templateEnum : Enumerator = new Enumerator(renderer.Templates);
while (!templateEnum.atEnd()) {
var renderTemplate : RenderTemplate = RenderTemplate(templateEnum.item());
if (null != renderTemplate.Name.match(templateRegExp)) {
return renderTemplate;
}
templateEnum.moveNext();
}
return null;
}




Comments

jetdv wrote on 8/24/2007, 6:44 AM
These are the two lines you need to change:

var renderer = FindRenderer(/Video for Windows/);
var template = FindRenderTemplate(renderer, /NTSC DV/);


I've noticed some difficulty in picking the WAV renderer. You could try using a subset of the full name.