Preview, then name regions using listbox dialog

johnmeyer wrote on 11/6/2003, 6:05 PM
The description of this script is given in the comments in its header below.

I created this because I couldn't find a way in Vegas to manage a huge number (400-600) of short clips that have to be condensed into a five minute music video. I needed a way to create a database from these clips.

Using this script here is my workflow: I took my video, and trimmed out all the "garbage," leaving several hundred short events on one track. This script helps me name these events, using regions, and do so in a consistent manner, using "tags" rather than having to type everything. Once the regions are all created and named, I render to a single, new AVI file. I then start a new project. I use the "Region View" in Vegas' Explorer to see and sort the regions I have created. I can then drag the appropriate regions from this one AVI file to my timeline. The only flaw in this workflow so far is that I can't really tell which clips have not yet been used.

Vegas could use a lot of work in the area of media management. Hopefully this is a small step in the right direction.


/**
* PURPOSE OF THIS SCRIPT:
*
* This script creates a region for every event on the selected track.
* As it creates each region, it lets you name that region using a dialog box.
* Each event is optionally previewed (a sample of ten frames across
* the entire event) for five seconds prior to naming.
* You can re-preview the event as often as you like.
*
* Because of the limitations of enumeration, there is no easy way to
* go back to a previous event. However, if you cancel the script,
* it will skip over any existing regions that you already created so
* you can continue where you left off.
*
* Region naming is done with ListBoxes that contain fixed text strings.
* You can also enter additional text using the text box.
* A region number is appended to each region name to ensure unique names.
*
* The "Enter" key "click" the next button no matter where you are in the
* dialog box.
*
* Written By: John Meyer
* November 6, 2003
* Tested on Windows XP Pro, SP1, with Vegas 4.0d
*
**/

import System;
import System.IO;
import System.Collections;
import System.Text;
import System.Windows.Forms;
import SonicFoundry.Vegas;
import System.Threading;

var evnt : TrackEvent;
var myRegion : Region;
var i : Double;
var dLength : Double;
var dStart : Double;

var RegionName : String;
var RegionNumber;
var PreviewVideo;


try {

RegionNumber = 1;
PreviewVideo = 1;

//Find the selected event
var track = FindSelectedTrack();
if (null == track)
throw "no selected track";

var eventEnum = new Enumerator(track.Events);

// Go through each event on the selected track.
while (!eventEnum.atEnd()) {

evnt = TrackEvent(eventEnum.item());
dLength = evnt.Length.ToMilliseconds();
dStart = evnt.Start.ToMilliseconds();

if (!RegionExist (dStart,dLength) ) { // Only proceed if no region

// Preview the video, but only if preview is enabled in the dialog check box.
if (PreviewVideo) {

for (i = 0; i < 10; i++) {
Vegas.Cursor = evnt.Start + new Timecode(0.1 * i * dLength);
Thread.Sleep(250); // Change this to change playback speed
Vegas.UpdateUI();
}
}

// Get region information through the dialog box defined below.
var dialog = new MainDialog("", 0, RegionNumber, PreviewVideo);
var dialogResult = dialog.ShowDialog();

// Proceed if the "Next" button was pressed.
if (System.Windows.Forms.DialogResult.OK == dialogResult) {

// Get the region name from the dialog box values.
RegionName = dialog.regionBox1.Text+", "+dialog.regionBox2.Text;

// Create the region name from the Listbox, textbox, and region number
if (dialog.RegionNameBox.Text != " ") {
RegionName = RegionName + " " + dialog.RegionNameBox.Text + " " + RegionNumber.ToString();
}

else {
RegionName = " " + RegionName+RegionNumber.ToString();
}

// Insert a region "over" this event.
myRegion = new Region(evnt.Start,evnt.Length,RegionName);
Vegas.Project.Regions.Add(myRegion);

// Move to the next event, and increment the region number
eventEnum.moveNext();
RegionNumber++;
}

else {

if (System.Windows.Forms.DialogResult.Cancel == dialogResult) {
throw "Operation cancelled";
}

}

PreviewVideo = dialog.PreviewBox.Checked ? 1 : 0;
}
else { // Else if !RegionExist
eventEnum.moveNext(); // If region already existed, simply go to the next event
RegionNumber++;
}

}

}

