Auf iFun bin ich vor ein paar Tagen über die Vorstellung des kleinen Tools Ears von Tyler Hall gestolpert. Der Entwickler bezeichnet die Mac-App als Instant Audio Switcher, also als ein Programm, die es erlaubt, schnell zwischen verschiedenen Ton-Ein- und -Ausgabegeräten, die mit einem Mac verbunden sind, hin und her zu schalten. Ears kann mit einer frei wählbaren Tastenkombination aufgerufen werden und erlaubt es dann, durch Tippen einer Zahl und eines Buchstaben einen der jeweils verfügbaren Lautsprecher und eines der Mikrofone zu wählen, die mit dem Mac verbunden oder bereits eingebaut sind. Sehr praktisch, und genau das, was man schon oft vermisst hat, um beispielsweise schnell auf ein (anderes) Headset umzuschalten, wenn ein Anruf hereinkommt. Und billig ist es obendrein: Schon für 2,37 US-Dollar lässt sich die nag screen der App entfernen, die bei jedem Programmstart erscheint und die den Arbeitsablauf doch erheblich stört.
Aufgrund seiner überschaubaren Größe belastet Ears den Arbeitsspeicher des Mac mit 69,1 MB nur relativ wenig. Aber könnte diese Aufgabe nicht auch mit noch einfacheren Mitteln gelöst werden, mit Bordmitteln von Mac OS gar? Klar, kann sie, sofern man sich vor ein paar kleinen Brocken AppleScript nicht scheut. Wie es geht, zeige ich hier anhand von Beispielen der drei Ton-Ein- und -Ausgabegeräte, mit denen ich wechselweise arbeite:
- der Plantronics BT600, ein Bluetooth-Stecker von Poly, der für eine weit stabilere Verbindung zum exzellenten Telefonheadset Voyager 5200 sorgt, als es das im Mac verbaute Bluetooth-Modul kann
- der Soundcore Life Q20, ein preiswerter Bügelkopfhörer aus dem Hause Anker
- das interne Mikrofon und der interne Lautsprecher meines MacBook Pro
Jedes Script ist so angelegt, dass es zu einer bestimmten Kombination von Eingabegerät (Mikrofon) und Ausgabegerät (Kopfhörer, Lautsprecher) verbindet, gleich welche Verbindung zu diesem Zeitpunkt gerade besteht. Das folgende Script ruft die Verbindung zum BT600 auf, indem es die Systemeinstellungen aktiviert und dort in den Ton-Einstellungen zunächst das entsprechende Gerät als Eingabegerät (letztes Tab) und dann als Ausgabegerät (mittleres Tab) auswählt. Ist das BT600 nicht am Mac eingesteckt, dann informiert das Script mit einem Popup Gerät nicht verbunden! über diesen Fehler. Mit der letzten Zeile des Scripts wird das Systemeinstellungen-Fenster wieder geschlossen.
tell application "System Preferences" to activate
tell application "System Preferences"
reveal anchor "input" of pane id "com.apple.preference.sound"
end tell
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
try
select (row 1 where value of text field 1 is "Plantronics BT600")
on error
display alert "Gerät nicht verbunden!"
return
end try
end tell
end tell
tell application "System Preferences" to activate
tell application "System Preferences"
reveal anchor "output" of pane id "com.apple.preference.sound"
end tell
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
select (row 1 where value of text field 1 is "Plantronics BT600")
end tell
end tell
quit application "System Preferences"
Die Anpassung des Scripts an eigene Geräte ist einfach: Die Zeichenfolge Plantronics BT600 ersetzt man einfach durch die Namen des gewünschten Eingabegeräts (oben im Script) und Ausgabegeräts (unten im Script), exakt so geschrieben, wie sie in den Ton-Systemeinstellungen abzulesen sind. Eine kleine zusätzliche Herausforderung stellt sich beim Verbindungsscript für den Soundcore-Kopfhörer: Dieser stellt nämlich beim Einschalten von sich aus keine dauerhafte Bluetooth-Verbindung zum Mac her. Aber kein Problem, auch das lässt sich per AppleScript automatisieren:
tell application "System Events" to tell process "SystemUIServer"
set bt to (first menu bar item whose description is "bluetooth") of menu bar 1
click bt
tell (first menu item whose title is "Soundcore Life Q20") of menu of bt
click
tell menu 1
if exists menu item "Verbinden" then
click menu item "Verbinden"
else
click bt
end if
end tell
end tell
end tell
delay 2
tell application "System Preferences" to activate
tell application "System Preferences"
reveal anchor "input" of pane id "com.apple.preference.sound"
end tell
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
select (row 1 where value of text field 1 is "Soundcore Life Q20")
end tell
end tell
tell application "System Preferences" to activate
tell application "System Preferences"
reveal anchor "output" of pane id "com.apple.preference.sound"
end tell
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
select (row 1 where value of text field 1 is "Soundcore Life Q20")
end tell
end tell
quit application "System Preferences"
Hier wurde also dem bereits bekannten Script im oberen Bereich noch die Herstellung der Bluetooth-Verbindung hinzugefügt. Da der Verbindungsaufbau einen kleinen Moment dauert, ist nach diesem Schritt mit dem Befehl delay 2
eine Pause von 2 Sekunden eingefügt. Je nach Gerät lässt sich dieser Wert natürlich variieren. Die Abfrage try
aus dem ersten Script, die überprüft, ob das Gerät überhaupt verbunden ist, kann bei dieser Variante natürlich entfallen. Und schließlich noch das schlichte Script, das die im MacBook fest verbauten Ein- und Ausgabegeräte wieder aktiviert:
tell application "System Preferences" to activate
tell application "System Preferences"
reveal anchor "input" of pane id "com.apple.preference.sound"
end tell
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
select (row 1 where value of text field 1 is "Internes Mikrofon")
end tell
end tell
tell application "System Preferences" to activate
tell application "System Preferences"
reveal anchor "output" of pane id "com.apple.preference.sound"
end tell
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
select (row 1 where value of text field 1 is "Interne Lautsprecher")
end tell
end tell
quit application "System Preferences"
Die AppleScripts lassen sich einfach im Mac-OS-eigenen Scripteditor, der unter /Programme/Dienstprogramme zu finden ist, anpassen und testen. Danach legt man sie an einem sicheren Ort ab, wobei ~/Library/Scripts sicherlich eine gute Wahl ist. Von hier aus lassen sich lassen sich die Scripts schnell und einfach mit einem Tool wie – ganz nach Geschmack – LaunchBar, Alfred oder Keyboard Maestro aufrufen. Hat man sich bislang noch gescheut, sich das Leben mit einem dieser Helferlein einfacher zu machen, dann lässt sich – wiederum mit Bordmitteln, nämlich mit dem Automator – jedem Script ein Tastenkürzel zuordnen, mit dem es einfach aufgerufen werden kann.
Nun lassen sich also die Toneinstellungen des Mac im Handumdrehen ändern – ohne dass ein ständig mitlaufendes Programm den Arbeitsspeicher füllt und ein weiteres App-Icon die Menüzeile immer voller werden lässt. Viel Spaß beim Nachbasteln! Zu kompliziert? Auch kein Problem, denn dann gibt es ja immer noch das preiswerte Ears, das wirklich zu empfehlen ist.
Headerbild von Tomasz Gawłowski auf Unsplash
Stefan
Hallo – und herzlichen Dank für das Teilen dieser sehr hilfreichen Lösung. Ich denke, das könnte genau das werden, was ich suche – zumal “Ears” das offenbar leider nicht ist.
Szenario: iMac mit Mojave, dazu Homepods (alle Firmware aktuell). Die Homepods möchte ich als Standardlautsprecher am Mac anmelden (sodass sie per WLAN bei jedem Rechnerstart automatisch die Standard-Ausgabegeräte sind, was mir einfach nicht gelingt!?
Dieses Script könnte die Lösung sein, wenn man es ein klein wenig modifiziert (was ich leider nicht selbst kann). Hättest Du da noch einen Tipp für mich? Danke schon einmal!
Jens Arne Männig
Hallo Stefan,
woher weißt du denn, dass du es selbst nicht kannst? Hast du es denn schon probiert? AppleScript ist im Prinzip recht schlicht und damit schnell erlernt. Codeschnipsel dafür finden sich unter Verwendung der Suchmaschine des geringsten Misstrauens massenhaft und für fast jede Aufgabe. Und die kann man dann einfach für das eigene Vorhaben nutzen und bei Bedarf etwas modifizieren.
Wie du ja schon richtig bemerkst, erfolgt die Verbindung zum HomePod über WLAN/AirPlay, nicht über Bluetooth, weshalb dir das Blutooth-Audio-Tool Ears natürlich nicht helfen kann. Die Suche nach AppleScript HomePod liefert aber zahlreiche Fundstellen. Da sollte doch etwas Passendes dabei sein – oder zumindest etwas, womit man weiterbasteln kann. Ich selbst kann dir da leider nicht helfen, da ich keinen HomePod in meiner Sammlung habe und daher nicht einmal testen könnte, was funktioniert und was nicht.
jochen
Ja, schon, aber …
Wenn ich im Systemfeld „Ton“ unten „Lautstärke in der Menüleiste“ aktiviere, kann ich oben in der Menüleiste mit gedrückter Wahltaste in den Lautsprecher klicken und mein Ausgabegerät schnell wählen. (Auf neueren OSX geht es auch ohne Wahltaste.)
Generell per Taste in die Toneinstellungen springen:
Wahltaste-Lauter: Systemeinstellung “Ton” öffnen. Dies funktioniert mit allen Lautstärketasten.