No internet connection
  1. Home
  2. How to

Changing Pro Tools IO settings

By Chris Gilroy @Chris_Gilroy
    2020-12-22 21:13:10.108Z

    I'm very new to understanding what can and cannot be done with SoundFlow and Pro Tools. Already there are so many incredible things!

    I was wondering if it is possible for a script to open up Setup, navigate to IO..., Delete all existing IO, then import a prefered system IO?

    Thanks for any insight!

    • 8 replies
    1. Hi Chris,

      Yes, this should be possible.

      Generally, I advise people interested in learning this to watch these two videos that show you various basic principles for doing your own UI automation:

      1. CChris Gilroy @Chris_Gilroy
          2020-12-23 03:33:41.147Z

          This is great! Thanks for these resources. Excited to really dive into this.

        • In reply toChris_Gilroy:

          Chris! Also check out this thread: https://forum.soundflow.org/-3708/io-preset-setting-selection
          They're working on pretty much the same thing you're asking about!

          1. CChris Gilroy @Chris_Gilroy
              2020-12-23 03:34:17.979Z

              Haha, incredible! Thanks for the tip.

            • A
              In reply toChris_Gilroy:
              Andrew Downes @Andrew_Downes
                2020-12-23 21:35:22.347Z

                Hi There
                Here is a script that does what you're asking, it works for me!
                Just make sure you change the path to your I/O setup(s)

                sf.ui.proTools.appActivateMainWindow();
                
                /**@param {AxElement} win
                 * @param {string} path
                 */
                function navigateToInDialog(win, path) {
                    //Open the Go to... sheet
                    sf.keyboard.type({ text: '/' });
                
                    //Wait for the sheet to appear
                    var sheet = win.sheets.first.elementWaitFor({ timeout: 500 }, 'Could not find "Go to" sheet in the Save/Open dialog').element;
                
                    //Set the value of the combo box
                    sheet.comboBoxes.first.value.value = path;
                
                    //Press OK
                    sheet.buttons.whoseTitle.is('Go').first.elementClick({ asyncSwallow: true }, 'Could not click "Go"');
                
                    //Wait for sheet to close
                    win.sheets.first.elementWaitFor({ waitForNoElement: true, timeout: 2000 }, '"Go to" sheet didn\'t close in time');
                }
                
                function importIO(sessionPath) {
                    //Open I/O
                    sf.ui.proTools.menuClick({ menuPath: ["Setup", "I/O..."], });
                
                    //Define reference to window
                    var win = sf.ui.proTools.windows.whoseTitle.is('I/O Setup').first;
                
                    //Click the "Bus" tab
                    win.children.whoseTitle.startsWith("Bus").first.elementClick();
                
                    //Now click that Import IO button
                    win.buttons.whoseTitle.startsWith('Import Settings...').first.elementClick();
                
                    // Wait for window to open
                    var importWin = sf.ui.proTools.windows.whoseTitle.is('Open').first;
                
                    // Navigate to folder
                    navigateToInDialog(importWin, sessionPath);
                
                    // Click Open
                    importWin.buttons.whoseTitle.is('Open').first.elementClick();
                
                    // Wait for import window to close
                    importWin.elementWaitFor({ waitForNoElement: true });
                }
                
                function main() {
                    //Import IO
                    importIO("/Users/protools/Documents/Pro Tools/IO Settings/01 Avid HD 3 Interface No Buss August 2020.pio");
                
                    //Wait for Import IO Data
                    var importIOWin = sf.ui.proTools.windows.whoseTitle.is('I/O Setup').first.elementWaitFor().element;
                
                    //Click OK
                    importIOWin.getFirstWithTitle("OK").elementClick();
                
                    sf.ui.proTools.confirmationDialog.buttons.whoseTitle.is('Yes').first.elementClick();
                
                }
                
                main();
                1. CChris Gilroy @Chris_Gilroy
                    2021-01-02 13:58:08.377Z

                    Incredible! Excited to try this out. Thanks so much!

                    1. CChris Gilroy @Chris_Gilroy
                        2021-01-02 15:44:43.779Z

                        Works great! I had to slightly adjust the import IO path.

                        Check this line alteration, I think you have one too many "/protools" in your directory path. At least for me.

                        function main() {
                        //Import IO
                        importIO("/Users/Documents/Pro Tools/IO Settings/01 Avid HD 3 Interface No Buss August 2020.pio");

                        1. AAndrew Downes @Andrew_Downes
                            2021-01-11 03:23:20.637Z

                            Hi Chris
                            Glad it's working for you.
                            I have no issue with the directory path, protools is the name of my computer and Pro Tools is the folder in the Documents folder where all the settings are kept.
                            Cheers