catch (e) {
MessageBox.Show(e);
}
// End Main Program

//
// ---------------------------------
// Begin functions


function FindSelectedTrack() : Track {
var trackEnum = new Enumerator(Vegas.Project.Tracks);
while (!trackEnum.atEnd()) {
var track : Track = Track(trackEnum.item());
if (track.Selected) {
return track;
}
trackEnum.moveNext();
}
return null;
}


//-------------------------------------------------------
// Checks if a region already exists for this event

function RegionExist (dStart,dLength) : boolean {

var markerEnum = new Enumerator(Vegas.Project.Regions);

while (!markerEnum.atEnd()) {
var Region = markerEnum.item();
var RegionLength = Region.Length.ToMilliseconds();
var RegionStart = Region.Position.ToMilliseconds();

if ( (dLength == RegionLength) && (dStart == RegionStart) ) {
return 1;
}
markerEnum.moveNext();
}
return 0;
}


//-------------------------------------------------------
// Form subclass that is the dialog box for this script
class MainDialog extends Form {
var RegionNameBox;
var regionBox1;
var regionBox2;
var PreviewBox;

function MainDialog(RegionName, region, RegionNumber, PreviewVideo) {

this.Text = "Create Regions";
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.StartPosition = FormStartPosition.CenterScreen;
this.Width = 500;

var buttonWidth = 80;

var label = new Label();
label.AutoSize = true;
label.Text = "Region Name 1:";
label.Left = 10;
label.Top = 15;
Controls.Add(label);
regionBox1 = new ListBox(); // Change to ComboBox() to permit random text entry
regionBox1.Left = label.Right;
regionBox1.Top = label.Top-5; // Note how positions are relative to other objects
regionBox1.Width = 200;
regionBox1.Height = 170;
regionBox1.DropDownWidth = 200;
regionBox1.Items.Add("Alison"); // *********************************** //
regionBox1.Items.Add("Elise"); // //
regionBox1.Items.Add("Jackie"); // Change the names to the ones //
regionBox1.Items.Add("Jamie"); // you want. You can also simply //
regionBox1.Items.Add("Katie"); // add or delete the lines here //
regionBox1.Items.Add("Larissa"); // to get the number of entries //
regionBox1.Items.Add("Michelle"); // you want. //
regionBox1.Items.Add("Natasha"); // //
regionBox1.Items.Add("Quinnie"); // //
regionBox1.Items.Add("Tyler"); // *********************************** //
regionBox1.SelectedIndex = region;
Controls.Add(regionBox1);

var label = new Label();
label.AutoSize = true;
label.Text = "Region Name 2:";
label.Left = 10;
label.Top = regionBox1.Bottom + 20;
Controls.Add(label);
regionBox2 = new ListBox(); // Change to ComboBox() to permit random text entry
regionBox2.Width = 200;
regionBox2.Height = 130;
regionBox2.DropDownWidth = 200;
regionBox2.Left = label.Right;
regionBox2.Top = label.Top-5;
regionBox2.Items.Add("Hit"); // Add or delete these lines (same as above)
regionBox2.Items.Add("Dig");
regionBox2.Items.Add("Serve");
regionBox2.Items.Add("Set");
regionBox2.Items.Add("Group");
regionBox2.Items.Add("Unusual");
regionBox2.Items.Add("Warmup");
regionBox2.SelectedIndex = region;
Controls.Add(regionBox2);

RegionNameBox = addTextControl("Region Suffix: ", 10, 300, regionBox2.Bottom + 16, "");

var label = new Label();
label.AutoSize = true;
label.Text = "Region Number: " + RegionNumber.ToString();
label.Left = 10;
label.Top = RegionNameBox.Bottom + 20;
Controls.Add(label);

PreviewBox = new CheckBox();
PreviewBox.Left = 10;
PreviewBox.Width = 160;
PreviewBox.Top = label.Bottom + 15;
PreviewBox.Text = "Preview Video";
PreviewBox.Checked = PreviewVideo != 0;
Controls.Add(PreviewBox);

var buttonTop = PreviewBox.Top;

var cancelButton = new Button();
cancelButton.Text = "Cancel";
cancelButton.Left = this.Width - (1*(buttonWidth+10));
cancelButton.Top = regionBox1.Top;
cancelButton.Height = cancelButton.Font.Height + 12;
cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
CancelButton = cancelButton;
Controls.Add(cancelButton);

var NextButton = new Button();
NextButton.Text = "Next";
NextButton.Left = this.Width - (1*(buttonWidth+10));
NextButton.Top = buttonTop;
NextButton.Width = buttonWidth;
NextButton.Height = NextButton.Font.Height + 12;
NextButton.DialogResult = System.Windows.Forms.DialogResult.OK;
AcceptButton = NextButton; // The Enter key will automatically activate this button.
Controls.Add(NextButton);

var ReplayButton = new Button();
ReplayButton.Text = "Replay";
ReplayButton.Left = this.Width - (2*(buttonWidth+10));
ReplayButton.Top = buttonTop;
ReplayButton.Width = buttonWidth;
ReplayButton.Height = ReplayButton.Font.Height + 12;
ReplayButton.DialogResult = System.Windows.Forms.DialogResult.Retry;
Controls.Add(ReplayButton);


var titleHeight = this.Height - this.ClientSize.Height;
this.Height = titleHeight + NextButton.Bottom + 20;
} // End function MainDialog
//
// -------------------------------------
function addTextControl(labelName, left, width, top, defaultValue) {
var label = new Label();
label.AutoSize = true;
label.Text = labelName + ":";
label.Left = left;
label.Top = top + 4;
Controls.Add(label);

var textbox = new TextBox();
textbox.Multiline = false;
textbox.Left = label.Right;
textbox.Top = top;
textbox.Width = width - (label.Width);
textbox.Text = defaultValue;
Controls.Add(textbox);

return textbox;
}

} // End class MainDialog


