Mindmatter wrote on 11/17/2014, 9:14 AM
I was wondering if there is a way in Vegasaur to batch change the font or font attributes in text event media? It's always a real drag to change the fonts for , say, 50 subtitles as you cannot do it for all of them simultanously...
Marco. wrote on 11/17/2014, 9:57 AM
Very good news! Can't await to test.
Arthur.S wrote on 11/17/2014, 10:07 AM
I've just ordered - waiting for the download link. Why? Because included is the ability to choose WHICH ATTRIBUTES when you copy/paste. That's worth the $36 to me on it's own!! :-)
Arthur.S wrote on 11/17/2014, 10:32 AM
Not quite as good as it sounded. Although you can choose effects, pan/crop etc. You can't choose WHICH effects to paste. Still, a step in the right direction....
altarvic wrote on 11/17/2014, 11:46 AM
> "I was wondering if there is a way in Vegasaur to batch change the font or font attributes in text event media?"

Only for Title&Text events
Mindmatter wrote on 11/17/2014, 1:44 PM
Fantastic, thanks!
NickHope wrote on 11/17/2014, 2:19 PM
altarvic, Do you think Smart Trim would work with Panasonic GH4 4k UHD or C4K .mp4 files?

Also, the silence detection for voiceover sounds like a fantastic new feature.
altarvic wrote on 11/17/2014, 3:16 PM
Smart Trim has not been tested with many formats and codecs, therefore it is an experimental tool.
Version 2 has a fully functional 30-day trial period, you can test it.
TeeTime wrote on 11/17/2014, 9:56 PM
[i]>Also, the silence detection for voiceover sounds like a fantastic new feature.

+1. I am assuming this will work with nested veg's audio which may have silence but not breaks in the audio.

altarvic wrote on 11/18/2014, 8:10 AM
jerry, it does not process audio from nested projects, but it's a great feature request ;)
TeeTime wrote on 11/18/2014, 8:25 AM
Altarvic, I love Vegasaur's VO capability. Currently when using nested Vegs, I cut the nested audio so I can remove the silent sections, then run the VO tool. This is ok, unless of course I make a change to the nested veg. Then I have to redo the audio cuts before re-running the VO tool.

It will simplify things for me if you do add the ability to detect silence in nested Vegs. One other thing I would like to see added to the VO tool is the ability to create presets. Since I always prefer more duck than the default amount, I have to set this each time I run VO.

cold ones wrote on 11/18/2014, 10:24 AM
Been demo-ing it, Tweener & Paste Events Attributes alone are worth the money. Also appreciate the fix for Presets Manager which is a sweet way to backup & transfer Vegas presets. It also saves Filter Packages, which is huge

Nice job!
wwaag wrote on 11/18/2014, 12:47 PM
For Paste Events Attributes, what I'd really like to see is the option of either "replace" or "add to" the current attributes.

CJB wrote on 11/18/2014, 10:52 PM
I'd really like to see the VO feature work with nested veg file audio. The best place for it is soundtrack and in my workflow that is added after the scenes are fixed in their own veg files. One big .veg to combine them all. add soundtrack so that it transitions well across scenes.
Arthur.S wrote on 11/21/2014, 1:58 PM
+2 wwaag
Tom Pauncz wrote on 11/21/2014, 2:03 PM
+3 wwaag
johnmeyer wrote on 11/21/2014, 2:07 PM
There is, of course, this wonderful old script, from a decade ago. Still works, I think:

