MACRO: Set Sound Output, v7.1

Same here. Fail!

1 Like

Yes, @ikenassi, I think it's safe to say that AppleScript related to the System Preferences (now Settings) is no longer functioning. We can hope that it might come back, but Apple's track record in such cases is not strong.

On a related note, I was hoping that the macOS Shortcuts app might have built-in actions to change the Sound Output, but as of Ventura 13.1 Beta 1, it does not. :slightly_frowning_face:

That AppleScript might fail, but the Open a System Preference Pane action can open the Sound preference pane.

Whether that helps any, I don't know.

1 Like

Thanks for the heads up, @peternlewis. Since my comment above I had found a way to open the Sound System Setting in Ventura, but if Open a System Preference Pane works on all versions of macOS, that’s far superior. I will check it out.

Next challenge: Ventura AppleScript UI scripting. :hot_face:

2 Likes

I have a working sound control panel for Ventura. I just want to do some more QA on it before I release it. It only works for Ventura, of course. It was a true pain in the ass to get this one done. Look for it in the next couple of days, but it works on my Intel iMac and my MacBook Pro M1.

2 Likes

I created "Set input and output sound devices in MacOS Ventura" as you requested.

1 Like

I've updated the OP with Version 4.0 of Set Sound Output:

  • Using the macOS version check added in v3.0, now conditionally runs a new AppleScript UI script compatible with Ventura. This was contributed by @ikenassi.

  • Based on a recommendation from @peternlewis, now opens the System Preference (pre-Ventura) or the System Settings (Ventura+) using the Open a System Preference Pane action rather than AppleScript.

  • When an error occurs, a message is displayed using Prompt For User Input rather than Display Text. With this change, the System Preferences (or System Settings) remain open when the error message is displayed.

  • Improved and simplified the localization in the AppleScript UI scripts: i) moved definition from AppleScript to the macro body, and ii) eliminated dependency on the word Output|Uitvoer|Ausgabe.

Why do you need to open the system settings sound pane in a loop? When I run it once, it just selects the sound pane.

1 Like

@ikenassi, good question!

This is a general practice I use because it makes such steps more robust and the wait can be minimized. (I take a similar approach when a sequence of actions that depend on an application being in the foreground.)

Bottomline: it never hurts and sometimes helps.

Good idea. Better than dealing with variable delays.

1 Like

By the way, here’s a little script to convert the OS version from (potentially) i.j.k to i.j so you can use numeric comparisons.

Set OS Version.kmmacros (3.96 KB)

1 Like

Thanks, @ikenassi. Yes, I've seen a few techniques on the forum. In Set Sound Output, I use:

Keyboard Maestro Export

Please ignore my poorly named local variable. :face_with_open_eyes_and_hand_over_mouth:

1 Like

For a macro that sets the Sound Input as well as the Sound Output, see Set input and output sound devices in MacOS Ventura by @ikenassi.

Although the one I wrote works just fine, I've cut over to SwitchAudioSource.

As was said earlier, it's free, fast, and works well. Install with the Homebrew package manager by:


brew install switchaudio-osx


Shell script examples:


echo "All Sound Devices:"
SwitchAudioSource -a

echo "Input:"
SwitchAudioSource -t input -c

echo "Output:"
SwitchAudioSource -t output -c
1 Like

Hi @ikenassi. Does it now work for HomePods and other AirPlay devices? When I tested it, it did not. That was my entire motivation for creating Set Sound Output.

1 Like

I have neither, so not tested.

1 Like

Registered to say many thanks for this excellent Macro. It works extremely well on Ventura 13.0.1. Thank you @_jims

2 Likes

@OneEyedJack, you’re welcome. Glad you are finding it useful.

1 Like

Unfortunately SwitchAudioSource doesn't work for me, as switching the output randomly switches the sound effects source if it's set to "Selected sound output device", and I need to keep it set to that.

This macro looks very useful, but it's annoying to have to wait for System Preferences to open and change the sound output. (If it was already open, the macro doesn't return to the pane it was on, either…)

It's also extremely visually distracting to have something that size pop up — ideally, I'd be able to change the sound output without anything coming up on screen, but the Sound menu would at least be acceptable as it's small.

Is there a way to use Select or Show a Menu Item to control Sound icon in the menu bar? The Menu dropdown doesn't seem to offer menu bar icons, only apps. I tried this

image

but got "Select Menu Item failed to find menu item Sound≥Dell AC511 USB SoundBar" :frowning:

I have Bartender 4, so I have managed to get the menu open with this

image

…but how do I tell AppleScript or KM to click an item in the currently open menu?

(Using Click at Found Image to open the menu seems awkward, as there are four possible icons depending on the current volume level…)

As you've found, menu bar icons aren't proper menus so can't be accessed that way.

OS version and a screen shot of the open Sound menu will help a lot -- but the AppleScripts in the GitHub link you posted should get you most of the way.