No internet connection
  1. Home
  2. Script Sharing

SCRIPT SHARING - Revoice Pro 4.3 Quick Doubler Script

By Thomas Gloor @Thomas_Gloor
    2022-04-22 11:26:27.684Z2022-04-29 20:23:55.249Z

    Hi everyone,

    First of all, thank you to this great community, which has been of a great help in my humble attemps to build macros and scripts!

    Here's one I use A LOT and I'm sure will be usefull to others. It uses @Andrew_Scheps ' "move tracks to new routing folder" script and is also wildly inspired by @Chris_Shaw 's "Pro Tools Utility" package.
    Might not be the most elegant as I'm fairly new to this, but it works :)

    It takes selected audio on a track, creates a double using Revoice Pro 4.3 Quick Doubler AudioSuite, then routes both track to a new routing folder, and assigns the folder exactly as the original track was, while clearing assignments from the original track. The last part is a bit "bold", as I get rid of the original track's groups assignment by duplicating it, which would leave it's playlists (should it have any) with an abnoxious .dup1 at the end of the name. I'm still trying to figure out a better way!

    It's completely automatic except for the audio to select.

    There you go! Enjoy!

    There are two blocks of "quoted" script below.

    The first one is a setup script that you will have to run only once. The second one is the doubler script!

    var folderPath = "~/Documents/Pro Tools/Track Presets";
    var folderName = "Soundflow Revoice Doubler";
    var clearPreset = "CLEARInsSndGrp"
    var storePreset = "STOREInsSndGrp"
    
    function dismissConfirmationDialog(btn) {
        if (sf.ui.proTools.confirmationDialog.invalidate().buttons.whoseTitle.is(btn).first.exists) {
            sf.ui.proTools.confirmationDialog.buttons.whoseTitle.is(btn).first.elementClick();
        }
    };
    
    ///////////////////////////////////
    //CREATE FOLDER FOR TRACK PRESETS//
    //////////////////////////////////
    
    //Make finder active
    sf.ui.finder.appActivate();
    
    //Open go to folder dialog
    sf.keyboard.press({
        keys: "cmd+shift+g, cmd+shift+g",
    });
    
    //Enter path
    sf.keyboard.type({
        text: folderPath,
    });
    
    //Confirm
    sf.keyboard.press ({
        keys: "return",
        fast: true,
    });
    
    sf.wait({
        intervalMs: 1000,
    });
    
    //Create new folder
    sf.ui.finder.menuClick({
        menuPath: ["File","New Folder"],
    });
    
    sf.wait({
        intervalMs: 1000,
    });
    
    //Fiddle with the new folder so finder refreshes
    sf.keyboard.press({
        keys: "right, alt+shift+left, alt+shift+left, alt+shift+left, alt+shift+left",
    });
    
    //Name new folder
    sf.keyboard.type({
        text: folderName,
    });
    
    //Confirm
    sf.keyboard.press ({
        keys: "return"
    });
    
    sf.wait({
        intervalMs: 250,
    });
    
    //Go back to Pro Tools
    sf.ui.proTools.appActivateMainWindow();
    
    sf.wait({
        intervalMs: 1000,
    });
    
    sf.interaction.displayDialog({
        hiddenAnswer: true,
        title: "",
        prompt: "The script will now create an audio track that will be erased at the end of the process",
        giveUpAfterSeconds: 1,
    });
    
    /////////////////////////////////////////////////
    //CREATE NEW BLANK TRACK AND SAVE PRESETS 1 & 2//
    /////////////////////////////////////////////////
    
    //Deselect all tracks and select first track in session
    sf.ui.proTools.trackDeselectAll();
    sf.keyboard.press({
        keys: "home, semicolon",
        fast: true,
    });
    
    //Create new track, without any insert, sends or groups
    sf.keyboard.press({
        keys: "cmd+shift+n, cmd+right, tab, shift+t, shift+e, shift+m, shift+p, return",
        fast: true,
    });
    
    sf.wait({
        intervalMs: 1500,
    });
    
    
    //Open "Save Track Preset" Dialog
    sf.keyboard.press({
        keys: "alt+shift+p",
    });
    
    //Open "Track Data to Recall..." = CMD + R when in the Save Track Preset Dialog
    sf.keyboard.press({
        keys: "cmd+r",
    });
    
    //Click "Track Data to Recall preset" popup menu and choose "<factory default>" for a clean starting point
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.children.whoseRole.is("AXMenuButton").whoseTitle.is("Librarian menu").first.popupMenuSelect({
        menuPath: ["<factory default>"],
    });
    
    //Uncheck all the boxes
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.mouseClickElement({
        relativePosition: {"x":25,"y":98},
        isOption: true,
    });
    
    sf.wait({
        intervalMs: 500,
    });
    
    //Setup up "Track Data to Recall..." to recall Sends and their settings, Plug-ins and their settings, Mix/Edit groups
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Volume Automation and Setting").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Pan Automation and Setting").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Mute Automation and Setting").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Output Assignments").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Plug-in Assignments").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Plug-in Settings and Automation").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Mix / Edit Groups").first.elementClick();
    
    //Confirm and go back to "New track preset dialog"
    sf.keyboard.press({
        keys: "return" 
    });
    
    //Click text field
    sf.ui.proTools.windows.whoseTitle.is("Save Track Preset ").first.textFields.first.elementClick();
    
    //Choose category
    sf.ui.proTools.windows.whoseTitle.is("Save Track Preset ").first.popupButtons.first.popupMenuSelect({
        menuPath: ["Soundflow Revoice Doubler"],
    });
    
    
    //Name preset clearPreset
    sf.keyboard.type({
        text: clearPreset,
    });
    
    sf.wait({
        intervalMs: 1500,
    });
    
    //Confirm
    sf.keyboard.press({
        keys: "return, return" 
    });
    
    dismissConfirmationDialog("Replace");
    
    sf.wait({
        intervalMs: 1500,
    });
    
    //Open "Save Track Preset" Dialog
    sf.keyboard.press({
        keys: "alt+shift+p",
    });
    
    //Open "Track Data to Recall..." = CMD + R when in the Save Track Preset Dialog
    sf.keyboard.press({
        keys: "cmd+r",
    });
    
    //Click "Track Data to Recall preset" popup menu and choose "<factory default>" for a clean starting point
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.children.whoseRole.is("AXMenuButton").whoseTitle.is("Librarian menu").first.popupMenuSelect({
        menuPath: ["<factory default>"],
    });
    
    //Uncheck all the boxes
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.mouseClickElement({
        relativePosition: {"x":25,"y":98},
        isOption: true,
    });
    
    sf.wait({
        intervalMs: 500,
    });
    
    //Setup up "Track Data to Recall..." to recall Sends and their settings, Plug-ins and their settings, Mix/Edit groups
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Volume Automation and Setting").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Pan Automation and Setting").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Mute Automation and Setting").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Send Output Assignments").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Plug-in Assignments").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Plug-in Settings and Automation").first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.groups.whoseTitle.is("Track Data").first.checkBoxes.whoseTitle.is("Mix / Edit Groups").first.elementClick();
    
    //Confirm and go back to "New track preset dialog"
    sf.keyboard.press({
        keys: "return" 
    });
    
    //Click text field
    sf.ui.proTools.windows.whoseTitle.is("Save Track Preset ").first.textFields.first.elementClick();
    
    //Choose category
    sf.ui.proTools.windows.whoseTitle.is("Save Track Preset ").first.popupButtons.first.popupMenuSelect({
        menuPath: ["Soundflow Revoice Doubler"],
    });
    
    
    //Name preset clearPreset
    sf.keyboard.type({
        text: storePreset,
    });
    
    sf.wait({
        intervalMs: 1500,
    });
    
    //Confirm
    sf.keyboard.press({
        keys: "return, return" 
    });
    
    dismissConfirmationDialog("Replace");
    
    sf.ui.proTools.trackSelectByName({
        names: ["TEMP"],
    });
    
    sf.ui.proTools.trackDelete();
    
    sf.interaction.displayDialog({
        hiddenAnswer: true,
        title: "",
        prompt: "Presets are ready!",
        giveUpAfterSeconds: 2,
    });
    

    Here is the script for the Doubler!

    //Declare function "Dismiss Confirmation Dialog"
    function dismissConfirmationDialog(btn) {
        if (sf.ui.proTools.confirmationDialog.invalidate().buttons.whoseTitle.is(btn).first.exists) {
            sf.ui.proTools.confirmationDialog.buttons.whoseTitle.is(btn).first.elementClick();
        }
    };
    
    ///////////////////
    ////MAIN SCRIPT////
    ///////////////////
    
    //Display script condition dialog
    sf.interaction.displayDialog({
        title: "Create double and route to new Routing Folder",
        prompt: "Please make sure that Revoice Pro 4 is runnin and that some audio is selected then press OK",
        giveUpAfterSeconds: 3,
    });
    
    //Get original track name from comments
    sf.ui.proTools.selectedTrack.trackOpenRenameDialog();
    sf.keyboard.press({
        keys: "tab, cmd+c, return",
    });
    
    //Store the name of the original track from the clipboard to a variable
    var originalTrackName = sf.clipboard.getText().text;
    
    //Set the name of the Double Track
    var doubleTrackName = originalTrackName + " DBL"  //<----- Enter prefix or suffix by adding "prefix" + or + "suffix"
    
    //Set the name of the folder
    var folderName = originalTrackName + " LR"      //<----- Enter prefix or suffix by adding "prefix" + or + "suffix"
    
    
    //Close all floating windows
    sf.ui.proTools.viewCloseFloatingWindows();
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    //////Store original track's Send, Insert and Group assignments in Track Preset named "InsSndGrp"////
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    
    //Open "Save Track Preset" Dialog
    sf.keyboard.press({
        keys: "alt+shift+p",
    });
    
    //Open "Track Data to Recall..." = CMD + R when in the Save Track Preset Dialog
    sf.keyboard.press({
        keys: "cmd+r",
    });
    
    //Click "Track Data to Recall preset" popup menu and choose "InsSndGrp" preset
    sf.ui.proTools.windows.whoseTitle.is("Track Data to Recall").first.children.whoseRole.is("AXMenuButton").whoseTitle.is("Librarian menu").first.popupMenuSelect({
        menuPath: ["Soundflow Revoice Doubler"],
    });
    
    //Wait
    sf.wait({
        intervalMs: 250,
    });
    
    //Confirm
    sf.keyboard.press({
        keys: "return, return",
    });
    
    //Wait
    sf.wait({
        intervalMs: 500,
    });
    
    //Set where the preset will be saved
    sf.ui.proTools.windows.whoseTitle.is("Save Track Preset ").first.popupButtons.first.popupMenuSelect({
        menuPath: ["Soundflow Revoice Doubler"],
    });
    
    //Select current preset name
    sf.keyboard.press({
        keys: "cmd+a, backspace",
    });
    
    //Type in Track Preset name
    sf.keyboard.press({
        keys: "shift+s, shift+t, shift+o, shift+r, shift+e, shift+i, n, s, shift+s, n, d, shift+g, r, p",
        fast: true,
    });
    
    //Wait
    sf.wait({
        intervalMs: 500,
    });
    
    //Confirm
    sf.keyboard.press({
        keys: "return, return",
    });
    
    //Wait for over-write dialog to appear
    sf.ui.proTools.confirmationDialog.elementWaitFor({
        waitType: "Appear",
    });
    
    //Dismiss over-write dialog
    dismissConfirmationDialog("Replace")
    
    //Wait for confirmationDialog to disapear
    sf.ui.proTools.confirmationDialog.elementWaitFor({
        waitType: "Disappear",
    });
    
    //////////////////////////////////////////////
    ///////CREATE DOUBLE ON DUPLICATE TRACK///////
    //////////////////////////////////////////////
    
    //Open Revoice Pro Quick Doubler Audiosuite
    sf.ui.proTools.audioSuiteOpenPlugin({
        category: "Other",
        name: "Revoice Pro Quick Doubler",
    });
    
    //Click analyze on audiosuite window
    sf.ui.proTools.firstAudioSuiteWindow.mouseClickElement({
        relativePosition: {"x":395,"y":205},
    });
    
    //Wait for analyze to be done
    sf.ui.proTools.getAudioSuiteWindow('Revoice Pro Quick Doubler').audioSuiteRender();
    
    //Duplicate orignal track
    sf.ui.proTools.trackDuplicateSelected({
        duplicateActivePlaylist: false,
        duplicateAlternatePlaylists: false,
        duplicateAutomation: false,
        duplicateInserts: false,
        duplicateSends: false,
        duplicateGroupAssignments: false,
    });
    
    //Click Render on Audiosuite window
    sf.ui.proTools.firstAudioSuiteWindow.mouseClickElement({
        relativePosition: {"x":395,"y":255},
    });
    
    //Wait for render to be done
    sf.ui.proTools.getAudioSuiteWindow('Revoice Pro Quick Doubler').audioSuiteRender();
    
    //Close all floating windows
    sf.ui.proTools.viewCloseFloatingWindows();
    
    //Rename DBL track, clear comments and write name into comments
    sf.ui.proTools.selectedTrack.trackOpenRenameDialog();
    sf.keyboard.type({
        text: doubleTrackName,
    });
    sf.keyboard.press({
        keys: "tab, cmd+a",
    });
    sf.keyboard.type({
        text: doubleTrackName,
    });
    
    //Confirm name
    sf.keyboard.press({
        keys: "return",
    });
    
    //Wait for rename track window to be closed
    sf.ui.proTools.children.whoseRole.is("AXWindow").first.buttons.whoseTitle.is("OK").first.elementWaitFor({
        waitType: "Disappear",
    });
    
    //Set original track pan to -100
    sf.ui.proTools.trackSelectByName({ deselectOthers: true, names: [originalTrackName] });
    sf.ui.proTools.selectedTrack.trackOutputToggleShow();
    sf.ui.proTools.mainTrackOutputWindow.textFields.whoseTitle.is('Front Pan Numerical').first.elementClick();
    
    sf.keyboard.type({
        text: "-100",
    });
    
    sf.keyboard.press({
        keys: "return",
    });
    
    //Set double track pan to 100
    sf.ui.proTools.trackSelectByName({ deselectOthers: true, names: [doubleTrackName] });
    sf.ui.proTools.selectedTrack.trackOutputToggleShow();
    sf.ui.proTools.mainTrackOutputWindow.textFields.whoseTitle.is('Front Pan Numerical').first.elementClick();
    
    sf.keyboard.type({
        text: "100",
    });
    
    sf.keyboard.press({
        keys: "return",
    });
    
    //Wait
    sf.wait({
        intervalMs: 500,
    });
    
    //Select Original Track 
    sf.ui.proTools.trackSelectByName({ deselectOthers: true, names: [originalTrackName] });
    
    //Close all floating windows
    sf.ui.proTools.viewCloseFloatingWindows();
    
    //Reselect original track + dbl
    sf.keyboard.press({
        keys: "shift+semicolon",
    });
    
    ////////////////////////////////////////////////////////////////
    ////ROUTE ORIGINAL TRACKS AND DOUBLE TO NEW ROUTING FOLDER//////
    ////////////////BY ANDREW SCHEPS///////////////////////////////
    //////////////////////////////////////////////////////////////
    
    // Set up variables to hold original assignments. NOTE this will only check the top-most selected track
    
    //Variable to store the current output assignment
    var originalOutput = sf.ui.proTools.selectedTrack.outputPathButton.value.invalidate().value;
    
    sf.ui.proTools.appActivateMainWindow();
    
    // Refresh PTs track list
    sf.ui.proTools.mainWindow.invalidate();
    
    // Open Move to New Folder dialog and set parameters
    sf.ui.proTools.menuClick({
        menuPath: ["Track", "Move to New Folder..."],
    });
    
    //Wait for the 'Move to New Folder' dialog to appear and assign it to the folderDlg variable
    var folderDlg = sf.ui.proTools.dialogWaitForManual({
        dialogTitle: 'Move To New Folder'
    }).dialog;
    
    //Get the Children of the Move to New Folder dialog, filter them so we only get the popup buttons,
    
    var popupButtons = folderDlg.getElements("AXChildren").filter(function (e) { return e.fullRole == "AXPopUpButton" });
    
    //Assign the buttons coming out of the previous instruction to individual variables
    var folderType = popupButtons[0];
    
    if (folderType.value.value != 'Routing Folder')
        folderType.popupMenuSelect({ menuPath: ['Routing Folder'] });
    
    //Now that it's definitely a routing folder we have the other two popup menus available to assign to variables
    
    var folderWidth = sf.ui.proTools.windows.whoseTitle.is('Move To New Folder').first.popupButtons.allItems[2];
    var timeBase = sf.ui.proTools.windows.whoseTitle.is('Move To New Folder').first.popupButtons.allItems[1];
    
    // Set them accordingly
    
    if (folderWidth.value.value != 'Stereo')
        folderWidth.popupMenuSelect({ menuPath: ['Stereo'] });
    
    if (timeBase.value.value != 'Samples')
        timeBase.popupMenuSelect({ menuPath: ['Samples'] });
    
    sf.ui.proTools.windows.whoseTitle.is('Move to New Folder').first.checkBoxes.whoseTitle.is('Route Tracks to New Folder').first.checkboxSet({
        targetValue: "Enable",
    });
    
    sf.ui.proTools.windows.whoseTitle.is('Move To New Folder').first.textFields.whoseTitle.is('Track name').first.elementSetTextFieldWithAreaValue({
        value: folderName,
    });
    
    // Make it so
    sf.ui.proTools.windows.whoseTitle.is('Move To New Folder').first.buttons.whoseTitle.is('Create').first.elementClick();
    sf.ui.proTools.windows.whoseTitle.is('Move To New Folder').first.elementWaitFor({
        waitType: "Disappear",
        timeout: 2000,
    });
    
    // Refresh PTs track list
    sf.ui.proTools.mainWindow.invalidate();
    
    //Reselect the new folder
    sf.ui.proTools.trackSelectByName({ deselectOthers: true, names: [folderName] });
    
    // Folder will automatically be assigned to the session's default output
    // If the source track's output was different assign it to the original output
    if (originalOutput !== "MAIN") {
        sf.ui.proTools.selectedTrack.trackOutputSelect({
            outputSelector: items => items.filter(item => item.path.slice(-1)[0].includes(originalOutput))[0],
            selectForAllSelectedTracks: true,
        });
    }
    
    //Wait
    sf.wait({
        intervalMs: 500,
    });
    
    //Copy new folder name to comments
    sf.ui.proTools.selectedTrack.trackOpenRenameDialog();
    sf.keyboard.press({
        keys: "cmd+c, tab, cmd+v, return",
    });
    
    //Color new folder <-------- According to your template
    sf.ui.proTools.colorsSelect({
        colorType: "Color",
        colorBrightness: "Medium",
        colorNumber: 12,
    });
    
    //Wait
    sf.wait({
        intervalMs: 2000,
    });
    
    //Scroll selected tracks into view to avoid fails when loading track preset
    sf.ui.proTools.selectedTrack.titleButton.popupMenuSelect({
        isRightClick: true,
        menuPath: ["Scroll Into View"],
    });
    
    
    //Apply orignal track's data to newly created folder
    //Calling command "Recall Track Preset on Selected Track" from package "Pro Tools Utilities" (installed from user/pkg/version "srAasovvDiQacRZ2mcId4RrOA8R2/ck1w23x1o0000ef10gotnvo1z/cko4vno0300016y10lm312ray")
    sf.soundflow.runCommand({
        commandId: 'user:ckpcjd5io00018t1042p6loif:ckfs5niws0007v110s447k1ac',
        props: {
            trackPresetPath: ["Soundflow Revoice Doubler","STOREInsSndGrp"],
        }
    
    });
    
    //Wait
    sf.wait({
        intervalMs: 1000,
    });
    
    //Go back to original track & extend selection to double track
    sf.ui.proTools.trackSelectByName({ deselectOthers: true, names: [originalTrackName] });
    sf.keyboard.press({
        keys: "shift+semicolon",
    });
    
    //Wait
    sf.wait({
        intervalMs: 1000,
    });
    
    
    //Clear insert and sends from original track and double
    //Calling command "Recall Track Preset on Selected Track" from package "Pro Tools Utilities" (installed from user/pkg/version "srAasovvDiQacRZ2mcId4RrOA8R2/ck1w23x1o0000ef10gotnvo1z/cko4vno0300016y10lm312ray")
    sf.soundflow.runCommand({
        commandId: 'user:ckpcjd5io00018t1042p6loif:ckfs5niws0007v110s447k1ac',
        props: {
            trackPresetPath: ["Soundflow Revoice Doubler","CLEARInsSndGrp"],
        }
    });
    
    //Wait
    sf.wait({
        intervalMs: 1000,
    });
    
    //Select Original track & open rename track dialog
    sf.ui.proTools.trackSelectByName({ deselectOthers: true, names: [originalTrackName] });
    sf.ui.proTools.selectedTrack.trackOpenRenameDialog();
    
    //Add bullshit suffix & confirm
    sf.keyboard.type({
        text: originalTrackName + "xx",
    });
    sf.keyboard.press({
        keys: "return",
    });
    
    //Duplicate orignal track again
    sf.ui.proTools.trackDuplicateSelected({
        duplicateActivePlaylist: true,
        duplicateAlternatePlaylists: true,
        duplicateAutomation: false,
        duplicateInserts: false,
        duplicateSends: false,
        duplicateGroupAssignments: false,
    });
    
    //Rename Duplicate
    sf.ui.proTools.selectedTrack.trackOpenRenameDialog();
    
    //Paste original track name & confirm
    sf.keyboard.type({
        text: originalTrackName,
    });
    sf.keyboard.press({
        keys: "return, return",
    });
    
    //Wait for rename track window to be closed
    sf.ui.proTools.children.whoseRole.is("AXWindow").first.buttons.whoseTitle.is("OK").first.elementWaitFor({
        waitType: "Disappear",
    });
    
    //Go back to original track with suffix & delete it
    sf.ui.proTools.trackSelectByName({ deselectOthers: true, names: [originalTrackName + "xx"] });
    sf.ui.proTools.trackDelete();
    
    //Wait for delete warning to appear
    sf.ui.proTools.windows.first.elementWaitFor();
    
    //Dismiss "There are audio clips on this track"
    dismissConfirmationDialog("Delete");
    
    
    • 1 replies
    1. T
      Thomas Gloor @Thomas_Gloor
        2022-04-28 22:58:13.639Z2022-04-29 02:57:05.278Z

        Script updated to be more efficient.

        I also added a setup script that has to be run once!