Comments

J_Mac wrote on 11/7/2003, 7:12 AM
John, Thanks!!! for your hard work and vision on this script. It will be very helpful. I am currently returning the Error code :
Error on line 2:
Expecting more source characters.
What do I need to add to supply the missing info characters? Thanks for your help and hard work. John

P.S. I am also returnung the same E.C. in the Time Lapse script. Thanks for your help. John
johnmeyer wrote on 11/7/2003, 9:33 AM
John,

I suspect the problem may result from how text gets copied from a browser window. I assume that you copied my script from the first comment line to the end. If you paste this into Notepad, you will probably notice that the lines all run together. If so, you may need to put this into a word processor (I use Microsoft Wod) and do a search and replace. Search for Manaual Line Breaks (you'll find them under the "Special" button in the search/replace dialog). and replace them with Paragraph Marks (also in the Special dialog).

Another source of problem could be the version of .NET you are using. I am frankly not sure what version is required with my scripts. If you click on the "Windows Update" button (found on the Start button on most recent installations of Windows) you can look for the latest version there.

Finally, you need to be using Vegas 4.0d. The scripts will not work with earlier versions. Actually this is the first thing you should check (Help --> About).

P.S. I just copied the text from my initial post above, and then created a new script file (saved with the extension ".js") and it worked just fine, so I am sure that the text did indeed upload to the Sony site).
Frenchy wrote on 11/7/2003, 9:55 AM
John:

