Forced to downgrade to Pro Tools 2024.6 - Now Soundflow does not work
Forced to downgrade to Pro Tools 2024.6 - Now Soundflow does not work
System Information
SoundFlow 6.0.9
OS: darwin 24.5.0
ProductName: macOS
ProductVersion: 15.5
BuildVersion: 24F74
Steps to Reproduce
- Because of a severe MIDI recording issue, Avid Support strongly encouraged me to downgrade to PT 2024.6 to avoid unreliable MIDI recording in later versions. I had been working in PT 2025.12.1.133 with Soundflow integrated for a couple months.
- Now, in PT 2024.6, Soundflow, including the dozens of custom commands I now rely on, does not work. One error message I see pops up in the upper right of my monitor and begins with "Couldn't locate the UI for Pro Tools Edit Window with expressions sf.ui.app("). (Solo"
- This occurs with any command I have tested so far.
Expected Result
I would guess that if you also downgraded from the newest version of Pro Tools to PT 2024.6, you would also have difficulties with any Soundflow commands working in your sessions.
Actual Result
This question doesn't really apply here...? I have restarted my computer and trashed prefs twice and still experiencing this issue.
Workaround
No
Other Notes
FYI I am under a tight deadline so I hope you can help resolve this! I rely heavily on both Soundflow and accurate MIDI recording (which again, Avid Support insists is unreliable for my purposes after PT 2024.6) - hoping you can get me back up and running with Soundflow and PT 2024.6 asap!
Links
User UID: tbCyN23sV0ah2BtWplCXPpOMgCJ3
Feedback Key: sffeedback:tbCyN23sV0ah2BtWplCXPpOMgCJ3:-OpnnoFwqqM_S-_dBj4h
Feedback ZIP: hA4HjLFcDJSnu2HwFa9oPNnAvY7g5KHYrXd4ZRuBQJ03xOjeZLx2/dINdouVnUV7OTR92PLdhvj4qphdAiFKW4dieNiHbY35x6HWMzKGMTTA3oyMIIeG4zX4Ow6lPqJq5SmmGERyLNjbJMFbA8DrfTJUMyg00ipTyoNk2Kw0zQItrPq1SY+MYUbBoLpCLThHpls9CisxyGvTslxt5oghzgZmM+hwKhms2FPUdFHfEwBZ5+RzmvUfgcSjgetakHUx9d+JUl9Hg/LeH2CjEuaxuHmeTRYoN/+4yuhaZ3xWospHf2jfa7IxzwrfZgOWm9LrZzLgOdscF8oNHTOqREVhlhiiQKbgpAfQoKE9a1UId/E=
Chad Wahlbrink @Chad2026-04-09 21:27:06.661ZHi, @Jeremy_Kittel,
As a first troubleshooting step, could you please manually update to the latest version of SoundFlow here and see if that resolves your issue?
https://soundflow.org/account/install
Next, I would confirm whether the issue persists if you quit SoundFlow and Pro Tools and then relaunch both.
Then, could you share an example of a script you are using for one or all of these commands:
- Solo Woodwinds Bus
- Solo Brass Bus
- Solo Harps
If these are macros, you can use the red "Need Help" button to share one of these on the Forum.
It seems these specific commands are failing, but more generic SF commands like
Duplicate Selected Tracksare completing for you.- JIn reply toJeremy_Kittel⬆:Jeremy Kittel @Jeremy_Kittel
Hi Chad! I updated to the newest version of Soundflow and restarted both SF and Pro Tools, but the issues persist.
I scheduled a zoom with you for tomorrow morning - thanks and looking forward.
Below I'll share the script for "Solo Woodwinds Bus" - and they are all the exact same, just with the track names changed. It worked perfectly until Pro Tools 2024.6 downgrade.
Also FYI:
Activate / Inactivate track is the only command I've found that is still working.
Also, contrary to what you wrote in your response, "Duplicate Selected Tracks" is actually crashing Pro Tools completely... :-( You can see the Pro Tools error message below - it shows this and then freezes / crashes completely... But if I duplicate a track the normal / non-Soundflow way, it works fine...
Really hope we can resolve this in the morning!!! Thanks.

Chad Wahlbrink @Chad2026-04-10 14:18:52.628ZThanks for the call, @Jeremy_Kittel!
To Recap:
For a script to work with both Pro Tools 2025.10+ and earlier versions, remove
sf.ui.proTools.sfx...and instead put this at the beginning of the script:if (sf.ui.useSfx) sf.ui.useSfx();If it seems that SoundFlow is not seeing tracks in your session, it's likely due to an invalidation issue.
Most often, this can be fixed by adding an invalidation call like:
sf.ui.proTools.mainWindow.invalidate();- JJeremy Kittel @Jeremy_Kittel
Hi Chad! Thanks for the call this morning. Unfortunately I'm experiencing some odd issues at the moment. When I try the "solo woodwinds" script we worked on this morning, sometimes it works, especially if the track is visible - but sometimes it just opens up the Pro Tools "Audiosuite" drop-down in the menu bar. And just now, when I was trying the "solo brass" script, for some reason it was opening up a different application on my computer, Claude... (?). I made a short 6 MB video of this happening (link below). I will restart now and see if anything improves but due to this strange behavior I wanted to share right away... Thanks.
https://www.dropbox.com/scl/fi/u9v13w02y72cp00ftki1p/Screen-Recording-2026-04-10-at-3.39.15-PM.mp4?rlkey=pk27kz7rqfevz24a5ip56moq6&st=wxoxx68x&dl=0
Chad Wahlbrink @Chad2026-04-11 01:47:42.096Z2026-04-11 02:02:51.178ZHi, @Jeremy_Kittel,
Sorry to hear you are having more issues.
The issue is that the scripts you were using for soloing were really designed to take full advantage of the advancements from SFX in Pro Tools 2025.10+. Namely, they use
mouseClickElement()which simulates a mouse click. In Pro Tools 2025.10+, this works regardless of whether the track is scrolled into view because it leverages the SFX connection. However, on older versions of Pro Tools, SoundFlow uses accessibility to simulate mouse clicks - meaning that Pro Tools has to be in focus and the track has to be scrolled into view to work. This is likely why you are experiencing issues where the mouse seems to click randomly - it's technically trying to click on the track, which is currently off-screen, etc.So yes, on Pro Tools 2025.10+, your scripts worked great with the more modern setup.
With all this, I think the best option is to approach this workflow using the Pro Tools SDK rather than accessibility and mouse clicks.
Here's the script structure you would use:
// Add or remove named track from soloed tracks - Pro Tools 2023.12+ function soloAdd(trackName) { const currentlySoloedTracks = sf.app.proTools.tracks.invalidate().allItems .filter(track => track.isSoloed) .map(track => track.name); const isAlreadySoloed = currentlySoloedTracks.includes(trackName); if (isAlreadySoloed) { // Un-solo just the named track; all other soloed tracks remain sf.app.proTools.setTrackSoloState({ trackNames: [trackName], enabled: false }); } else { // Add the named track to the current solo set sf.app.proTools.setTrackSoloState({ trackNames: [...currentlySoloedTracks, trackName], enabled: true }); } } soloAdd('EGT');You can replace your current script with this setup - changing
soloAdd('EGT');at the end of each script, and it should work on Pro Tools 2023.12+
Chad Wahlbrink @Chad2026-04-11 01:59:34.970ZI think you had another script to do toggle solo for the currently selected tracks, so here's an all SDK-version for that:
// Toggle Solo for Selected Tracks without Cancelling Previous Solos - Pro Tools 2023.12+ function toggleSoloSelectedTracks() { // Fetch all tracks const allTracks = sf.app.proTools.tracks.invalidate().allItems; // Get selected tracks const selectedTrackNames = allTracks .filter(t => t.selectedState === "SetExplicitly") .map(t => t.name); if (selectedTrackNames.length === 0) return; // Get all soloed tracks const currentlySoloedTracks = allTracks .filter(track => track.isSoloed) .map(track => track.name); // Check if Already Soloed const allAlreadySoloed = selectedTrackNames.every(function(name) { return currentlySoloedTracks.indexOf(name) !== -1; }); // If already soloed - toggle off solo if (allAlreadySoloed) { sf.app.proTools.setTrackSoloState({ trackNames: selectedTrackNames, enabled: false }); } else { // Else - enable solo const toAdd = selectedTrackNames.filter(function(name) { return currentlySoloedTracks.indexOf(name) === -1; }); sf.app.proTools.setTrackSoloState({ trackNames: [...currentlySoloedTracks, ...toAdd], enabled: true }); } } toggleSoloSelectedTracks();
Chad Wahlbrink @Chad2026-04-11 02:03:47.573ZAnd a mute script for named tracks:
// Toggle Mute on Named Track - Pro Tools 2023.12+ function toggleMute(trackName) { const currentlyMutedTracks = sf.app.proTools.tracks.invalidate().allItems .filter(track => track.isMuted) .map(track => track.name); const isAlreadyMuted = currentlyMutedTracks.indexOf(trackName) !== -1; if (isAlreadyMuted) { // Un-mute just the named track; all other muted tracks remain sf.app.proTools.setTrackMuteState({ trackNames: [trackName], enabled: false }); } else { // Add the named track to the current mute set sf.app.proTools.setTrackMuteState({ trackNames: [...currentlyMutedTracks, trackName], enabled: true }); } } toggleMute('Lead Vocal');