No internet connection
  1. Home
  2. How to

Revoice Pro APT script

By Mike Avenaim @Mike_Avenaim
    2020-10-25 22:04:34.195Z

    Hi!

    Id love to be able to make a script or macro that easily analyzes the area i have selected and uses revoice pro apt to time align, for example, the background vocals. Here is my usual workflow:

    1. open the revoice pro standalone application to a new session
    2. go to audiosuite > synchro arts > revoice pro apt
    3. select the area i want to analyze as the "capture guide"
    4. hit the capture button
    5. select the area i want to analyze as the "capture dub"
    6. hit the capture dub button
    7. hit the spot button

    After that i would then move on to the next area i want to do the same sequence to but you obviouls ydont need to open the revoice standalone again because its already open.

    Any thoughts on the best way to do this? This would REALLY speed up my workclow. Essentialy VoAlign on steroids.

    • 45 replies

    There are 45 replies. Estimated reading time: 31 minutes

    1. Kitch Membery @Kitch2020-10-25 23:01:59.314Z2020-10-25 23:33:28.290Z

      Hold my beer! :-)

      This will work if the dub is directly below the the guide... one click;

      //Launch Revoice Standalone App
      sf.app.launch({
          path: "/Applications/Revoice Pro.app",
      });
      
      //Wait for Revoice Standalone App to become avtive
      sf.ui.app('com.synchroarts.Revoice-Pro').appWaitForActive();
      
      //Open Revoice Pro APT AudioSuite plugin
      sf.ui.proTools.audioSuiteOpenPlugin({
          category: "Synchro Arts",
          name: "Revoice Pro APT",
      });
      
      //Store window as a variable
      const revoice = sf.ui.proTools.windows.whoseTitle.is('Audio Suite: Revoice Pro APT').first;
      
      //Click Capture Guide
      revoice.mouseClickElement({
          relativePosition: {"x":145,"y":132},
      });
      
      //Click Capture Button
      revoice.buttons.whoseTitle.is('Analyze').first.elementClick();
      
      //Wait for audio to be processed
      sf.ui.proTools.waitForNoModals();
      
      //Move down a track
      sf.ui.proTools.menuClick({menuPath:["Edit","Selection","Extend Edit Down"]});
      sf.ui.proTools.menuClick({menuPath:["Edit","Selection","Remove Edit from Top"]});
      
      //Click Capture Dub
      revoice.mouseClickElement({
          relativePosition: {"x":145,"y":157},
      });
      
      //Click Capture Button
      revoice.buttons.whoseTitle.is('Analyze').first.elementClick();
      
      //Wait for audio to be processed
      sf.ui.proTools.waitForNoModals();
      
      //Click Spot Button
      revoice.buttons.whoseTitle.is('Render').first.elementClick();
      

      Updated with Comments :-)

      1. MMike Avenaim @Mike_Avenaim
          2020-10-25 23:05:20.928Z

          Haha... you Wizard. Let me try it now!

          1. In reply toKitch:
            MMike Avenaim @Mike_Avenaim
              2020-10-25 23:09:44.777Z

              Totally working!

              The only down side I see is if the "dub" is slightly longer of a waveform at the start and end and doesnt line up kinda almost exactly like the guide, it cuts off a bit off the start and end. Does that make sense? This is a really useful script, I waste so much time doing this everyday.

              1. Kitch Membery @Kitch2020-10-25 23:20:59.240Z

                Hmmm... I'm not sure why that happens. would having it as two scripts, one to capture the Guide & one to capture the Dub fix this? I ask only because I don't use or have the plugin I literally just downloaded the Trial 10 mins ago. Works a treat!

                BTW the way you wrote the question was great.. It made it so easy to build the script. :-)

                1. MMike Avenaim @Mike_Avenaim
                    2020-10-25 23:24:50.878Z

                    Ah, thanks man! Killer.

                    Let me have a think about it. Ill make you a little short video too that shows exactly what i mean. It will make it a lot easier to understand i think.

                    Thanks so much.

                    1. Kitch Membery @Kitch2020-10-25 23:35:08.770Z

                      I just updated the script with comments so you can understand what each part does. :-)

                      Hope it helps!

                      1. Kitch Membery @Kitch2020-11-02 08:33:44.781Z2020-11-02 08:54:19.541Z

                        @Mike_Avenaim,

                        Here is a new version for you...

                        1. Make sure you have "Link Track and Edit Selection" turned on.

                        2. Select more than one track you want to process (ie a stack of backing vocals), with the track you want to use as a guide track at the top.

                        3. Trigger the script!

                        The script then;

                        • Captures the guide track.
                        • Select the next track.
                        • Captures it as the Dub track.
                        • Processes the track.
                        • Repeats for each selected track.

                        Sit back and relax. :-)
                        Rock on!

                        sf.ui.proTools.appActivateMainWindow();
                        sf.ui.proTools.mainWindow.invalidate();
                        
                        const revoice = sf.ui.proTools.windows.whoseTitle.is('Audio Suite: Revoice Pro APT').first;
                        const tracks = sf.ui.proTools.selectedTracks.names;
                        const guideTrack = tracks[0];
                        const oldSelection = sf.ui.proTools.selectionGet();
                        
                        sf.app.launch({ path: "/Applications/Revoice Pro.app", });
                        
                        sf.ui.app('com.synchroarts.Revoice-Pro').appWaitForActive({ timeout: 3000 }, `Could not activate Revoice Pro app`);
                        
                        sf.ui.proTools.audioSuiteOpenPlugin({
                            category: "Synchro Arts",
                            name: "Revoice Pro APT",
                        });
                        
                        if (sf.ui.proTools.selectedTracks.count < 2) {
                            throw (`Please select 2 or more tracks`);
                        }
                        
                        let repetitions = 0;
                        
                        sf.ui.proTools.selectedTrackHeaders.map(track => {
                            track.elementClick();
                        
                            sf.ui.proTools.trackSelectByName({
                                names: [guideTrack],
                                deselectOthers: true,
                            });
                        
                            revoice.mouseClickElement({
                                relativePosition: { "x": 145, "y": 132 },
                            });
                        
                            revoice.buttons.whoseTitle.is('Analyze').first.elementClick();
                        
                            sf.ui.proTools.waitForNoModals();
                        
                            if (repetitions !== 0) {
                                sf.ui.proTools.trackSelectByName({
                                    names: [track.normalizedTrackName],
                                    deselectOthers: true,
                                });
                        
                                revoice.mouseClickElement({
                                    relativePosition: { "x": 145, "y": 157 },
                                });
                        
                                revoice.buttons.whoseTitle.is('Analyze').first.elementClick();
                        
                                sf.ui.proTools.waitForNoModals();
                        
                                revoice.buttons.whoseTitle.is('Render').first.elementClick();
                        
                                sf.ui.proTools.waitForNoModals();
                        
                                sf.ui.proTools.selectionSet({
                                    selectionStart: oldSelection.selectionStart,
                                    selectionLength: oldSelection.selectionLength,
                                });
                            }
                            repetitions++
                        });
                        

                        Here it is in action...

                        1. Kitch Membery @Kitch2020-11-03 07:09:34.846Z

                          @Mike_Avenaim,

                          Just got a message from the forum email server saying you replied via email. Be sure to respond on the forum rather than to the email as we don't receive the emails directly.

                          Enjoy that script! :-)

                          1. MMike Avenaim @Mike_Avenaim
                              2020-11-03 07:29:05.300Z

                              Awesome man. Sorry. I was just saying I can’t wait to try it.

                              1. Kitch Membery @Kitch2020-11-03 07:30:59.852Z

                                No worries at all mate! Did you watch the video? Massive time saver for vocal alignment :-)

                                1. Landon Bailey @LandonBailey
                                    2020-11-06 18:00:00.904Z2020-11-06 18:28:41.487Z

                                    Hey there @Kitch I'm really excited about this script, but I can't seem to get it working. Do you have any ideas? Here is the lastest log the last time I tried:

                                    06.11.2020 12:54:41.18 [Backend]: #StreamDeck: KeyDown (3,1) -> Revoice APT

                                    06.11.2020 12:54:41.18 [Backend]: >> Command: Revoice APT [user:ckh5cgame0003yv10y1anx3et:ckh6iukqt0006k010jtiu6px2]

                                    06.11.2020 12:54:41.26 [Backend]: Clicking with mouse here: 72, 30

                                    06.11.2020 12:54:41.58 [Backend]: Clicking with mouse here: 72, 30

                                    06.11.2020 12:54:41.58 [Backend]: #App: Activate "com.avid.ProTools" -> PROTOOLS [ckh2h78y100094h10vh1qp1u0]

                                    06.11.2020 12:54:41.76 [Backend]: Logging unknown error in action (02) AudioSuiteOpenPluginAction: Object reference not set to an instance of an object.

                                    06.11.2020 12:54:41.76 [Backend]: !! Command Error: Revoice APT [user:ckh5cgame0003yv10y1anx3et:ckh6iukqt0006k010jtiu6px2]:
                                    Object reference not set to an instance of an object. (Revoice APT: Line 13)
                                    System.NullReferenceException: Object reference not set to an instance of an object.
                                    at SoundFlow.Shortcuts.Automation.Actions.AudioSuiteOpenPluginAction.GetMenuItemToPress() + 0x77
                                    at SoundFlow.Shortcuts.Automation.Actions.AudioSuiteOpenPluginAction.d__22.MoveNext() + 0x225
                                    --- End of stack trace from previous location where exception was thrown ---
                                    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1c
                                    at sfbackend!+0x178b40b
                                    at sfbackend!+0x178b346
                                    at SoundFlow.Shortcuts.Automation.AutoAction`1.d__20.MoveNext() + 0x317

                                    << Command: Revoice APT [user:ckh5cgame0003yv10y1anx3et:ckh6iukqt0006k010jtiu6px2]

                                    06.11.2020 12:54:41.95 [Backend]: Showing Deck "PROTOOLS" on Device "LB Stream Deck " (We were called with device "LB Stream Deck ")
                                    [StreamDeck] Device 'LB Stream Deck ' instantiating deck 'PROTOOLS'

                                    1. Kitch Membery @Kitch2020-11-06 20:27:13.558Z

                                      Hi @LandonBailey,

                                      I'll have to take a look at this next week. Till then, have you tried restarting SoundFlow.

                                      @Mike_Avenaim, Have you had a chance to try it yet?

                                      1. Landon Bailey @LandonBailey
                                          2020-11-06 20:54:17.653Z

                                          I did try that, as well as ProTools. Tried a few different stacks, and I'm getting the same error, specifically "Object reference not set to an instance of an object."

                                          1. Kitch Membery @Kitch2020-11-06 21:15:22.307Z

                                            Cool. Thanks for trying, I'll take a look at it when I get a moment.

                                            1. MMike Avenaim @Mike_Avenaim
                                                2020-11-11 02:25:42.366Z

                                                I havent actually had a chance to test the updated version... did you get a chance to look it it again?

                                                1. Kitch Membery @Kitch2020-11-11 02:30:39.016Z

                                                  Not since I got it working as seen in the video and unfortunately and my trial license expired... Such a slick program!

                                                  When you get a chance to test it let me know how it goes.

                                                  BTW lets chat later in the week re the other script Idea you had. :-)

                                          2. In reply toLandonBailey:
                                            Landon Bailey @LandonBailey
                                              2020-11-11 16:12:29.289Z

                                              @chrscheuer Can you help with this?
                                              I'm not understanding "Object reference not set to an instance of an object."
                                              Am I missing a setting in PT or Revoice? Cheers!

                                              1. Hi Landon,

                                                I'll need an updated version of the script together with complete logs to help with this. Please file a script help report for your script (step 1 in the link):

                                                1. My first guess would be to ensure that Pro Tools has focus before you open the AudioSuite plugin

                                                  Insert this:

                                                  sf.ui.proTools.appActivateMainWindow();
                                                  

                                                  Before your call to:

                                                  sf.ui.proTools.audioSuiteOpenPlugin({
                                                      category: "Synchro Arts",
                                                      name: "Revoice Pro APT",
                                                  });
                                                  

                                                  Assuming this is the most recent version of your script:
                                                  https://forum.soundflow.org/-3215#post-8

                                                  1. Landon Bailey @LandonBailey
                                                      2020-11-11 22:17:03.488Z

                                                      I tried filing a script help report, but it won't let me. I'm getting this message: Error No parentWindowld

                                                      1. Landon Bailey @LandonBailey
                                                          2020-11-11 22:18:59.031Z

                                                          Also, update: I did discover that the script will not open AudioSuite properly unless plugin display menu is set to "Category and Manufacturer".

                                                          1. Kitch Membery @Kitch2020-11-12 00:00:29.219Z

                                                            Hi Landon,

                                                            To resolve the "Category and Manufacturer" issue change this section of code;

                                                            sf.ui.proTools.audioSuiteOpenPlugin({
                                                                category: "Synchro Arts",
                                                                name: "Revoice Pro APT",
                                                            });
                                                            

                                                            to

                                                            sf.ui.proTools.audioSuiteOpenPlugin({
                                                                category: "Other",
                                                                name: "Revoice Pro APT",
                                                            });
                                                            

                                                            Once this is fixed... It may be best if you create a screen capture of what is happening when you run the script so we can see how it fails.

                                                            1. Landon Bailey @LandonBailey
                                                                2020-11-12 14:44:51.248Z

                                                                Here is the screen capture of the script in action. I have the script on my ProTools deck, but for the video's sake I ran the command from SF.

                                                                1. Kitch Membery @Kitch2020-11-12 17:49:55.187Z

                                                                  This is great @LandonBailey, I’m out of the studio this morning but will take a look at it later today. I think I can see what the problem is though.

                                                                  1. Landon Bailey @LandonBailey
                                                                      2020-11-12 17:53:18.041Z

                                                                      Sounds great, thanks!

                                                                    • In reply toLandonBailey:
                                                                      Kitch Membery @Kitch2020-11-13 00:07:42.091Z

                                                                      Hi @LandonBailey,

                                                                      From your video, it seems your standalone version of the Revoice pro app is running some process as it starts up. Have you changed any of Revoice Pro App Settings?

                                                                      1. Landon Bailey @LandonBailey
                                                                          2020-11-13 21:55:47.223Z

                                                                          I have not, but I did go through and try a few different settings with no luck.
                                                                          Do you have a set of recommended settings in Revoice Pro standalone or Audiosuite?

                                                                          1. Kitch Membery @Kitch2020-11-13 22:29:40.459Z

                                                                            Have you tried performing the workflow manually. It might bring to light what the problem is.

                                                                            Here are the steps;

                                                                            1. Open the Revoice Pro standalone application to a new session
                                                                            2. Go to audiosuite > synchro arts > revoice pro apt
                                                                            3. Select the area you want to analyze as the "capture guide"
                                                                            4. Hit the capture button (wait for capture to complete)
                                                                            5. Select the area i want to analyze as the "capture dub"
                                                                            6. Hit the capture dub button (wait for capture to complete)
                                                                            7. hit the spot button
                                                                            1. Landon Bailey @LandonBailey
                                                                                2020-11-14 20:31:55.688Z

                                                                                This does work just fine. So weird! Now when I try the APT script I get this error:

                                                                                14.11.2020 15:29:18.06 [Backend]: Showing Deck "PROTOOLS" on Device "LB Stream Deck " (We were called with device "LB Stream Deck ")
                                                                                [StreamDeck] Device 'LB Stream Deck ' instantiating deck 'PROTOOLS'

                                                                                14.11.2020 15:29:53.43 [Backend]: #StreamDeck: KeyDown (3,1) -> Revoice APT

                                                                                14.11.2020 15:29:53.43 [Backend]: >> Command: Revoice APT [user:ckh5cgame0003yv10y1anx3et:ckh6iukqt0006k010jtiu6px2]

                                                                                14.11.2020 15:29:53.52 [Backend]: Clicking with mouse here: 72, 30

                                                                                14.11.2020 15:29:54.16 [Backend]: Clicking with mouse here: 72, 30

                                                                                14.11.2020 15:29:54.16 [Backend]: #App: Activate "com.avid.ProTools" -> PROTOOLS [ckh2h78y100094h10vh1qp1u0]

                                                                                14.11.2020 15:29:56.36 [Backend]: Clicking with mouse here: 667, 211

                                                                                14.11.2020 15:29:56.81 [Backend]: Clicking with mouse here: 667, 211

                                                                                14.11.2020 15:29:57.17 [Backend]: Clicking with mouse here: 667, 236

                                                                                14.11.2020 15:29:58.00 [Backend]: Clicking with mouse here: 773, 86

                                                                                14.11.2020 15:29:58.78 [Backend]: Clicking with mouse here: 773, 62

                                                                                14.11.2020 15:29:59.05 [Backend]: Clicking with mouse here: 773, 86

                                                                                14.11.2020 15:29:59.85 [Backend]: Clicking with mouse here: 773, 62

                                                                                14.11.2020 15:30:00.06 [Backend]: Clicking with mouse here: 773, 86

                                                                                14.11.2020 15:30:00.84 [Backend]: Clicking with mouse here: 773, 62

                                                                                14.11.2020 15:30:01.06 [Backend]: Clicking with mouse here: 773, 86

                                                                                14.11.2020 15:30:01.86 [Backend]: Clicking with mouse here: 773, 62

                                                                                14.11.2020 15:30:02.16 [Backend]: Clicking with mouse here: 773, 86

                                                                                14.11.2020 15:30:02.92 [Backend]: Logging error in action (01) SetSelectionAction: Could not set selection start to: 61| 4| 495. Value found: 81| 1| 000

                                                                                14.11.2020 15:30:02.92 [Backend]: !! Command Error: Revoice APT [user:ckh5cgame0003yv10y1anx3et:ckh6iukqt0006k010jtiu6px2]:
                                                                                Could not set selection start to: 61| 4| 495. Value found: 81| 1| 000 (Revoice APT: Line 58)

                                                                                << Command: Revoice APT [user:ckh5cgame0003yv10y1anx3et:ckh6iukqt0006k010jtiu6px2]

                                                                                14.11.2020 15:30:03.13 [Backend]: Showing Deck "PROTOOLS" on Device "LB Stream Deck " (We were called with device "LB Stream Deck ")
                                                                                [StreamDeck] Device 'LB Stream Deck ' instantiating deck 'PROTOOLS'

                                                                                1. Kitch Membery @Kitch2020-11-14 22:40:56.413Z

                                                                                  Ahhh... I see... Could you try swapping the main counter to samples and running it again? If that fixes it Then I'll know what to change.

                                                                                  I wish I still had the trial running.

                                                                                  1. Landon Bailey @LandonBailey
                                                                                      2020-11-18 16:49:03.278Z

                                                                                      Switching the main counter to samples worked!!!

                                                                                      1. Kitch Membery @Kitch2020-11-18 16:55:46.321Z

                                                                                        Fantastic I’ll fix the script today :-)

                                                                                        1. Landon Bailey @LandonBailey
                                                                                            2020-11-18 17:05:28.951Z

                                                                                            Sweet! Thank you

                                                                                            1. Kitch Membery @Kitch2020-11-19 21:38:41.979Z

                                                                                              Hi @LandonBailey,

                                                                                              I don't have a way to test it, but I believe this script should fix the two issues you were having with the script.

                                                                                              The script now...
                                                                                              •Swaps to Samples for the duration of the script.
                                                                                              •Tries finding the "Revoice Pro APT" AudioSuite Plugin in the "Synchro Arts" sub-menu and if that fails, looks for it in the "Other" sub-menu.

                                                                                              Let me know if it works for you, fingers crossed :-)

                                                                                              function main() {
                                                                                                  sf.ui.proTools.appActivateMainWindow();
                                                                                                  sf.ui.proTools.mainWindow.invalidate();
                                                                                              
                                                                                                  const revoice = sf.ui.proTools.windows.whoseTitle.is('Audio Suite: Revoice Pro APT').first;
                                                                                                  const tracks = sf.ui.proTools.selectedTracks.names;
                                                                                                  const guideTrack = tracks[0];
                                                                                                  const oldSelection = sf.ui.proTools.selectionGet();
                                                                                              
                                                                                                  sf.app.launch({ path: "/Applications/Revoice Pro.app", });
                                                                                              
                                                                                                  sf.ui.app('com.synchroarts.Revoice-Pro').appWaitForActive({
                                                                                                      timeout: 3000,
                                                                                                      onError: 'ThrowError',
                                                                                                  }, `Could not activate Revoice Pro app`);
                                                                                              
                                                                                                  try {
                                                                                                      sf.ui.proTools.audioSuiteOpenPlugin({
                                                                                                          category: "Synchro Arts",
                                                                                                          name: "Revoice Pro APT",
                                                                                                      });
                                                                                                  } catch (err) {
                                                                                                      sf.ui.proTools.audioSuiteOpenPlugin({
                                                                                                          category: "Other",
                                                                                                          name: "Revoice Pro APT",
                                                                                                      });
                                                                                                  }
                                                                                              
                                                                                                  if (sf.ui.proTools.selectedTracks.count < 2) {
                                                                                                      throw (`Please select 2 or more tracks`);
                                                                                                  }
                                                                                              
                                                                                                  let repetitions = 0;
                                                                                              
                                                                                                  sf.ui.proTools.selectedTrackHeaders.map(track => {
                                                                                                      track.elementClick();
                                                                                              
                                                                                                      sf.ui.proTools.trackSelectByName({
                                                                                                          names: [guideTrack],
                                                                                                          deselectOthers: true,
                                                                                                      });
                                                                                              
                                                                                                      revoice.mouseClickElement({
                                                                                                          relativePosition: { "x": 145, "y": 132 },
                                                                                                      });
                                                                                              
                                                                                                      revoice.buttons.whoseTitle.is('Analyze').first.elementClick();
                                                                                              
                                                                                                      sf.ui.proTools.waitForNoModals();
                                                                                              
                                                                                                      if (repetitions !== 0) {
                                                                                                          sf.ui.proTools.trackSelectByName({
                                                                                                              names: [track.normalizedTrackName],
                                                                                                              deselectOthers: true,
                                                                                                          });
                                                                                              
                                                                                                          revoice.mouseClickElement({
                                                                                                              relativePosition: { "x": 145, "y": 157 },
                                                                                                          });
                                                                                              
                                                                                                          revoice.buttons.whoseTitle.is('Analyze').first.elementClick();
                                                                                              
                                                                                                          sf.ui.proTools.waitForNoModals();
                                                                                              
                                                                                                          revoice.buttons.whoseTitle.is('Render').first.elementClick();
                                                                                              
                                                                                                          sf.ui.proTools.waitForNoModals();
                                                                                              
                                                                                                          sf.ui.proTools.selectionSet({
                                                                                                              selectionStart: oldSelection.selectionStart,
                                                                                                              selectionLength: oldSelection.selectionLength,
                                                                                                          });
                                                                                                      }
                                                                                                      repetitions++
                                                                                                  });
                                                                                              }
                                                                                              
                                                                                              //Switch Main Counter to samples for duration of script.
                                                                                              sf.ui.proTools.mainCounterDoWithValue({
                                                                                                  targetValue: 'Samples',
                                                                                                  action: main,
                                                                                              });
                                                                                              
                                                                                              1. Landon Bailey @LandonBailey
                                                                                                  2020-11-21 15:13:40.362Z

                                                                                                  This worked! Thank you for the help with this. Seriously - it's an amazing script!

                                                                                                  1. Landon Bailey @LandonBailey
                                                                                                      2020-11-21 15:15:28.359Z

                                                                                                      Side note, not sure if you meant for this to happen, but the counter does target samples for the script, but it always changes back to whatever setting was there previously. Super rad.

                                                                                                      1. Kitch Membery @Kitch2020-11-21 22:33:36.173Z

                                                                                                        So glad it's working for you. Sorry it took me so long to sort out.

                                                                                                        Regarding the side note... Yeah that was intensional. It's super powerful to be able to recall past settings. :-)

                                                                                                        Rock on!

                                                                                      2. In reply toLandonBailey:
                                                                                        Kitch Membery @Kitch2020-11-13 22:31:14.912Z

                                                                                        To answer your questions, no I don't have particular settings I had just left them as default.

                                                                              • In reply toLandonBailey:

                                                                                Thank you for reporting this, that sounds like a bug we should definitely get fixed.

                                                                2. In reply toKitch:
                                                                  Brandon Metcalf @Brandon_Metcalf
                                                                    2020-11-05 11:09:43.163Z

                                                                    you are a wizard. soundflow blows my mind every day. thank you @Kitch for the script, and to @Mike_Avenaim for asking this - i came to the forum hoping to find this exact script and voila!

                                                                    1. Kitch Membery @Kitch2020-11-05 11:11:52.545Z

                                                                      My pleasure Brandon. :-)

                                                        • In reply toMike_Avenaim:
                                                          illicit tsuboi @illicit_tsuboi
                                                            2021-08-22 03:30:26.439Z

                                                            it's great script & always use it till Revoice Pro 4.2.

                                                            but The GUI has changed from 4.3, and the existing scripts can no longer be used.
                                                            If I could have a script with the same content that I could use in 4.3, I would like.

                                                            Someone please solve this problem....

                                                            1. Brandon Metcalf @Brandon_Metcalf
                                                                2021-12-22 08:08:31.084Z

                                                                I just installed the latest version of Revoice on my new computer and realized this brilliant time-saving script no longer works (Revoice 4.3). I came to the forum to see if anyone else had run into the same issue and saw your message.

                                                                I made a few changes to the previous script to try and get it working again. I'm not the coding genius that Kitch is so there may be a better/cleaner way to do this, but it's at least working on my system! You're welcome to give it a shot. Hope it helps!

                                                                function main() {
                                                                    sf.ui.proTools.appActivateMainWindow();
                                                                    sf.ui.proTools.mainWindow.invalidate();
                                                                
                                                                    const revoice = sf.ui.proTools.windows.whoseTitle.is('Audio Suite: Revoice Pro Quick APT').first;
                                                                    const tracks = sf.ui.proTools.selectedTracks.names;
                                                                    const guideTrack = tracks[0];
                                                                    const oldSelection = sf.ui.proTools.selectionGet();
                                                                
                                                                    sf.app.launch({ path: "/Applications/Revoice Pro.app", });
                                                                
                                                                    sf.ui.app('com.synchroarts.Revoice-Pro').appWaitForActive({
                                                                        timeout: 3000,
                                                                        onError: 'ThrowError',
                                                                    }, `Could not activate Revoice Pro app`);
                                                                
                                                                    try {
                                                                        sf.ui.proTools.audioSuiteOpenPlugin({
                                                                            category: "Synchro Arts",
                                                                            name: "Revoice Pro Quick APT",
                                                                        });
                                                                    } catch (err) {
                                                                        sf.ui.proTools.audioSuiteOpenPlugin({
                                                                            category: "Other",
                                                                            name: "Revoice Pro Quick APT",
                                                                        });
                                                                    }
                                                                
                                                                    if (sf.ui.proTools.selectedTracks.count < 2) {
                                                                        throw (`Please select 2 or more tracks`);
                                                                    }
                                                                
                                                                    let repetitions = 0;
                                                                
                                                                    sf.ui.proTools.selectedTrackHeaders.map(track => {
                                                                        track.elementClick();
                                                                
                                                                        sf.ui.proTools.trackSelectByName({
                                                                            names: [guideTrack],
                                                                            deselectOthers: true,
                                                                        });
                                                                
                                                                        revoice.mouseClickElement({
                                                                            relativePosition: { "x": 375, "y": 210 },
                                                                        });
                                                                
                                                                        sf.wait({
                                                                                intervalMs: 100,
                                                                            });
                                                                
                                                                        sf.ui.proTools.waitForNoModals();
                                                                
                                                                        if (repetitions !== 0) {
                                                                            sf.ui.proTools.trackSelectByName({
                                                                                names: [track.normalizedTrackName],
                                                                                deselectOthers: true,
                                                                            });
                                                                
                                                                            revoice.mouseClickElement({
                                                                                relativePosition: { "x": 375, "y": 239 },
                                                                            });
                                                                
                                                                            sf.wait({
                                                                                intervalMs: 100,
                                                                            });
                                                                
                                                                            sf.ui.proTools.waitForNoModals();
                                                                
                                                                            revoice.mouseClickElement({
                                                                                relativePosition: { "x": 375, "y": 285 },
                                                                            });
                                                                
                                                                            sf.wait({
                                                                                intervalMs: 100,
                                                                            });
                                                                
                                                                            sf.ui.proTools.waitForNoModals();
                                                                
                                                                            sf.ui.proTools.selectionSet({
                                                                                selectionStart: oldSelection.selectionStart,
                                                                                selectionLength: oldSelection.selectionLength,
                                                                            });
                                                                        }
                                                                        repetitions++
                                                                    });
                                                                }
                                                                
                                                                //Switch Main Counter to samples for duration of script.
                                                                sf.ui.proTools.mainCounterDoWithValue({
                                                                    targetValue: 'Samples',
                                                                    action: main,
                                                                });
                                                                1. illicit tsuboi @illicit_tsuboi
                                                                    2021-12-26 03:43:39.635Z

                                                                    Sometimes it malfunctions depending on how the plug-in screen appears, but it worked perfectly!!!

                                                                    thank you!!!

                                                                    1. In reply toBrandon_Metcalf:

                                                                      This saved me at least 10,000 clicks today. Thanks @Brandon_Metcalf and @Kitch !