Thanks for your efforts on this script (and other issues, as well) I haven't tried it yet, but as far as copying it, I paste it in wordpad, and save it formatted as rich text format with a .js extension. This saves all formatting as presented here. Do you see any problems/conflicts with this technique? I just got tired of seeing one long line in notepad... BTW, is WOD a new MS program? ;-)

Thanks again

Frenchy
J_Mac wrote on 11/7/2003, 10:13 AM
John, thanks for your reply. I'm using 4.0d build 205, just performed windows updates, a few security installs, and .Net version 1.1. I'll try the MS word format, although other scripts work ok from notepad. Thanks for your help, and I am looking forward to getting these running. John.
J_Mac wrote on 11/7/2003, 10:25 AM
Thanks, Frenchy. The wordpad approach fixed the format issue, and the script appears as written by John. Now I return the E.C., Invalid character on line 1. Any ideas? Which is line 1?, and previously line 2? Thanks again John.
johnmeyer wrote on 11/7/2003, 10:27 AM
Do you see any problems/conflicts with this technique?

If it works, that's the proof of the pudding.

The most important thing is when you save a file using a word processor (or any application), save it in a plain text format. Any "rich text" or other format may add hidden formatting character that can really mess up the script interpreter.
johnmeyer wrote on 11/7/2003, 10:34 AM
Thanks, Frenchy. The wordpad approach fixed the format issue, and the script appears as written by John. Now I return the E.C., Invalid character on line 1

See my note to Frency above. Keep your Wordwrap setting the same, but do not save as Rich Text. Save as a plain text file, but make sure you type the extension "js" to override the default "txt" extension.

Quite frankly, I cannot get it to save correctly from Notepad. I am pretty certain the problem has to do with manual line breaks. (See my earlier post above for the solution).
johnmeyer wrote on 11/7/2003, 10:47 AM
Let me try this, here is the same script, but I'm not going to use the HTML formatting. Try copying and pasting this, but do NOT use wordwrap in Notepad. Save with the "js" extension.
-------------------------------------------------
Script starts below this line:
-------------------------------------------------
/**
* PURPOSE OF THIS SCRIPT:
*
* This script creates a region for every event on the selected track.
* As it creates each region, it lets you name that region using a dialog box.
* Each event is optionally previewed (a sample of ten frames across
* the entire event) for five seconds prior to naming.
* You can re-preview the event as often as you like.
*
* Because of the limitations of enumeration, there is no easy way to
* go back to a previous event. However, if you cancel the script,
* it will skip over any existing regions that you already created so
* you can continue where you left off.
*
* Region naming is done with ListBoxes that contain fixed text strings.
* You can also enter additional text using the text box.
* A region number is appended to each region name to ensure unique names.
*
* The "Enter" key "click" the next button no matter where you are in the
* dialog box.
*
* Written By: John Meyer
* November 6, 2003
* Tested on Windows XP Pro, SP1, with Vegas 4.0d
*
**/

import System;
import System.IO;
import System.Collections;
import System.Text;
import System.Windows.Forms;
import SonicFoundry.Vegas;
import System.Threading;

var evnt : TrackEvent;
var myRegion : Region;
var i : Double;
var dLength : Double;
var dStart : Double;

var RegionName : String;
var RegionNumber;
var PreviewVideo;


