Pro Tools 2025.6 heads up
Just a friendly note, if you use Soundflow to create new Pro Tools sessions (for example), nearly every named object on the Dashboard window has changed in Pro Tools 2025.6. Also, the popUpMenu.select seems broken in 2025 as well.
If you need that functionality (as well do), I would hold off upgrading outside of a test environment.
-Randall
Linked from:
- RRandall Smith @Randall_Smith
To follow up. This sepcifically is not working:
sf.ui.proTools.windows.whoseTitle.is("Pro Tools Ultimate 2025.6").first.buttons.whoseTitle.is("Session Configuration").first.popupButtons.first.popupMenuFetchAllItems({ dismissMenu: true, });SF will open the correct pop up menu. This hold true for 'File Type, Sample Rate, Bit Depth and I/O Settings. SF cannot close the resulting open menu, nor can it choose the correct menu item.
In this example:
sf.ui.proTools.windows.whoseTitle.is("Pro Tools Ultimate 2025.6").first.buttons.whoseTitle.is("Session Configuration").first.popupButtons.allItems[3].popupMenuSelect({ menuPath: ["Starz PTU Template - Clean"], });I get :
Could not open popup menu
Popup menu was not found
Popup window was not found after waiting 2000 msI am on SF v 5.10.2
What do I need to change in order to correctly select menu items in the new create session dashboard?
Kitch Membery @Kitch2025-06-18 00:50:52.067ZHi again @Randall_Smith,
On further inspection, I believe the change to the dashboard may have caused some issues.
I'll take a look and shall report back with what I find asap.
Thanks for bringing this to our attention. :-)
In reply toRandall_Smith⬆:Kitch Membery @Kitch2025-06-18 00:25:20.024ZI'm sorry you are experiencing this.
You've mentioned here in your post that the popupMenuSelect functionality seems broken in Pro Tools 2025.6.
If you are experiencing an issue like this, please log a bug report so we can investigate and troubleshoot the issue further, as our internal testing has not uncovered any change in the stability of the popupMenuSelect method.
To log a Help Issue request, please follow the steps in the following article/video
https://soundflow.org/docs/help#help-issueAs you are aware, Avid made some changes to the Dashboard in Pro Tools, so your scripts and macros may need some updating. The fix might be as simple as re-picking the elements that are not being found, as their UI names or index may have changed.
Let me know if you have any specific questions, and I'd be more than happy to take a look.
Thanks in advance.
In reply toRandall_Smith⬆:Matt Friedman @Matt_FriedmanUse the SDK instead of UI.
sf.app.proTools.createSession()
sf.app.proTools.createSessionFromTemplate()
In reply toRandall_Smith⬆:Kitch Membery @Kitch2025-06-18 03:07:52.898Z2025-06-18 17:56:05.741ZHere is a workaround for setting the four pop-up menus in the "Session Configuration" section of the Dashboard until an internal fix is implemented.
function main() { sf.ui.proTools.appActivate(); const dashboard = sf.ui.proTools.windows.whoseTitle.startsWith("Pro Tools").first; // Invalidate the dashboard to ensure it returns fresh UI Elements dashboard.invalidate(); function selectFromPopupMenu({ popupButton, menuPath }) { popupButton.elementClick({ asyncSwallow: true }); sf.waitFor({ callback: () => dashboard.invalidate().groups.whoseTitle.is("Drop down popup").first.exists, timeout: 1000, }); const popupMenu = dashboard.invalidate().groups.whoseTitle.is("Drop down popup").first; const targetMenuItem = popupMenu.children.find(mi => mi.title.invalidate().value.endsWith(menuPath[0])) targetMenuItem.popupMenuSelect({ menuSelector: items => items.filter(mi => mi.path[0].endsWith(menuPath[0])), onError: "Continue", timeout: 100, }); sf.waitFor({ callback: () => popupButton.title.invalidate().value === menuPath[0] && !dashboard.invalidate().groups.whoseTitle.is("Drop down popup").first.exists, timeout: 1000, }); } const sessionConfigurationPanel = dashboard.buttons.whoseTitle.is("Session Configuration").first const popupButtons = sessionConfigurationPanel.popupButtons; const [fileTypePopupMenu, sampleRatePopup, bitDepthPopup, ioSettingsPopup] = popupButtons.map(pb => pb); selectFromPopupMenu({ popupButton: fileTypePopupMenu, menuPath: ["AIFF"], }); selectFromPopupMenu({ popupButton: sampleRatePopup, menuPath: ["44.1 kHz"], }); selectFromPopupMenu({ popupButton: bitDepthPopup, menuPath: ["24-bit"], }); selectFromPopupMenu({ popupButton: ioSettingsPopup, menuPath: ["Last Used"], }); } main();Let me know if that works for you.
Thanks again for bringing this to our attention. :-)
UPDATED. In case you are not having success with the SDK command, I've updated this one to wait for the titles to match before moving on to the next menu.
- RRandall Smith @Randall_Smith
Thank you for the help.
I found that while it works, it is very inconsistent. The Pro Tools UI on the popupMenu select it laggy, so I added a wait command for 250 ms between lines 17 and 19. Without this pause, (which the timeout might just do) SF fails to pick the menu item on subsequent popupmenu selections.
Also, if there are too many selections, such as with the templateIO, it will not pick the correct one.
I have this working well enough for me at the moment, but it isn't as stable as other things.
Matt Friedman @Matt_FriedmanJust gonna chime in again that you can get consistent results using this much simpler approach:
sf.app.proTools.createSession({ fileType: "AIFF", sampleRate: "SR44100", bitDepth: "Bit24", inputOutputSettings: "IOLast", isCloudProject: false, isInterleaved: true, sessionName: "", parentDirectory: "", })Or loading from a template:
sf.app.proTools.createSessionFromTemplate({ fileType: "AIFF", sampleRate: "SR44100", bitDepth: "Bit24", inputOutputSettings: "IOLast", isCloudProject: false, isInterleaved: true, sessionName: "", parentDirectory: "", templateGroup: "", templateName: "Starz PTU Template - Clean", })
Kitch Membery @Kitch2025-06-18 16:33:39.615ZI completely forgot there was a Pro Tools SDK call for this. That is the best approach, for sure.
- RRandall Smith @Randall_Smith
Is there a list of all of the SDK commands?
Kitch Membery @Kitch2025-06-18 20:37:42.102ZWe don't have a list available of all the SDK commands; however, you can use code hinting to discover what SDK commands are available in SoundFlow.
To do this, in a script, type...
sf.app.proTools.When you type the last period, you will see a list of all the methods available.
I hope that helps. :-)
- In reply toMatt_Friedman⬆:RRandall Smith @Randall_Smith
Thank you so much. I will look into this. I manage a group of multiple users, and as such my pro tools templates are on a shared volume instead of the Documents folder. Can I point directly to the correct template in the 'templateName' field?
z.B.:
/Volumes/audio2a/Library/TEMPLATES/Starz PTU Template ${timeCodeRate}/Starz PTU Template ${timeCodeRate}.ptxt
Matt Friedman @Matt_FriedmanThe value of the templateName should be the same as it appears in the New Session window's window area for your templates.
- In reply toRandall_Smith⬆:
Matt Friedman @Matt_FriedmanSo maybe:
templateGroup: `Starz PTU Template ${timeCodeRate}`, // or whatever your template group usually is named templateName: `Starz PTU Template ${timeCodeRate}`,
- In reply toMatt_Friedman⬆:RRandall Smith @Randall_Smith
@Matt_Friedman, I don't want to derail this. You are correct, in that this seems like a more solid way to go. for the inputOutputSettings, I can change that to be 'IOUserDefined', but how do I define what PTIO I wish to use? The script runs but doesn't prompt for a selection. Adding in the Template IO name into that selection creates an error.
I am assuming there is something that goes below like: IOUserDeinfed: ""-Randall
Matt Friedman @Matt_FriedmanThat's above my pay grade... @Kitch ?
- In reply toRandall_Smith⬆:RRandall Smith @Randall_Smith
@Kitch ,
Is there a way to get Soundflow to show a list of the accepted args for a given function or method?
Using type hints and the SDK documentation, I have been able to figure some out through trial and error. If I had that, I would probably be able to answer the above question on my own since I could check for the correct arg that proTools.createSesisonFromTemplate was expecting for the user defined IO
Kitch Membery @Kitch2025-06-20 18:33:07.481ZYou certainly can. Here's how.
https://www.loom.com/share/8d62b9b6f8c645109d9a8f334a3e9be3?sid=9675b507-1a5e-4e75-a186-fe7b53eec43c
I hope that helps. :-)
Matt Friedman @Matt_FriedmanRandall gets his own personalized video? I'm jealous!!
Kitch Membery @Kitch2025-06-20 21:09:24.493ZYou’re all special to me!!! I’ll be sure to make one for you at some point, @Matt_Friedman :-)
- In reply toKitch⬆:RRandall Smith @Randall_Smith
That was so very helpful. I really appreciate it.
Since we are using this as an example; after I define inputOutput settings as 'IOUserDefined' it doesn't appear that I am able to actually define what that user defined IO is. I used the type hinting and didn't see anything that isn't already listed in the above example from Matt
-Randall
Kitch Membery @Kitch2025-06-23 20:28:00.362ZI'm glad it was helpful.
And yeah, I see what you mean... That might be a current limitation of the SDK call at the moment.
You might need to use the UI automation method I shared instead.
- SScott Robinson @Scott_Robinson
Hey Kitch, @Randall_Smith or @Matt_Friedman, just following up on this, maybe its been figured out- Is there any way to set the user defined IO?
If not, would you recommend using the UI method, or rather, create the session with the SDK and then change then set the IO with a separate action once the session is open?
Kitch Membery @Kitch2025-08-20 23:09:34.984ZHi @Scott_Robinson,
Until we've got full dashboard support or the SDK method has been updated. I'd suggest setting the IO once the session is open. :-)
- SScott Robinson @Scott_Robinson
Thanks Kitch, just wanted to report back that createSessionFromTemplate is otherwise working great, and I fumbled my way through a module that imports & sets the I/O. Back in business!
Kitch Membery @Kitch2025-08-25 21:14:35.484ZBrilliant!!!
- In reply toKitch⬆:RRandall Smith @Randall_Smith
Kitch, has there been any improvement on getting 'inputOutputSettings' to accept a user defined variable when 'IOUserDefined' is selected?
This would be very useful. Doing the UI method, even as addressed above is not as consistent as I would like. The SDK version is flawless, except the inability to define the IO.
Kitch Membery @Kitch2026-03-26 21:08:48.577ZWe are tracking the issue regarding the Dashboard changes, but we're not tracking the missing properties in the SDK command.
If you'd like to see this functionality added in a future update, please start a thread in the Ideas section of the forum; that way, it will be logged for review and consideration. :-)
- In reply toRandall_Smith⬆:
Matt Friedman @Matt_FriedmanThis is an SDK issue. They allow you to load a user defined I/O but they gave us no way to tell it what I/O file that is!!!
There's someone on the DUC in the very hidden, very secretive SDK forum posting about this same problem, and they thought it meant if you named an IO file "User Defined.pio" then it might work but no such luck.
I assume SoundFlow team members have better access to AVID and their SDK support, so hopefully they can let AVID know that the "IOUserDefined" option is currently useless, or we have no idea how it's meant to be used.
- RRandall Smith @Randall_Smith
@Matt_Friedman , I have a developer account and can get into that forum. If someone can point me to a specific discussion I can bring it up there.
Matt Friedman @Matt_Friedman
- In reply toRandall_Smith⬆:
Kitch Membery @Kitch2025-06-18 16:39:05.576ZThere are certainly improvements that could be made to this script. However, it may be better to use Matt's suggestion. :-)
- In reply toRandall_Smith⬆:
Kitch Membery @Kitch2025-06-18 20:43:04.831ZFYI, I'm not sure if you saw it or not, but I updated the original script in case you were unsuccessful using the SDK command. :-)
- SIn reply toRandall_Smith⬆:SoundFlow Bot @soundflowbot
This issue is now tracked internally by SoundFlow as SF-1991