No internet connection
  1. Home
  2. How to

Change 3-4 Output in I/O Setup

By Lance Crowder @Lance_Crowder
    2024-10-22 16:45:18.205Z

    Hi,

    We have multiple computers that we send sessions back and forth to. And for whatever reason output 3-4 is usually n/a when either going between computers or at least with mine specifically. It doesn't take that much time to change but just trying to optimize the workflow the best I can. I'm not sure if there's a better way to go about this. But I haven't been able to figure out a way to click on this specifically. I can get it to click on the mapping to output menu. But not select the output I want.

    Any thoughts?

    Solved in post #2, click to view
    • 2 replies
    1. Chad Wahlbrink @Chad2024-10-22 17:56:32.562Z

      Hi @Lance_Crowder,

      Try the script below:

      if (!sf.ui.proTools.isRunning) throw `Pro Tools is not running`;
      
      let busOutputName = '3-4';
      let outputName = 'ROOM: 3-4 (Stereo)';
      
      let regex = /[a-zA-z]+\.\s/;
      
      // Open I/O if Closed
      if (!sf.ui.proTools.windows.whoseTitle.is("I/O Setup").first.exists) {
          sf.ui.proTools.menuClick({ menuPath: ["Setup", "I/O..."] })
          sf.ui.proTools.windows.whoseTitle.is("I/O Setup").first.elementWaitFor();
      }
      
      // Set I/O Setup Window to "Bus" Section
      sf.ui.proTools.windows.whoseTitle.is("I/O Setup").first.radioButtons.whoseTitle.is("Bus 3 of 7").first.checkboxSet({ targetValue: "Enable" })
      
      // Fetch the row matching the Bus Name we are targeting
      let outputRow = sf.ui.proTools.windows.whoseTitle.is("I/O Setup").first.invalidate().tables.whoseTitle.is("Bus Setup").first.children.whoseRole.is("AXRow")
          .filter(x => x.children.whoseRole.is("AXCell").filter(x => x.textFields.filter(x => x.title.value.split(regex)[1] == busOutputName)[0])[0])[0];
      
      // Ensure Mapping to Output is checked
      outputRow.children.whoseRole.is("AXCell").allItems[6].checkBoxes.first.checkboxSet({ targetValue: "Enable" });
      
      // Select the Output to Map to
      outputRow.invalidate().children.whoseRole.is("AXCell").allItems[7].children.whoseRole.is("AXMenuButton").first.popupMenuSelect({ menuPath: [outputName] })
      

      You can customize this by changing what is in the quotations on line 3 and line 4.

      let busOutputName = '3-4';
      let outputName = 'ROOM: 3-4 (Stereo)';
      
      ReplySolution
      1. L
        In reply toLance_Crowder:
        Lance Crowder @Lance_Crowder
          2024-10-22 18:13:20.256Z

          I just added it closing the window when it was done but works great! Thanks so much!