try {

RegionNumber = 1;
PreviewVideo = 1;

//Find the selected event
var track = FindSelectedTrack();
if (null == track)
throw "no selected track";

var eventEnum = new Enumerator(track.Events);

// Go through each event on the selected track.
while (!eventEnum.atEnd()) {

evnt = TrackEvent(eventEnum.item());
dLength = evnt.Length.ToMilliseconds();
dStart = evnt.Start.ToMilliseconds();

if (!RegionExist (dStart,dLength) ) { // Only proceed if no region

// Preview the video, but only if preview is enabled in the dialog check box.
if (PreviewVideo) {

for (i = 0; i < 10; i++) {
Vegas.Cursor = evnt.Start + new Timecode(0.1 * i * dLength);
Thread.Sleep(250); // Change this to change playback speed
Vegas.UpdateUI();
}
}

// Get region information through the dialog box defined below.
var dialog = new MainDialog("", 0, RegionNumber, PreviewVideo);
var dialogResult = dialog.ShowDialog();

// Proceed if the "Next" button was pressed.
if (System.Windows.Forms.DialogResult.OK == dialogResult) {

// Get the region name from the dialog box values.
RegionName = dialog.regionBox1.Text+", "+dialog.regionBox2.Text;

// Create the region name from the Listbox, textbox, and region number
if (dialog.RegionNameBox.Text != " ") {
RegionName = RegionName + " " + dialog.RegionNameBox.Text + " " + RegionNumber.ToString();
}

else {
RegionName = " " + RegionName+RegionNumber.ToString();
}

// Insert a region "over" this event.
myRegion = new Region(evnt.Start,evnt.Length,RegionName);
Vegas.Project.Regions.Add(myRegion);

// Move to the next event, and increment the region number
eventEnum.moveNext();
RegionNumber++;
}

else {

if (System.Windows.Forms.DialogResult.Cancel == dialogResult) {
throw "Operation cancelled";
}

}

PreviewVideo = dialog.PreviewBox.Checked ? 1 : 0;
}
else { // Else if !RegionExist
eventEnum.moveNext(); // If region already existed, simply go to the next event
RegionNumber++;
}

}

}

catch (e) {
MessageBox.Show(e);
}
// End Main Program

//
// ---------------------------------
// Begin functions


function FindSelectedTrack() : Track {
var trackEnum = new Enumerator(Vegas.Project.Tracks);
while (!trackEnum.atEnd()) {
var track : Track = Track(trackEnum.item());
if (track.Selected) {
return track;
}
trackEnum.moveNext();
}
return null;
}


//-------------------------------------------------------
// Checks if a region already exists for this event

function RegionExist (dStart,dLength) : boolean {

var markerEnum = new Enumerator(Vegas.Project.Regions);

while (!markerEnum.atEnd()) {
var Region = markerEnum.item();
var RegionLength = Region.Length.ToMilliseconds();
var RegionStart = Region.Position.ToMilliseconds();

if ( (dLength == RegionLength) && (dStart == RegionStart) ) {
return 1;
}
markerEnum.moveNext();
}
return 0;
}


