Auto-enable all parameters of ALL plug-ins
Foregive me, if that is answered somewhere, I did a search but did not find anything.
Here is my problem: I usually start my scoring sessions and my preferences are set so that the plug-in parameters are not auto-enabled by default. (I wish I could leave that preference checked, but with some plugins there is a strange loss in Plugin-Settings when you restart the session, something that Avid never fixed).
I usually then only set the parameters in the Channelstrips to be autoenabled on some tracks, which is easy to do just with ProTools commands.
On some sessions however I wished that I could, at a later stage, have ALL Plugin-Parameters ready to be automated. But to do that, in a typical scoring session with more than 500 tracks is more than a nightmare. And even more complex, if you already have some parameters of some plugins automated.
So what I need would be a script doing the following:
-Check all the plug-in parameters in all plugins of my session of every track that is in my "automation" group. That's just a group that holds all related mixing tracks and just groups the automation-mode, but not monitoring or Guide-Tracks that I get from the Re-Recording Mixer.
-If a Parameter is already auto-enabled do nothing.
-If the parameter is not auto-enabled enable it
-the bypass shall not be auto-enabled, exept if it is already enabled, then it shall stay enabled, in case I did automate the bypass.
-make sure that the preference for "auto enable plug parameter by default" is on from now on, because after I run that script every plugin inserted later shall have its parameters set to be ready to be automated.
Does something like this exists? I would be willing to make a large coffee break if I let the script run, as I assume such a script would take some time, but it would be a great thing, I guess not only for me..
- samuel henriques @samuel_henriques
Hello Daniel, this is a fun one.
So I tried using the ctrl+alt+cmd click on "plug-in automation enable" button, and then use the same on the bypass button to disable it. This should make the script much faster. But I soon found that figuring out the if/else for the rules you asked was going to make the script, possibly more unstable.
So I went with the "Plug-in Automation Window" and I think this works much better.
It looks for the first insert on selected track, opens the "Plug-in Automation Window" and selects all automation params, ignoring "Master Bypass", press "Add" and selects the next radio button.
It does this for all selected tracks.In the end it goes to the preferences and enables "default to auto enabled".
As it is now, you have to select all the tracks you want this to work on. I think it is a better option than the script selecting the tracks on the "automation" group. Just because if you notice something is wrong, or the script fails, it wont repeat all tracks/plugins again, you can continue from the failed track.
I'm sure you know, if you click the dot to the left of the group name, pro tools will select all tracks from that group. If you really want the script to do this, thats what I'll write on the script.
Another thing, while it's selecting all automation params, you might notice that some of them don't change to blue, but from my testing, it is only a visible thing. It is working correctly.
Please try this and let me know how it goes:
// Select "All Automation" group's tracks // ENABLE all automation parameters, skyping baypass, // on all selectedtracks, skip tracks without inserts and inactive inserts. // Select original selected tracks // Set pro tools preference "default to auto enabled" function getActiveInserts() { return sf.ui.proTools.selectedTrackHeaders[0].insertSelectorButtons.filter(ins => !ins.value.invalidate().value.includes("inactive") && ins.value.invalidate().value !== "unassigned" ).map(ins => ins.title.invalidate().value.slice(-1)) }; function openFirstInsert() { const activeInserts = getActiveInserts() const insertLaters = "ABCDEFGHIJ"; if (activeInserts.length > 0) { sf.ui.proTools.selectedTrack.trackInsertToggleShow({ insertNumber: +insertLaters.indexOf(activeInserts[0]) + 1, targetValue: "Enable", waitForInsertWindow: true }) }; }; function enablePluginControlsDefaultToAutoEnabled() { sf.ui.proTools.menuClick({ menuPath: ["Pro Tools", "Preferences..."], }); const proToolsPreferencesWin = sf.ui.proTools.windows.whoseTitle.is('Pro Tools | Ultimate Preferences').first proToolsPreferencesWin.radioButtons.allItems[3].elementClick(); // default to auto enabled proToolsPreferencesWin.groups.allItems[1].checkBoxes.allItems[8].checkboxSet({ targetValue: "Enable", }); proToolsPreferencesWin.buttons.whoseTitle.is('OK').first.elementClick(); }; /** * @param {AxElement} plugWin */ function autoEnableAllOnAllPlugs(plugWin,) { const bypassParameterNames = [ "Master Bypass", "Global Bypass", "Bypass" ] // Open Plug-In Automation Window plugWin.buttons.whoseTitle.is("Plug-In Automation enable").first.elementClick({ asyncSwallow: true }); const plugAutomationWin = sf.ui.proTools.invalidate().windows.whoseTitle.is("Plug-In Automation").first.elementWaitFor({}, "Plug-in Automation Window Failed to Open.").element; const availParam = () => plugAutomationWin.tables.first.children.whoseRole.is("AXColumn").first .children.whoseRole.is("AXRow").map(row => row.children.whoseRole.is("AXCell").first.children.whoseRole.is("AXStaticText").first); plugAutomationWin.radioButtons.forEach(plugSelect => { // Select plug-in radio btn plugSelect.checkboxSet({ targetValue: "Enable" }); // Select all parameters, ignore Master Bypass availParam().map(el => { if (bypassParameterNames.indexOf(el.title.invalidate().value) == -1) { el.elementClick() } }); // Add All selected parameters plugAutomationWin.buttons.whoseTitle.is("Add >>").first.elementClick(); }); // Click Ok plugAutomationWin.buttons.whoseTitle.is("OK").first.elementClick(); // Close plug-in Window plugWin.invalidate().getElement("AXCloseButton").elementClick(); }; // Get All Automation Grioup Symbol element const allAutomationGroup = () => sf.ui.proTools.mainWindow.groupListView.children.whoseRole.is("AXRow").map(row => ({ groupSymbol: row.children.whoseRole.is("AXCell").map(cell => cell)[0].buttons.map(btn => btn)[0], groupName: row.children.whoseRole.is("AXCell").map(cell => cell)[1].buttons.map(btn => btn)[0] })).filter(grp => grp.groupName.title.invalidate().value.endsWith("All Automation"))[0] // Get current plug-in Window const plugWin = () => sf.ui.proTools.invalidate().windows.whoseTitle.startsWith("Plug-in:").first let errorLog = [] function main() { // sf.ui.proTools.mainWindow.invalidate(); sf.ui.proTools.appActivateMainWindow(); //Invalidate Pro Tools main window. sf.ui.proTools.invalidate(); //Get selected tracks const originalTracks = sf.ui.proTools.selectedTrackHeaders; // Open Track List sf.ui.proTools.groupsEnsureGroupListIsVisible() // Select All Automation Tracks if (allAutomationGroup()) { allAutomationGroup().groupSymbol.elementClick() } else { alert("Group \"All Automation\" Not Found!") throw 0 } //Do for each track. sf.ui.proTools.selectedTracks.trackHeaders.slice().map(track => { /// Ignore track without insert buttons if (track.insertButtons[0].exists) { try { if (plugWin().exists) { // Close Window plugWin().getElement("AXCloseButton").elementClick(); }; //Select track track.trackSelect(); //Scroll track into View track.trackScrollToView(); // Open Fist available insert openFirstInsert() if (plugWin().exists) { // Enable all automation params on all plug-ins, ignore Master Bypass autoEnableAllOnAllPlugs(plugWin()) } } catch (err) { errorLog.push({ track: track.normalizedTrackName }) } } }); // default to auto enabled in preferences enablePluginControlsDefaultToAutoEnabled(); // Scroll to previous selected tracks originalTracks[0].trackScrollToView() // Move track to top originalTracks[0].popupButtons.first.mouseClickElement({ isShift: true, isControl: true }) //Restore previously selected tracks sf.ui.proTools.trackSelectByName({ names: originalTracks.map(track => track.normalizedTrackName) }); }; try { main() } catch (err) { } finally { if (errorLog.length > 0) { log(errorLog) alert(`Found ${errorLog.length} error/s. \n\nCheck SoundFlow Log.`) } }
- In reply toDaniel_Dettwiler⬆:Daniel Dettwiler @Daniel_Dettwiler
Thanks a lot Samuel, that's really absolutlely great!
a)
There is one little "bug", the thing with the "ignore" bypass does not work on all Plugins (ie not on soundtoys). I already did try to understand why, and it is easy to fix: In most Plugins it is called "Master Bypass", while in Soundtoys Plugins it is called only "Bypass". I tried to change the script making an "or" rule in the corresponding line, but beeing new to this, I did not find out how to do so.b)
Yes, I know how to quickly select tracks of course:-) I think it is great to have that script the way that the user selects the tracks, so it will be of use for many other users. If it is not too much work however, it would be great for me to also have it, so that it selects the automation group. In my template the group name is "All Automation".c)
And one last little thing, only if that is not too complex: A Modification of the script that would turn all parameters to be unenabled (including the insert for that purpose). So that basically all of the plugins of the selected tracks (here it would not make sense to select a group automatically) would have all Parameters back on the left side in the Plug-in Automation Windows. Only if it would not take too much work for you - and of course I'll pay the beer if we will meet us once in person:-)Thanks again, cheers
Daniel - In reply toDaniel_Dettwiler⬆:Daniel Dettwiler @Daniel_Dettwiler
Hi Samuel again, I just seemed to have managed to change the code to fix that thing with the bypass, but maybe if you have a look over that lines, to see if I did it right. If yes, point a) is done:-)
Thanks, Danielsamuel henriques @samuel_henriques
If you changed this line
if (!el.title.invalidate().value.includes("Master Bypass")) {
so it is
if (!el.title.invalidate().value.includes("Bypass")) {
It will work for now. The problem is that there are plugins that use the word "Bypass" on other parameters, I was feeling lucky when I made it at first. I'm now figuring a way to fix this for any plugin you might use.
- In reply toDaniel_Dettwiler⬆:Daniel Dettwiler @Daniel_Dettwiler
That will do it for now I guess. I will try to learn those things. Maybe the logic could later be something like this:
Value is "Master Bypass" or value is "Bypass". I'll find it out how to do that sooner or later.Also have to try to exclude VCA Tracks from the script. They are always in my Automation group, but that slows the script down. A good training for me.
I aslo included the selection of the tracks in an automation group, christian once made me a script that did almost this, so I could modify it, works so far.
Thats were I ended and so far it is good. Thanks again!
The last thing I have to find out: As now before your thing is running, the group tracks of the All Automation group are selected, at the end of your script it is now (which is logic) restoring the selection of that group, rahter than the selection that I had before running the script. but also good for now, I will find it out.
samuel henriques @samuel_henriques
Just updated above, fixed the bypass parameter name. Now when he opens the plugin the first time, you can see the bypass button popup open, this is where I'm taking its name from. I hope this way it will work with any plug.
I added the select "All Automation" tracks as well. It's doing the same as christian's but slightly different steps
The last thing you asked was for a script that does the opposite? De-Enable all parameters?
Daniel Dettwiler @Daniel_Dettwiler
Great, thanks a lot! Will try tomorrow.
Will it also restore the previous track selection now? I will see...
I will test that thing with the bypass.
And if you have any idea how to exclude the VCA and Midi Tracks from that operation, that would make the script faster. If it goes over the VCA Tracks (that are in my "All Automation" Group, well, it does not crash, but obviously there are no plugins on the VCA Faders and it takes way more time (funny) for the script to go over those VCA and Midi Tracks, then as it takes for the Audio-Tracks that actually have Plugins (there it is way faster than I expected). If that is too complicated it can also just stay the way it is now. (I could either make another group without the VCA's and include that Group in the script or I wait a little bit longer)
Yes, the last thing: something that does the opposite would be cool, but that one should be more simple. It shall do it for the selected tracks only. And ib shall de-enable just all parameters (also the insert).
Thanks!
samuel henriques @samuel_henriques
Now it will select the "all automation" tracks again, would you like to have the selected tracks before you started the script?
It is possible to work only on audio and aux tracks ( are aux useful?)
I'll think of something to do the opposite.
Daniel Dettwiler @Daniel_Dettwiler
Now it will select the "all automation" tracks again, would you like to have the selected tracks before you started the script?
Yes, it would be lovely to have back the selected tracks that were active before I let run the script. Also it would be cool to be at the same place in the session (i.e. if I work on the drum tracks that after having let the script run I again see the drum tracks... (I have not checked if this is the case or not).
It is possible to work only on audio and aux tracks ( are aux useful?)
It must be all tracks that can contain plugins (Audio, Aux, Masterfaders & Instrumental tracks).
I'll think of something to do the opposite.
That would be so cool!
samuel henriques @samuel_henriques
Hello Daniel,
Just updated, now it only works on tracks with insert buttons. (tracks with insert buttons, but nothing inserted, will be checked)It will select the tracks selected before the script was initiated.
Also I added an error report, if it finds an error trying to do a plugin on a track, it will save the name of the track and the plug-in name. Just so it's easier to track something. It wont detect everything, but hopefully something useful.
samuel henriques @samuel_henriques
DISABLE VERSION:
// DISABLE all automation parameters, // on all selectedtracks, skip tracks without inserts and inactive inserts. // Select original selected tracks function getActiveInserts() { return sf.ui.proTools.selectedTrackHeaders[0].insertSelectorButtons.filter(ins => !ins.value.invalidate().value.includes("inactive") && ins.value.invalidate().value !== "unassigned" ).map(ins => ins.title.invalidate().value.slice(-1)) } function openFirstInsert() { const activeInserts = getActiveInserts() const insertLaters = "ABCDEFGHIJ"; if (activeInserts.length > 0) { sf.ui.proTools.selectedTrack.trackInsertToggleShow({ insertNumber: +insertLaters.indexOf(activeInserts[0]) + 1, targetValue: "Enable", waitForInsertWindow: true }) }; }; function insertsMakeInactive() { const insertLaters = "ABCDEFGHIJ" getActiveInserts().map(insertLeter => sf.ui.proTools.selectedTrack.trackInsertToggleActive({ insertNumber: +insertLaters.indexOf(insertLeter) + 1, }) ); }; /** * @param {AxElement} plugWin */ function autoDisableAllOnAllPlugs(plugWin) { // Open Plug-In Automation Window plugWin.buttons.whoseTitle.is("Plug-In Automation enable").first.elementClick({ asyncSwallow: true }); const plugAutomationWin = sf.ui.proTools.invalidate().windows.whoseTitle.is("Plug-In Automation").first.elementWaitFor({}, "Plug-in Automation Window Failed to Open.").element; const availParam = () => plugAutomationWin.tables.allItems[1].children.whoseRole.is("AXColumn").first.children.whoseRole.is("AXRow").map(row => row.children.whoseRole.is("AXCell").first.children.whoseRole.is("AXStaticText").first); plugAutomationWin.radioButtons.forEach(plugSelect => { // Select plug-in radio btn plugSelect.checkboxSet({ targetValue: "Enable" }); // Select all parameters, ignore Master Bypass availParam().map(el => el.elementClick()); // Remove All selected parameters plugAutomationWin.buttons.whoseTitle.is("<< Remove").first.elementClick(); // Dismiss Warning const confirmationDialog = sf.ui.proTools.confirmationDialog.invalidate().buttons.whoseTitle.is("Remove").first if (confirmationDialog.exists) { confirmationDialog.elementClick(); confirmationDialog.elementWaitFor({ waitType: "Disappear", timeout: 2000 }) }; }); // Press Ok plugAutomationWin.buttons.whoseTitle.is("OK").first.elementClick(); // Close plug-in Window plugWin.invalidate().getElement("AXCloseButton").elementClick(); }; // Get current plug-in Window const plugWin = () => sf.ui.proTools.invalidate().windows.whoseTitle.startsWith("Plug-in:").first let errorLog = [] function main() { // sf.ui.proTools.mainWindow.invalidate(); sf.ui.proTools.appActivateMainWindow(); //Invalidate Pro Tools main window. sf.ui.proTools.invalidate(); //Get selected tracks const originalTracks = sf.ui.proTools.selectedTrackHeaders; // Open Track List sf.ui.proTools.groupsEnsureGroupListIsVisible() //Do for each track. sf.ui.proTools.selectedTracks.trackHeaders.slice().map(track => { /// Ignore track without insert buttons if (track.insertButtons[0].exists) { try { if (plugWin().exists) { // Close Window plugWin().getElement("AXCloseButton").elementClick(); }; //Select track track.trackSelect(); //Scroll track into View track.trackScrollToView(); // Open Fist available insert openFirstInsert() if (plugWin().exists) { // Enable all automation params on all plug-ins, ignore Master Bypass autoDisableAllOnAllPlugs(plugWin()) }; insertsMakeInactive() } catch (err) { errorLog.push({ track: track.normalizedTrackName }) } } }); // Scroll to previous selected tracks originalTracks[0].trackScrollToView() // Move track to top originalTracks[0].popupButtons.first.mouseClickElement({ isShift: true, isControl: true }) //Restore previously selected tracks sf.ui.proTools.trackSelectByName({ names: originalTracks.map(track => track.normalizedTrackName) }); }; try { main() } catch (err) { } finally { if (errorLog.length > 0) { log(errorLog) alert(`Found ${errorLog.length} error/s. \n\nCheck SoundFlow Log.`) } }
samuel henriques @samuel_henriques
UPDATED:
Updated the Enable version with some code improvements. On the event of error, you'll get the track name, I removed the plugin name from the report, because it was wrong.
and above you have Disable version. Couldn't figure a faster and safer way.
This works on selected tracks.Let me know how it goes.
Daniel Dettwiler @Daniel_Dettwiler
Great! I will test both tomorrow.. I know many mixers (at least in my country) that might get to soundflow only because of that.. What cool scripts, thanks a lot!
D.samuel henriques @samuel_henriques
That's really cool. Just updated with a few tweaks.
If you think it's appropriate you can share my referral with them,
https://soundflow.org/invite?fpr=soundflow
😂😂samuel henriques @samuel_henriques
Hey Daniel,
So I figured the way I'm getting the bypass parameter name makes no sense and doesn't work as I wanted it to ( it's stupid actually).
So what I propose for now is list them so I can include them on the script.
If you could do a list of the names of the bypass parameter of the plugins you use, I'll update the script with a few more tweaks and this.
Sorry I could't figure this yet, but I'm sure there is a way.Just Updated now with a list that wont enable automation if it is called:
"Master Bypass", "Global Bypass", "Bypass".Hope this is getting better.
Daniel Dettwiler @Daniel_Dettwiler
Hi Samuel,
just tested both scripts, but something got wrong I guess (I was in another Session, but the Group Name was the same, here is what the log said:"ALL Enable Script": 07.02.2022 19:24:22.34 <info> [Backend]: Mouse current pos is: (201.80078125, 648.15234375) Clicking with mouse here: (148, 642) 07.02.2022 19:24:22.34 <info> [Backend]: Moving back... 07.02.2022 19:24:22.35 <info> [Backend]: Position is now: (201.80078125, 648.15234375) 07.02.2022 19:24:22.49 <info> [Backend]: [LOG] [ { "track": "C414 Room_1" } ] "Disable script:" 07.02.2022 19:24:25.68 <info> [Backend]: << Command: PLUGIN PARAMETERS ALL DISABLE [user:ck9yeb723000kfy10h4x3e0p4:ckzd0lfgn000015107c1poww0] 07.02.2022 19:24:41.52 <info> [Backend]: [SF_FIREBASE_WS]: Sending keep-alive 07.02.2022 19:25:26.52 <info> [Backend]: [SF_FIREBASE_WS]: Sending keep-alive 07.02.2022 19:26:11.52 <info> [Backend]: [SF_FIREBASE_WS]: Sending keep-alive 07.02.2022 19:26:56.52 <info> [Backend]: [SF_FIREBASE_WS]: Sending keep-alive 07.02.2022 19:27:41.53 <info> [Backend]: [SF_FIREBASE_WS]: Sending keep-alive
I'll check tomorrow if it still would work in the other session, or see if I can find something out. It's bedtime for me, maybe I did something wrong...
- In reply toDaniel_Dettwiler⬆:Daniel Dettwiler @Daniel_Dettwiler
Hi Samuel, sorry, I had a busy time mixing, but I tested now again. Maybe let's first stay "only" with the enable script first.. In the newest version something does not work anymore. it does go through the right tracks and you can see in Protools that it does go through those tracks, but it does not enable the parameters.
I will copy you the Log (but have to shorten it, as it is to long and text can not be sent). I hope it is just something little, then otherwise that thing would be great. Let me know, if I can do anything else (filming the screen, or whatever you might need to get...)
Thanks,
Daniel11.02.2022 17:45:27.99 <info> [Backend]: #StreamDeck: KeyDown (4,2) -> PLUGIN PARAMETERS ALL TO BE ENABLED 11.02.2022 17:45:27.99 <info> [Backend]: >> Command: PLUGIN PARAMETERS ALL TO BE ENABLED [user:ck9yeb723000kfy10h4x3e0p4:ckz8iwf2t0000nx10s5oxdm4l] 11.02.2022 17:45:27.100 <info> [Backend]: Checking for running apps with bundle 'com.avid.ProTools' NSArray.ArrayFromHandle count = 1 11.02.2022 17:45:28.07 <info> [Backend]: Mouse current pos is: (376.76171875, 255.73828125) Clicking with mouse here: (80, 28) 11.02.2022 17:45:28.08 <info> [Backend]: Moving mouse back to: (376.76171875, 255.73828125) 11.02.2022 17:45:28.08 <info> [Backend]: Position is now: (376.76171875, 255.73828125) 11.02.2022 17:45:28.11 <info> [Backend]: ProTools version: 21.10.0.67 class: PT2021_6 ProTools processID: 1109 11.02.2022 17:45:28.25 <info> [Backend]: ProTools version: 21.10.0.67 class: PT2021_6 ProTools processID: 1109 11.02.2022 17:45:28.35 <info> [Backend]: Pressing key: kVK_ANSI_P. Flags: Zero 11.02.2022 17:45:28.52 <info> [Backend]: Could not get UIElement for AxPtTrackInsertSendSelectorButton: Could not get trackInserts/Sends. { "title": "Inserts A-E", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Insert selector A", "description": "Insert selector A", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector B", "description": "Insert selector B", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector C", "description": "Insert selector C", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector D", "description": "Insert selector D", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment A", "description": "Insert Assignment A\n\"Channel Strip\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment B", "description": "Insert Assignment B\n\"Decapitator\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment C", "description": "Insert Assignment C\n\"CLA-76\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment D", "description": "Insert Assignment D\n\"Scheps 73\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Inserts F-J", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Insert selector F", "description": "Insert selector F", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector G", "description": "Insert selector G", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector H", "description": "Insert selector H", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector I", "description": "Insert selector I", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment F", "description": "Insert Assignment F\n\"API-550B\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment G", "description": "Insert Assignment G\n\"CLA-2A\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment H", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment I", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Sends A-E", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Send selector A", "description": "Send selector A", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment A", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector B", "description": "Send selector B", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment B", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector C", "description": "Send selector C", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment C", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector D", "description": "Send selector D", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment D", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Sends F-J", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Send selector F", "description": "Send selector F", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment F", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector G", "description": "Send selector G", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment G", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector H", "description": "Send selector H", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment H", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector I", "description": "Send selector I", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment I", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Audio IO", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Audio Input Path selector\n\"Sony In 1.L\"", "description": "Audio Input Path selector\n\"Sony In 1.L\"", "role": "AXPopUpButton", "fullRole": "AXPopUpButton" }, { "title": "Output Window button", "description": "Output Window button", "role": "AXButton", "fullRole": "AXButton" }, { "title": "Audio Output Path selector\nss 01 front (Stereo)", "description": "Audio Output Path selector\nss 01 front (Stereo)", "role": "AXPopUpButton", "fullRole": "AXPopUpButton" }, { "title": "Volume", "description": null, "role": "AXSlider", "fullRole": "AXSlider" }, { "title": "Audio Pan indicator\n>0<", "description": null, "role": "AXSlider", "fullRole": "AXSlider" } ] } 11.02.2022 17:45:28.52 <info> [Backend]: ProTools version: 21.10.0.67 class: PT2021_6 ProTools processID: 1109 11.02.2022 17:45:28.66 <info> [Backend]: Could not get UIElement for AxPtTrackInsertSendSelectorButton: Could not get trackInserts/Sends. { "title": "Inserts A-E", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Insert selector A", "description": "Insert selector A", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector B", "description": "Insert selector B", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector C", "description": "Insert selector C", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector D", "description": "Insert selector D", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment A", "description": "Insert Assignment A\n\"Channel Strip\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment B", "description": "Insert Assignment B\n\"CLA-76\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment C", "description": "Insert Assignment C\n\"Decapitator\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment D", "description": "Insert Assignment D\n\"Sie-Q\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { }, { "title": "Audio Pan indicator\n>0<", "description": null, "role": "AXSlider", "fullRole": "AXSlider" } ] } 11.02.2022 17:45:29.22 <info> [Backend]: ProTools version: 21.10.0.67 class: PT2021_6 ProTools processID: 1109 { "title": "Inserts F-J", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Insert selector F", "description": "Insert selector F", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector G", "description": "Insert selector G", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector H", "description": "Insert selector H", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector I", "description": "Insert selector I", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment F", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment G", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment H", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment I", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } "title": "Send selector H", "description": "Send selector H", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment H", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector I", "description": "Send selector I", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment I", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Audio IO", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Audio Input Path selector\n\"r guit 2\"", "description": "Audio Input Path selector\n\"r guit 2\"", "role": "AXPopUpButton", "fullRole": "AXPopUpButton" }, { "title": "Output Window button", "description": "Output Window button", "role": "AXButton", "fullRole": "AXButton" }, { "title": "Audio Output Path selector\nss 01 front (Stereo)", "description": "Audio Output Path selector\nss 01 front (Stereo)", "role": "AXPopUpButton", "fullRole": "AXPopUpButton" }, { "title": "Volume", "description": null, "role": "AXSlider", "fullRole": "AXSlider" }, { "title": "Audio Pan indicator\n<100", "description": null, "role": "AXSlider", "fullRole": "AXSlider" }, { "title": "Audio Pan indicator\n14>", "description": null, "role": "AXSlider", "fullRole": "AXSlider" } ] } 11.02.2022 17:45:31.100 <info> [Backend]: ProTools version: 21.10.0.67 class: PT2021_6 ProTools processID: 1109 11.02.2022 17:45:32.16 <info> [Backend]: Pressing key: kVK_ANSI_P. Flags: Zero 11.02.2022 17:45:32.35 <info> [Backend]: Pressing key: kVK_ANSI_Semicolon. Flags: Zero 11.02.2022 17:45:32.53 <info> [Backend]: Could not get UIElement for AxPtTrackInsertSendSelectorButton: Could not get trackInserts/Sends. { "title": "Inserts A-E", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Insert selector A", "description": "Insert selector A", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector B", "description": "Insert selector B", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector C", "description": "Insert selector C", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector D", "description": "Insert selector D", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment A", "description": "Insert Assignment A\n\"Channel Strip\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment B", "description": "Insert Assignment B\n\"CLA-76\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment C", "description": "Insert Assignment C\n\"FabFilter Pro-Q 3\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment D", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Inserts F-J", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Insert selector F", "description": "Insert selector F", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector G", "description": "Insert selector G", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector H", "description": "Insert selector H", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert selector I", "description": "Insert selector I", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment F", "description": "Insert Assignment F\n\"Sie-Q\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment G", "description": "Insert Assignment G\n\"CLA-2A\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment H", "description": "Insert Assignment H\n\"Kramer PIE\"", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Insert Assignment I", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Sends A-E", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Send selector A", "description": "Send selector A", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment A", "description": "Send Assignment A\nr voc lead (Stereo)", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector B", "description": "Send selector B", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment B", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector C", "description": "Send selector C", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment C", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector D", "description": "Send selector D", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment D", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } { "title": "Sends F-J", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Send selector F", "description": "Send selector F", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment F", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector G", "description": "Send selector G", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment G", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector H", "description": "Send selector H", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment H", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send selector I", "description": "Send selector I", "role": "AXButton", "fullRole": "AXButton:AXToggle" }, { "title": "Send Assignment I", "description": "", "role": "AXButton", "fullRole": "AXButton:AXToggle" } ] } 11.02.2022 17:45:33.66 <info> [Backend]: Could not get UIElement for AxPtTrackInsertSendButton: Could not get trackInserts/Sends. { "title": "VCA IO", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Group Assignment selector\n\"no group\"", "description": "Group Assignment selector\n\"no group\"", "role": "AXButton", "fullRole": "AXButton" }, { "title": "Output Window button", "description": "Output Window button", "role": "AXButton", "fullRole": "AXButton" }, { "title": "Volume", "description": null, "role": "AXSlider", "fullRole": "AXSlider" } ] } 11.02.2022 17:45:33.66 <info> [Backend]: Could not get UIElement for AxPtTrackInsertSendButton: Could not get trackInserts/Sends. { "title": "VCA IO", "description": null, "role": "AXGroup", "fullRole": "AXGroup", "children": [ { "title": "Group Assignment selector\n\"no group\"", "description": "Group Assignment selector\n\"no group\"", "role": "AXButton", "fullRole": "AXButton" }, { "title": "Output Window button", "description": "Output Window button", "role": "AXButton", "fullRole": "AXButton" }, { "title": "Volume", "description": null, "role": "AXSlider", "fullRole": "AXSlider" } ] } 11.02.2022 17:45:34.35 <info> [Backend]: Pressing key: kVK_ANSI_P. Flags: Zero 11.02.2022 17:45:34.54 <info> [Backend]: Pressing key: kVK_ANSI_Semicolon. Flags: Zero 11.02.2022 17:45:34.72 <info> [Backend]: Mouse current pos is: (376.76171875, 255.73828125) Clicking with mouse here: (290, 326) 11.02.2022 17:45:34.73 <info> [Backend]: Moving back... 11.02.2022 17:45:34.74 <info> [Backend]: Position is now: (376.76171875, 255.73828125) 11.02.2022 17:45:34.82 <info> [Backend]: [LOG] [ { "track": "Bass Amp_1_AT_4040" }, { "track": "C414 OH_1" }, { "track": "Aux 1" }, { "track": "Kick In_1_D112" }, { "track": "C414 Room_1" }, { "track": "bg" }, { "track": "BG_Vox_Uhhh_1" }, { "track": "BG_Vox_Uhhh Marco_1" }, { "track": "Domi Guit_1_906" }, { "track": "r guit left" }, { "track": "Guit Felix_1_SM57" }, { "track": "r guit 2" }, { "track": "Vox Main_1_C414" }, { "track": "r voc lead" }, { "track": "Vox Room_1" } ] 11.02.2022 17:45:44.26 <info> [Backend]: << Command: PLUGIN PARAMETERS ALL TO BE ENABLED [user:ck9yeb723000kfy10h4x3e0p4:ckz8iwf2t0000nx10s5oxdm4l]