* Copyright (c) 2004, Folding Rain Filmworks Inc.
* author: Joe Howes (
* Coloring your final project in Vegas can be a bit of a bitch,
* espcially if you have a complex project divided into multiple
* sections. When you're going through and coloring, you may find
* that as you progress, coloring decisions you made early on
* just look lame, and going back and updating all of them is a
* pain in the ass because Vegas doesn't allow you to apply
* changes to multiple events or media at the same have
* to go into each one individually.
* This script allows you to select one or more video events on the
* timeline and apply effects and presets to either the events
* themselves, or the media in the media pool. This script has
* saved me VAST amounts of time in finishing, and I hope it does
* the same for you.
* - The reason you can't select items in the media pool and affect
* them directly is that in this version of Vegas (5.0b), the
* the scripting API doesn't allow you to check whether an item in
* the media pool is selected, so it would have to apply the effects
* to ALL media in the pool.
* - When affecting media, the effects are applied to all takes.
* - When affecting media, the algorithm is smart enough to check
* if a media pool item has already been affected and only process
* each one once.
* Select one or more video events on the timeline and run the script.
* From the dialog choose one effect and (optional) preset at a time
* and click "Add Effect" to add it to the stack of effects that will
* be applied to all selected events or media. Choose whether to
* affect events or media, then click "Assign".
* v1.1: Sep. 24, 2004
* 1.1:
* - Added the option to add to existing FX as well as replace.
* - (Hopefully) fixed some GUI display issues...where labels were
* being truncated.

import System.Windows.Forms;
import System.Text;
import System.Collections;
import Sony.Vegas;

try {

var fx = Vegas.VideoFX; // Vegas effects list
var done = false; // If nothing is done, let the user know
var plugInNameArray : ArrayList; // PlugIn names the user has chosen
var plugInFXArray : ArrayList; // The plugins associated with those names
var plugInPresetArray : ArrayList; // The presets associated with those plugins
var dlog = new FXReplacerDialog(); // The GUI

// Init
plugInFXArray = new ArrayList();

// Show the GUI
if (DialogResult.OK == dlog.ShowDialog()) {

// Get the user's choices
plugInNameArray = dlog.getPlugInNameArray();
plugInPresetArray = dlog.getPlugInPresetArray();

// Load the plugins the user has chosen
var e = new Enumerator(plugInNameArray);
while (!e.atEnd()) {
var plugInName = e.item();
var plugIn = fx.GetChildByName(plugInName);
if (null == plugIn) {
throw "could not find a plug-in named: '" + plugInName + "'";

// Pass those plugins and the user's preset choices to either
// the event replacer or the media replacer
var replaceFX = dlog.replaceExistingFXCheck.Checked;
if (dlog.applyToEventsRadio.Checked) {
done = replaceSelectedEventFX(plugInFXArray, plugInPresetArray, replaceFX);
} else {
done = replaceSelectedMediaFX(plugInFXArray, plugInPresetArray, replaceFX);


// Only bother the user if no events or media were changed.
/*if (!done) {
MessageBox.Show("No events affected.", "Done!");

} catch (e) {

* FUNCTION: replaceSelectedEventFX
* Iterate through all the video events and, if selected, remove all their
* FX plugins and replace with the user's selections.
function replaceSelectedEventFX(plugInArray:ArrayList, presetArray:ArrayList, replaceFX) {

var done = false;

for (var track in Vegas.Project.Tracks) {

if (!track.IsVideo()) {

for (var evnt in track.Events) {
if (evnt.Selected) {
replaceEventFX(evnt, plugInFXArray, plugInPresetArray, replaceFX);
done = true;


return done;


* FUNCTION: replaceSelectedMediaFX
* Iterate through all the video events and, if selected, remove all the plug-ins
* associated with their media pool entries and replace with the user's selections.
function replaceSelectedMediaFX(plugInArray:ArrayList, presetArray:ArrayList, replaceFX) {

var done = false;
var affectedMedia : ArrayList = new ArrayList();

for (var track in Vegas.Project.Tracks) {

if (!track.IsVideo()) {

for (var evnt in track.Events) {

if (evnt.Selected) {
var e = new Enumerator(evnt.Takes);

// Iterate through ALL the takes for this event and replace
// the FX on their media pool entries.
while (!e.atEnd()) {
var take = e.item();
var media = take.Media;
if (affectedMedia.Contains(media)) {
replaceMediaFX(media, plugInFXArray, plugInPresetArray, replaceFX);
done = true;



return done;


* FUNCTION: replaceMediaFX
* Assign all the plug-ins from plugInArray, along with the presets in presetArray,
* to the media entity. Note that if the user chose not to specify a preset for a
* given plug-in, it's corresponding presetArray entry will be a null.
function replaceMediaFX(media:Media, plugInArray:ArrayList, presetArray:ArrayList, replaceFX) {

if (replaceFX) {

var count = media.Effects.Count;

// Kill all the existing FX
while (count > 0) {
count = media.Effects.Count;


// Assign all the new FX
var e = new Enumerator(plugInArray);
var e2 = new Enumerator(presetArray);
while (!e.atEnd()) {
var plugIn = e.item();
var effect = new Effect(plugIn);

var preset = e2.item()

if (null != preset) {
effect.Preset = preset;


* FUNCTION: replaceEventFX
* Assign all the plug-ins from plugInArray, along with the presets in presetArray,
* to the event entity. Note that if the user chose not to specify a preset for a
* given plug-in, it's corresponding presetArray entry will be a null.
function replaceEventFX(evnt:VideoEvent, plugInArray:ArrayList, presetArray:ArrayList, replaceFX) {

if (replaceFX) {

var count = evnt.Effects.Count;

// Kill all the existing FX
while (count > 0) {
count = evnt.Effects.Count;


// Assign all the new FX
var e = new Enumerator(plugInArray);
var e2 = new Enumerator(presetArray);
while (!e.atEnd()) {
var plugIn = e.item();
var effect = new Effect(plugIn);

var preset = e2.item()

if (null != preset) {
effect.Preset = preset;


* CLASS: FXReplacerDialog
* The GUI.
class FXReplacerDialog extends Form {

var videoFXListBox : ListBox; // All Vegas' video FX will be listed here
var fxPresetListBox : ListBox; // All the presets
var finalApplicationListBox : ListBox; // All the user's choices

var applyToEventsRadio : RadioButton;
var applyToMediaRadio : RadioButton;
var replaceExistingFXCheck : CheckBox; // Replace or add to FX chain?

var addFXButton : Button;
var removeFXButton : Button;

var assignButton : Button;
var cancelButton : Button;

var videoFXParamGroup : GroupBox;
var fxPresetParamGroup : GroupBox;
var finalApplicationsParamGroup : GroupBox;

var presetList : ArrayList; // An ArrayList of ArrayLists holding presets
// for each plug-in
var plugInNameArray : ArrayList; // Contains the user's chosen plug-in names
var plugInPresetArray : ArrayList; // Contains the user's chosen preset names

* Init everything.
function FXReplacerDialog() {

this.Text = "Assign Plug-Ins to Selected Events or their Media";
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.StartPosition = FormStartPosition.CenterScreen;

plugInNameArray = new ArrayList();
plugInPresetArray = new ArrayList();

this.Width = 470;
this.Height = 480;

// VideoFX
this.videoFXListBox = new ListBox();
videoFXListBox.Location = new System.Drawing.Point(8, 18);
videoFXListBox.Name = "videoFXListBox";
videoFXListBox.Size = new System.Drawing.Size(200, 200);
videoFXListBox.TabIndex = 1;

// VideoFX ParamGroup
videoFXParamGroup = new GroupBox();
videoFXParamGroup.Location = new System.Drawing.Point(8, 8);
videoFXParamGroup.Name = "videoFXParamGroup";
videoFXParamGroup.Size = new System.Drawing.Size(216, 225);
//videoFXParamGroup.TabIndex = -1;
videoFXParamGroup.TabStop = false;
videoFXParamGroup.Text = "Choose a Plug-In";


// FX Presets
this.fxPresetListBox = new ListBox();
fxPresetListBox.Location = new System.Drawing.Point(8, 18);
fxPresetListBox.Name = "fxPresetListBox";
fxPresetListBox.Size = new System.Drawing.Size(200, 200);
fxPresetListBox.TabIndex = 2;

// FX Presets ParamGroup
fxPresetParamGroup = new GroupBox();
fxPresetParamGroup.Location = new System.Drawing.Point(240, 8);
fxPresetParamGroup.Name = "fxPresetParamGroup";
fxPresetParamGroup.Size = new System.Drawing.Size(216, 225);
//fxPresetParamGroup.TabIndex = -1;
fxPresetParamGroup.TabStop = false;
fxPresetParamGroup.Text = "Choose a Preset (optional)";


// Final Applications
this.finalApplicationListBox = new ListBox();
finalApplicationListBox.Location = new System.Drawing.Point(8, 18);
finalApplicationListBox.Name = "finalApplicationsListBox";
finalApplicationListBox.Size = new System.Drawing.Size(400, 100);
finalApplicationListBox.TabIndex = 5;

// Replace or Add?
replaceExistingFXCheck = new CheckBox();
replaceExistingFXCheck.Location = new System.Drawing.Point(25, 125);
replaceExistingFXCheck.Size = new System.Drawing.Size(125, 18);
replaceExistingFXCheck.Name = "replaceExistingFXCheck";
replaceExistingFXCheck.TabIndex = 6;
replaceExistingFXCheck.Checked = true;
replaceExistingFXCheck.Text = "Replace Existing FX";

// Events or Media Radios
applyToEventsRadio = new RadioButton();
applyToEventsRadio.Location = new System.Drawing.Point(160, 125);
applyToEventsRadio.Size = new System.Drawing.Size(120, 18);
applyToEventsRadio.Name = "applytoEventsRadio";
applyToEventsRadio.Checked = true;
applyToEventsRadio.TabIndex = 7;
applyToEventsRadio.Text = "Apply to Events";

applyToMediaRadio = new RadioButton();
applyToMediaRadio.Location = new System.Drawing.Point(280, 125);
applyToMediaRadio.Size = new System.Drawing.Size(120, 18);
applyToMediaRadio.Name = "applyToMediaRadio";
applyToMediaRadio.TabIndex = 8;
applyToMediaRadio.Text = "Apply to Media";

// Final Applications ParamGroup
finalApplicationsParamGroup = new GroupBox();
finalApplicationsParamGroup.Location = new System.Drawing.Point(25, 270);
finalApplicationsParamGroup.Name = "finalApplicationsParamGroup";
finalApplicationsParamGroup.Size = new System.Drawing.Size(436, 150);
//finalApplicationsParamGroup.TabIndex = 4;
finalApplicationsParamGroup.TabStop = false;
finalApplicationsParamGroup.Text = "FX to Assign";


// Add Effect button
addFXButton = new Button();
addFXButton.Text = "Add Effect";
addFXButton.Left = 124;
addFXButton.Top = 240;
addFXButton.Width = 100;
addFXButton.Enabled = false;
addFXButton.TabIndex = 3;

// Remove Effect button
removeFXButton = new Button();
removeFXButton.Text = "Remove Effect";
removeFXButton.Left = 240;
removeFXButton.Top = 240;
removeFXButton.Width = 100;
removeFXButton.Enabled = false;
removeFXButton.TabIndex = 4;

// Assign button
assignButton = new Button();
assignButton.DialogResult = System.Windows.Forms.DialogResult.OK;
assignButton.Text = "Assign";
assignButton.Left = 300;
assignButton.Top = 425;
AcceptButton = assignButton;
assignButton.TabIndex = 9;

// Cancel button
cancelButton = new Button();
cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
cancelButton.Text = "Cancel";
cancelButton.Left = 380;
cancelButton.Top = 425;
CancelButton = cancelButton;
cancelButton.TabIndex = 10;



* FUNCTION: populate
* Populates the data model with all of Vegas' plug-ins and presets.
function populate() {

var fx = Vegas.VideoFX;
var plugInList = new ArrayList();
presetList = new ArrayList();

var e = new Enumerator(fx);
var first = true;

// Get all the plug-ins
while (!e.atEnd()) {

if (first) {
first = false;

var plugIn = e.item();



// Populate the videoFX list box and the presets data model
var e = new Enumerator(plugInList);

while (!e.atEnd()) {

var plugInName = e.item();

var plugIn = fx.GetChildByName(plugInName);
var presets : ArrayList = new ArrayList();
var e2 = new Enumerator(plugIn.Presets);

while (!e2.atEnd()) {
var preset = e2.item();



* FUNCTION: videoFXListBoxOnClick
* Event handler for clicks on the videoFXListBox. We update GUI buttons,
* populate the preset box.
function videoFXListBoxOnClick(sender : Object, evt : System.EventArgs) {

var index = videoFXListBox.SelectedIndex;

// If there's at least one item selected in the list, enable the
// Add Effect button.
if (index != -1) {
addFXButton.Enabled = true;

// Get the presets for the chosen plug-in and populate the presets box.
var presets : ArrayList = presetList.Item(videoFXListBox.SelectedIndex);


var e = new Enumerator(presets);

while (!e.atEnd()) {
var preset = e.item();



* FUNCTION: addFXOnClick
* When the Add Effect button is clicked, reflect the user's choice
* both in the GUI and in the underlying data model.
function addFXOnClick(sender: Object, evt : System.EventArgs) {

// Add the plug-in choice
var plugInName = videoFXListBox.SelectedItem.toString();
var presetIndex = fxPresetListBox.SelectedIndex;
var plugInPreset = null;
if (presetIndex != -1) {
plugInPreset = fxPresetListBox.SelectedItem.toString();

var displayString = new StringBuilder(plugInName);

// If a preset is chosen, add that too
if (presetIndex != -1) {
displayString.Append(" - <");


// Add the plug-in choice to the data model

// If there is a preset choice, add that, otherwise add null
if (presetIndex != -1) {
} else {

// If there is at least one item available in the FX to Assign box,
// enable the Remove Effect button
var removeEnabled = (finalApplicationListBox.Items.Count > 0) ? true : false;
removeFXButton.Enabled = removeEnabled;

* FUNCTION: removeFXOnClick
* Remove the selected cohice from the FX to Assign box and from the data model.
function removeFXOnClick(sender: Object, evt : System.EventArgs) {

// Remove from the data model

// Remove from the GUI
var removeEnabled = (finalApplicationListBox.Items.Count > 0) ? true : false;
removeFXButton.Enabled = removeEnabled;

* FUNCTION: getPlugInNameArray
* Accessor for the user's plug-in choices.
function getPlugInNameArray() {
return plugInNameArray;

* FUNCTION: getPlugInPresetArray
* Accessor for the user's preset choices.
function getPlugInPresetArray() {
return plugInPresetArray;

JohnnyRoy wrote on 11/21/2014, 2:17 PM
> Posted by: wwaag "For Paste Events Attributes, what I'd really like to see is the option of either "replace" or "add to" the current attributes."

You can do this with event attributes using VASST Property Assistant. (different than what Vegasaur is doing because it's just focused on event properties and not envelopes)

Notice in the screenshot below that the attributes are a 3-way toggle. Checked, Unchecked, and a Solid color which means "Don't change/Bypass". This gives you the ability to set or clear attributes as well as not touch whatever they are already set to. Note: The Get From Event button will pull the attributes from the currently selected event to do the initial copy and then you can paste them to any number of selected events.

In the interest of full disclosure I wrote Property Assistant as well as all the other FasstApps that are all just $9.95 each. Buy as many or as few as you want... no need to pay for a feature you'll never use. ;-)


John Rofrano
Sundance Media Group / VASST
altarvic wrote on 11/21/2014, 3:11 PM
> "For Paste Events Attributes, what I'd really like to see is the option of either "replace" or "add to" the current attributes."

Vegasaur has Apply/Remove FX and Quick Properties tools, but I understand that this is not the same as adding fx from the Clipboard. Technically, Vegasaur's PEA command depends on Vegas' PEA. I mean if Vegas replaces effects - Vegasaur also does this. At this point, I have not found a workaround, but I will continue my research...

p.s if each individual tool in Vegasaur would cost $10 - the entire toolkit would cost $400 ;)
Gene Aum wrote on 11/21/2014, 3:36 PM
I would like to see a Compositing Mode Preview feature. So instead of constantly clicking on the button each time to bring up the menu, a way to keep the CM window open, and select a mode while having it take effect immediately.

Kind of like the way you can immediately see the effects of plugin presets.

TeeTime wrote on 11/22/2014, 5:58 AM
>There is, of course, this wonderful old script, from a decade ago. Still works, I think:

"Coloring your final project in Vegas can be a bit of a *****,"

Well John, as an aside I just learned from your post that one way to defeat the SCS censor is to insert your word into a codeblock ;-).

OldSmoke wrote on 11/22/2014, 9:47 AM
Since this a Vegasaur thread I just wanted to post this.

Since I do 4K work and my system isn't full up to do it well I use proxies with Vegasaur. I don't use Vegas compatible ones, I don't like the way Vegas is handling the whole proxy workflow, I use standard files and the replace media feature of Vegasaur. There was however a small bug in it. Once you move the project, Vegasaur couldn't find the replaced media anymore even if you have moved those too. I wrote to their customer support and within a few days there was a bug fix! Would be nice to see SCS stepping up to the plate but that will never happen I guess.

Here is Vegasaur's reply:

[I]There is a limitation with double extensions. They work only in one direction: you can replace filename.mp4 with filename.mp4.mxf, but you can not replace filename.mp4.mxf with filename.mp4.
Here's hotfix:
Please download it and try to replace your media files.[/I]

Proud owner of Sony Vegas Pro 7, 8, 9, 10, 11, 12 & 13 and now Magix VP15&16.

System Spec.:
Motherboard: ASUS X299 Prime-A

Ram: G.Skill 4x8GB DDR4 2666 XMP

CPU: i7-9800x @ 4.6GHz (custom water cooling system)
GPU: 1x AMD Vega Pro Frontier Edition (water cooled)
Hard drives: System Samsung 970Pro NVME, AV-Projects 1TB (4x Intel P7600 512GB VROC), 4x 2.5" Hotswap bays, 1x 3.5" Hotswap Bay, 1x LG BluRay Burner

PSU: Corsair 1200W
Monitor: 2x Dell Ultrasharp U2713HM (2560x1440)

Gary James wrote on 11/22/2014, 10:18 AM
The features in Vegasaur, Excalibur, and the VASST offerings are truly powerful and make editing tasks in Vegas much simpler. But for those of you who don't own any of these utilities, Timeline Tools offers a similar feature in it's Video Event Editor. Choose the Events that you want to modify, either by Highlighting them in the Timeline Tools main display grid or by (1) Selecting them in the Vegas Timeline; (2) Bring up the appropriate editor; (3) And set the specific Event property you want to modify. The value you enter will be applied to all the chosen Events. Note: different editor selections appear for Video or Audio Events.