//-------------------------------------------------------
// Form subclass that is the dialog box for this script
class MainDialog extends Form {
var RegionNameBox;
var regionBox1;
var regionBox2;
var PreviewBox;

function MainDialog(RegionName, region, RegionNumber, PreviewVideo) {

this.Text = "Create Regions";
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.StartPosition = FormStartPosition.CenterScreen;
this.Width = 500;

var buttonWidth = 80;

var label = new Label();
label.AutoSize = true;
label.Text = "Region Name 1:";
label.Left = 10;
label.Top = 15;
Controls.Add(label);
regionBox1 = new ListBox(); // Change to ComboBox() to permit random text entry
regionBox1.Left = label.Right;
regionBox1.Top = label.Top-5; // Note how positions are relative to other objects
regionBox1.Width = 200;
regionBox1.Height = 210;
regionBox1.DropDownWidth = 200;
regionBox1.Items.Add("Alison"); // *********************************** //
regionBox1.Items.Add("Elise"); // //
regionBox1.Items.Add("Group"); // //
regionBox1.Items.Add("Jackie"); // Change the names to the ones //
regionBox1.Items.Add("Jamie"); // you want. You can also simply //
regionBox1.Items.Add("Jung"); // add or delete the lines here //
regionBox1.Items.Add("Katie"); // to get the number of entries //
regionBox1.Items.Add("Larissa"); // you want. //
regionBox1.Items.Add("Michelle"); // //
regionBox1.Items.Add("Natasha"); // //
regionBox1.Items.Add("Quinnie"); // //
regionBox1.Items.Add("Tyler"); // *********************************** //
regionBox1.SelectedIndex = region;
Controls.Add(regionBox1);

var label = new Label();
label.AutoSize = true;
label.Text = "Region Name 2:";
label.Left = 10;
label.Top = regionBox1.Bottom + 20;
Controls.Add(label);
regionBox2 = new ListBox(); // Change to ComboBox() to permit random text entry
regionBox2.Width = 200;
regionBox2.Height = 160;
regionBox2.DropDownWidth = 200;
regionBox2.Left = label.Right;
regionBox2.Top = label.Top-5;
regionBox2.Items.Add("Block");
regionBox2.Items.Add("Hit"); // Add or delete these lines (same as above)
regionBox2.Items.Add("Dig");
regionBox2.Items.Add("Serve");
regionBox2.Items.Add("Set");
regionBox2.Items.Add("Group");
regionBox2.Items.Add("Rally");
regionBox2.Items.Add("Special");
regionBox2.Items.Add("Warmup");
regionBox2.SelectedIndex = region;
Controls.Add(regionBox2);

RegionNameBox = addTextControl("Region Suffix: ", 10, 300, regionBox2.Bottom + 16, "");

var label = new Label();
label.AutoSize = true;
label.Text = "Region Number: " + RegionNumber.ToString();
label.Left = 10;
label.Top = RegionNameBox.Bottom + 20;
Controls.Add(label);

PreviewBox = new CheckBox();
PreviewBox.Left = 10;
PreviewBox.Width = 160;
PreviewBox.Top = label.Bottom + 15;
PreviewBox.Text = "Preview Video";
PreviewBox.Checked = PreviewVideo != 0;
Controls.Add(PreviewBox);

var buttonTop = PreviewBox.Top;

var cancelButton = new Button();
cancelButton.Text = "Cancel";
cancelButton.Left = this.Width - (1*(buttonWidth+10));
cancelButton.Top = regionBox1.Top;
cancelButton.Height = cancelButton.Font.Height + 12;
cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
CancelButton = cancelButton;
Controls.Add(cancelButton);

var NextButton = new Button();
NextButton.Text = "Next";
NextButton.Left = this.Width - (1*(buttonWidth+10));
NextButton.Top = buttonTop;
NextButton.Width = buttonWidth;
NextButton.Height = NextButton.Font.Height + 12;
NextButton.DialogResult = System.Windows.Forms.DialogResult.OK;
AcceptButton = NextButton; // The Enter key will automatically activate this button.
Controls.Add(NextButton);

var ReplayButton = new Button();
ReplayButton.Text = "Replay";
ReplayButton.Left = this.Width - (2*(buttonWidth+10));
ReplayButton.Top = buttonTop;
ReplayButton.Width = buttonWidth;
ReplayButton.Height = ReplayButton.Font.Height + 12;
ReplayButton.DialogResult = System.Windows.Forms.DialogResult.Retry;
Controls.Add(ReplayButton);


var titleHeight = this.Height - this.ClientSize.Height;
this.Height = titleHeight + NextButton.Bottom + 20;
} // End function MainDialog
//
// -------------------------------------
function addTextControl(labelName, left, width, top, defaultValue) {
var label = new Label();
label.AutoSize = true;
label.Text = labelName + ":";
label.Left = left;
label.Top = top + 4;
Controls.Add(label);

var textbox = new TextBox();
textbox.Multiline = false;
textbox.Left = label.Right;
textbox.Top = top;
textbox.Width = width - (label.Width);
textbox.Text = defaultValue;
Controls.Add(textbox);

return textbox;
}

} // End class MainDialog

