Is there an in-timeline visual cue for slow motion clips?

davebo wrote on 9/11/2024, 12:51 PM

I have a project from a colleague that is not my normal workflow, with random clips recorded at double the framerate. Slow motion may be useful on some but not others, so I'm wondering if I simply move everything to the timeline, can there be any visual cue (like a different color or ideally the framerate next to the filename) present in the timeline that I could easily see to know which framerate each clip is? Sorry if it's an old question, I didn't find anything in the search. I've been using Vegas since 4.0 but I've never had this particular need before. Thanks in advance!

Comments

jetdv wrote on 9/11/2024, 1:44 PM

If you're changing the playback rate, there's a line behind the images that goes up and down with the ups and downs being farther apart fir slowing down and closer together for speeding up.

If you're using a velocity envelope, just look for the envelope.

davebo wrote on 9/12/2024, 8:17 AM

Thanks Edward but I think I need to include more info in my description. When I'm putting the clips in the timeline they're all currently in real-time, so the 24fps and 60fps all play at the same speed, which is what I want as I won't need to slow motion most 60fps clips, I just want to be able to quickly see in the timeline which clips ARE 60fps so I determine if those clips are worth putting a velocity envelope on and playing with.

If there is no way to achieve this then I assume I should just tell all clips to conform to project settings so when I put everything in the timeline, the 60fps ones will be longer when played at 24fps, which won't visually show me which are slow but it'll be obvious when I'm playing back.

3POINT wrote on 9/12/2024, 2:10 PM

There is no visual indication of the framerates of used media on the timeline as there's also no indication of resolution, aspect ratio, used codec, frame order etc etc.

You could rename your used clips with a framerates addition to see the difference in the framerates in the timeline.

davebo wrote on 9/12/2024, 5:15 PM

I'm always a fan of more options to toggle on and off but that's actually a great workaround I hadn't even thought of. Wish I could streamline that process with the mass renamer in my file explorer by having it show the Frame Rate column that Vegas' Project Media Details shows, but I'll make it work. Thanks!

jetdv wrote on 9/12/2024, 10:02 PM

I'm always a fan of more options to toggle on and off but that's actually a great workaround I hadn't even thought of. Wish I could streamline that process with the mass renamer in my file explorer by having it show the Frame Rate column that Vegas' Project Media Details shows, but I'll make it work. Thanks!

You could write a script that renames the files after reading the media information from the file...

Robert Johnston wrote on 9/12/2024, 11:13 PM

@jetdv @davebo

You don't need to rename the file, just rename the active take name, unless that's what you meant. After experimenting, I was able to add a suffix to the active take name consisting of the string such as "fps:59.940_". A more exact rate is actually displayed. I was adding it to the end of the name, but most times the fps couldn't be read because of the relative width of the event vs. the visible timeline doesn't provide enough room for the whole name to show, so I added it before the name.

Still, it seems, that the easiest way to see the frame rates is in the Project Media window in Detail view. The frame rate is unfortunately way down the other end of the column headers, so you have a chore dragging the column so it's near the name column. If you want to know where the media is on the timeline, you can right-click and select "select event(s) on timeline."

If you run the scripts multiple times, the fps will be added multiple times. Ctrl-Z will undo the appends.

 

//  Filename: ShowFPS_Script.cs
//  Appends FPS to active take names of selected event(s).
//  Adapted by Robert J Johnston from JetDV scripts

using System;
using System.Windows.Forms;
using ScriptPortal.Vegas;

namespace ShowFPS_Script
{
    public class Class1
    {
        public Vegas myVegas;

    public string fpsPrefix = "fps:";

        public void Main(Vegas vegas)
        {
            myVegas = vegas;

            foreach(Track track in myVegas.Project.Tracks)
            {
                foreach (TrackEvent evnt in track.Events)
                {
                    if (evnt.Selected)
                    {
                        if (evnt.IsAudio())
                        {
                            // do nothing for now.

                        }
                        else
                        {
                            VideoEvent ve = (VideoEvent)evnt;
                            VideoStream vs = (VideoStream)ve.ActiveTake.MediaStream;
                            
                            // To show -- or not to show -- these two message boxes:
                            //MessageBox.Show("Frame Rate: " + vs.FrameRate);
                            //MessageBox.Show("PlaybackRate: " + ve.PlaybackRate);
                            
                            // Append fps prefix to active take name
                            ve.ActiveTake.Name = fpsPrefix +  vs.FrameRate.ToString() + "_"+ ve.ActiveTake.Name;
                            myVegas.UpdateUI();
                        }
                    }
                }
            }
        }
    }
}

public class EntryPoint
{
    public void FromVegas(Vegas vegas)
    {
        ShowFPS_Script.Class1 test = new ShowFPS_Script.Class1();
        test.Main(vegas);
    }
}

 

 

Intel Core i7 10700K CPU @ 3.80GHz (to 4.65GHz), NVIDIA GeForce RTX 2060 SUPER 8GBytes. Memory 32 GBytes DDR4. Also Intel UHD Graphics 630. Mainboard: Dell Inc. PCI-Express 3.0 (8.0 GT/s) Comet Lake. Bench CPU Multi Thread: 5500.5 per CPU-Z.

Vegas Pro 21.0 (Build 108) with Mocha Vegas

Windows 11 not pro

davebo wrote on 9/16/2024, 9:07 AM

Wow thanks for putting that whole script together, it worked out perfectly. Definitely a much longer framerate string than I ever realized was calculated! Wish it could just round things up to 24 and 60 but it 100% solves the issue of quickly seeing what rate every clip is on the timeline, so thanks a ton!

Robert Johnston wrote on 9/16/2024, 4:34 PM

@davebo Change

vs.FrameRate.ToString() to 
vs.FrameRate.ToString("F0"). 

"F0" rounds to nearest unit. "F1" rounds to one decimal place, "F2" rounds to two decimal places,  etc. Hope that helps.

Intel Core i7 10700K CPU @ 3.80GHz (to 4.65GHz), NVIDIA GeForce RTX 2060 SUPER 8GBytes. Memory 32 GBytes DDR4. Also Intel UHD Graphics 630. Mainboard: Dell Inc. PCI-Express 3.0 (8.0 GT/s) Comet Lake. Bench CPU Multi Thread: 5500.5 per CPU-Z.

Vegas Pro 21.0 (Build 108) with Mocha Vegas

Windows 11 not pro

Robert Johnston wrote on 9/16/2024, 5:47 PM

@davebo You probably are wondering how to strip off unwanted characters from the beginning of the active take names. Let's say you want to strip off the first 15 characters of the name which includes fps info:

ve.ActiveTake.Name = ve.ActiveTakeName.Substring(15) would strip off the first 15 characters and return the rest of the characters starting with the 16th character. 

A strategy might be to have a parallel muted track with the same events that you apply the fps info to. That way you won't affect the active take names of the events on the above track.

Intel Core i7 10700K CPU @ 3.80GHz (to 4.65GHz), NVIDIA GeForce RTX 2060 SUPER 8GBytes. Memory 32 GBytes DDR4. Also Intel UHD Graphics 630. Mainboard: Dell Inc. PCI-Express 3.0 (8.0 GT/s) Comet Lake. Bench CPU Multi Thread: 5500.5 per CPU-Z.

Vegas Pro 21.0 (Build 108) with Mocha Vegas

Windows 11 not pro