Changing Pro Tools IO settings
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!
- Christian Scheuer @chrscheuer2020-12-22 23:01:12.904Z
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:
- CChris Gilroy @Chris_Gilroy
This is great! Thanks for these resources. Excited to really dive into this.
- In reply toChris_Gilroy⬆:Raphael Sepulveda @raphaelsepulveda2020-12-23 02:53:25.827Z
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!- CChris Gilroy @Chris_Gilroy
Haha, incredible! Thanks for the tip.
- AIn reply toChris_Gilroy⬆:Andrew Downes @Andrew_Downes
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();
- CChris Gilroy @Chris_Gilroy
Incredible! Excited to try this out. Thanks so much!
- CChris Gilroy @Chris_Gilroy
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");- AAndrew Downes @Andrew_Downes
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