J_Mac wrote on 11/7/2003, 11:34 AM
John, That did the trick! Could you briefly explain what the changes you made were? Also, in reviewing the script, would it be possible for me to add ...region box 3, 4, to specfy other region characteristics, is their a limit?
Thanks again! John.
johnmeyer wrote on 11/7/2003, 1:29 PM
Could you briefly explain what the changes you made were?

I didn't make any changes from the script posted at the beginning of this thread (I may have added a few comments).

Also, in reviewing the script, would it be possible for me to add ...region box 3, 4, to specfy other region characteristics, is their a limit?

You are welcome to hack up the script in any way you see fit. There is probably a limit, but I don't know what it is, and i'm sure you won't reach it. You can add more entries for the two ListBox constructs just by adding them (the comment indicates this). If you want to add more than two ListBoxes, you can do that too. You should be able to just copy the code for RegionBox2, change the variables to RegionBox3, declare the RegionBox3 variable right below where RegionBox1 and RegionBox2 are declared, and away you go.
J_Mac wrote on 11/7/2003, 2:02 PM
John, I sincerely appreciate your help. I am returning the same error code,

Error on line 2:
Expecting more source characters.

This is for the Time Lapse script.

This is the same E.C. as the region preview script, which runs fine now. What do I need to do to convert the time lapse script to a usable format?Thanks again. John.
johnmeyer wrote on 11/7/2003, 4:00 PM
I gave you the answer back at the beginning of this thread: you have to replace the manual line breaks with paragraph marks.

If you send me your email address, I'll just email the scripts to you.
johnmeyer wrote on 11/7/2003, 6:28 PM
J_Mac:

For a few days, I will leave a Zip file at the following link that has both the scripts you are interested in. Here's the link:

Scripts.zip
J_Mac wrote on 11/7/2003, 6:59 PM
Thank you, Thank you,Thank you. I had to get the brains and looks in the family to straighten me out. You say tomato, I say potato..e. We got both scripts to run perfectly. I have also downloaded your zips. Sorry I was so dense today. Thank you again,johndotmcfaddenatcomcastdotnet.
ricklaut wrote on 11/7/2003, 10:54 PM
This is good.... really good......! I am just experimenting now, but see lots of possibilities! Thanks!

As far as checking for which clips have been used, I pulled up the Edit Details box and sorted by the Active Take Name (which is the region name). Bingo - saw that one clip was used multiple times!

Nice job....!

Rick
johnmeyer wrote on 11/7/2003, 11:26 PM
As far as checking for which clips have been used, I pulled up the Edit Details box and sorted by the Active Take Name (which is the region name).

Yeah, once I actually started using my own script, I found that the edit details includes the imported regions, and lets me see what has been used. This was a very pleasant surprise, and is very useful.

To Sony: This script saves a TON of time. If you ever decide to add features to help with media management, you should implement a tagging scheme of some sort. I was able to identify and tag over 400 clips in under an hour, and because of the resulting organization was able to create almost 90 seconds of video with almost 100 edits, in just a couple of hours. I would not have been able to get to this point without this capability (thank goodness for scripts!).

Finally, there are many things that I would like to see in Sony-implemented media management:

1. It would be very useful to highlight, in the original list of clips, which ones have been used.

2. It would be very useful to be able to sort the media by multiple criteria (i.e., basic database capability).

Adobe Photoshop Album is a good product from which to steal a few ideas.
ricklaut wrote on 11/8/2003, 9:35 AM
(for Sony) .........and these media management capabilities should roll up into one "master" database so that all previously catalogued tapes queried by any of the criteria.

Rick
therasoft wrote on 11/9/2003, 11:33 PM
John,
I would just like to say thanks for writing this script-for the nonprogramers of the world it is much appreciated . I couldn't agree with you more on the need for a searchable customizable database type media management system that would be importable into media manager or within the windows explorer that is already present in the the VV interface (would love to see it capable of the thumbnail view) . I hope sony is listening and gives that a shot as that would be icing on the VV cake--certainly worth an upgrade.

John