No internet connection
  1. Home
  2. How to

Video Synch Offset

By Chris Testa @Chris_Testa
    2024-12-28 19:29:29.961Z

    I am currently on a couple of projects where I have to work in a stereo (non-renderer) template (because I need to deliver mono prints) and a template through the renderer. As I bounce back and forth between these two I constantly have to change my Video Sync offsets. I've calculated them so I know what they are for each template but it would be nice to have a SF button for each. There was a post in the past that asked about this but no one chimed in. I haven't seen and scripts for it. I'd image it must be pretty simple. Can anyone help with this? Thank you.

    • 5 replies
    1. Kitch Membery @Kitch2024-12-30 23:40:08.496Z

      Hi @Chris_Testa,

      Can you explain the manual steps you would take to change the offset?

      Thanks in advance.

      1. C
        In reply toChris_Testa:
        Chris Testa @Chris_Testa
          2024-12-30 23:47:48.667Z

          Hey Kitch,

          I actually use the app Catchin' Synch to figure out the delays between the audio in protools and the video on my tv. If I did all of my work via the renderer I most likely could have one offset and never have to change it, but since I have one particular show that I have to deliver mono prints for I just bypass the renderer so it's basically a delay that is renderer or no renderer. The No renderer is 70ms. The renderer offset is 190ms. So ideally I have a button that says 70ms and one that says 190ms. I hope that helps.

          1. Kitch Membery @Kitch2024-12-31 00:25:33.874Z

            Hi @Chris_Testa,

            Something like this should do the trick...

            const offsetInMilliseconds = 70;
            
            sf.ui.proTools.appActivate();
            
            sf.ui.proTools.menuClick({ menuPath: ["Setup", "Video Sync Offset..."] });
            
            const videoSyncOffsetWindow = sf.ui.proTools.windows.whoseTitle.is("Video Sync Offset").first;
            
            videoSyncOffsetWindow.elementWaitFor();
            
            const msTextField = videoSyncOffsetWindow.textFields[0];
            const okButton = videoSyncOffsetWindow.buttons.whoseTitle.is("OK").first;
            
            msTextField.elementSetTextFieldWithAreaValue({
                value: offsetInMilliseconds.toString(),
                useMouseKeyboard: true
            });
            
            sf.waitFor({
                callback: () => msTextField.invalidate().value.value === offsetInMilliseconds.toString(),
                timeout: 1000,
            }, `Could not set the Video Sync to ${offsetInMilliseconds.toString()}`);
            
            okButton.elementClick();
            
            okButton.elementWaitFor({ waitForNoElement: true });
            

            You could then make a command template out of it. For information on how to do that see here...

            https://soundflow.org/docs/how-to/custom-commands/command-templates

          2. C
            In reply toChris_Testa:
            Chris Testa @Chris_Testa
              2024-12-31 00:26:36.752Z

              oh wow. thanks. I'm grabbing now and trying. I'll let you know. thank you!

              1. C
                In reply toChris_Testa:
                Chris Testa @Chris_Testa
                  2024-12-31 00:35:12.744Z

                  Works perfectly. Thank you!!