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

    • 22 replies

    There are 22 replies. Estimated reading time: 14 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. M
            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. MMatt 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. MMatt 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:
                                      MMatt 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. MMatt 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. MMatt 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 :-)

                                                • 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