No internet connection
  1. Home
  2. How to

Pro Tools 2025.6 heads up

By Randall Smith @Randall_Smith
    2025-06-17 15:46:53.846Z

    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

    • 33 replies

    There are 33 replies. Estimated reading time: 18 minutes

    1. R
      Randall Smith @Randall_Smith
        2025-06-17 17:48:25.048Z

        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 ms

        I 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?

        1. Kitch Membery @Kitch2025-06-18 00:50:52.067Z

          Hi 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. :-)

        2. In reply toRandall_Smith:
          Kitch Membery @Kitch2025-06-18 00:25:20.024Z

          Hi @Randall_Smith

          I'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-issue

          As 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.

          1. In reply toRandall_Smith:
            Matt Friedman @Matt_Friedman
              2025-06-18 01:12:40.438Z

              Use the SDK instead of UI.
              sf.app.proTools.createSession()
              sf.app.proTools.createSessionFromTemplate()

              1. In reply toRandall_Smith:
                Kitch Membery @Kitch2025-06-18 03:07:52.898Z2025-06-18 17:56:05.741Z

                Hi @Randall_Smith

                Here 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.

                1. RRandall Smith @Randall_Smith
                    2025-06-18 14:26:37.450Z

                    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.

                    1. Matt Friedman @Matt_Friedman
                        2025-06-18 16:29:32.331Z

                        Just 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",
                        })
                        
                        1. Kitch Membery @Kitch2025-06-18 16:33:39.615Z

                          Hi @Matt_Friedman

                          I completely forgot there was a Pro Tools SDK call for this. That is the best approach, for sure.

                          1. RRandall Smith @Randall_Smith
                              2025-06-18 19:37:53.055Z

                              Is there a list of all of the SDK commands?

                              1. Kitch Membery @Kitch2025-06-18 20:37:42.102Z

                                We 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
                                2025-06-18 16:40:21.290Z

                                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

                                1. Matt Friedman @Matt_Friedman
                                    2025-06-18 16:47:17.449Z

                                    The value of the templateName should be the same as it appears in the New Session window's window area for your templates.

                                    1. In reply toRandall_Smith:
                                      Matt Friedman @Matt_Friedman
                                        2025-06-18 16:49:33.667Z

                                        So 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
                                          2025-06-20 14:42:24.208Z

                                          @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

                                          1. Matt Friedman @Matt_Friedman
                                              2025-06-20 15:26:03.230Z

                                              That's above my pay grade... @Kitch ?

                                              1. In reply toRandall_Smith:
                                                RRandall Smith @Randall_Smith
                                                  2025-06-20 17:20:30.325Z

                                                  @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

                                                  1. Kitch Membery @Kitch2025-06-20 18:33:07.481Z
                                                    1. Matt Friedman @Matt_Friedman
                                                        2025-06-20 20:45:58.393Z

                                                        Randall gets his own personalized video? I'm jealous!!

                                                        1. Kitch Membery @Kitch2025-06-20 21:09:24.493Z

                                                          You’re all special to me!!! I’ll be sure to make one for you at some point, @Matt_Friedman :-)

                                                        2. In reply toKitch:
                                                          RRandall Smith @Randall_Smith
                                                            2025-06-23 18:47:20.680Z

                                                            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

                                                            1. Kitch Membery @Kitch2025-06-23 20:28:00.362Z

                                                              Hi @Randall_Smith

                                                              I'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.

                                                              1. SScott Robinson @Scott_Robinson
                                                                  2025-08-20 23:02:55.346Z

                                                                  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?

                                                                  1. Kitch Membery @Kitch2025-08-20 23:09:34.984Z

                                                                    Hi @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. :-)

                                                                    1. SScott Robinson @Scott_Robinson
                                                                        2025-08-25 20:33:43.635Z

                                                                        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!

                                                                        1. Kitch Membery @Kitch2025-08-25 21:14:35.484Z

                                                                          Brilliant!!!

                                                                        2. In reply toKitch:
                                                                          RRandall Smith @Randall_Smith
                                                                            2026-03-26 20:49:19.514Z

                                                                            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.

                                                                            1. Kitch Membery @Kitch2026-03-26 21:08:48.577Z

                                                                              Hi @Randall_Smith

                                                                              We 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. :-)

                                                                              1. In reply toRandall_Smith:
                                                                                Matt Friedman @Matt_Friedman
                                                                                  2026-03-26 21:35:26.554Z

                                                                                  This 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.

                                                                                  1. RRandall Smith @Randall_Smith
                                                                                      2026-03-26 22:02:03.217Z

                                                                                      @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.

                                                                • In reply toRandall_Smith:
                                                                  Kitch Membery @Kitch2025-06-18 16:39:05.576Z

                                                                  Hi @Randall_Smith

                                                                  There are certainly improvements that could be made to this script. However, it may be better to use Matt's suggestion. :-)

                                                                  1. In reply toRandall_Smith:
                                                                    Kitch Membery @Kitch2025-06-18 20:43:04.831Z

                                                                    Hi @Randall_Smith

                                                                    FYI, 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. :-)

                                                                • S
                                                                  In reply toRandall_Smith:
                                                                  SoundFlow Bot @soundflowbot
                                                                    2025-06-18 03:08:25.557Z

                                                                    This issue is now tracked internally by SoundFlow as SF-1991