Workaround um komfortabel ingame das Audiogerät zu wechseln

der-Kalli

Lieutenant
Registriert
Mai 2010
Beiträge
566
Hey :) Ich hab einen Workaround für euch der vielleicht ein lästiges PC Problem löst. Bzw. ist es kein Problem, aber definitiv unkomfortabel und meine Lösung ist ziemlich chique :) Wer eine programmierbare Tastatur besitzt bekommt damit ein nettes neues Feature.

Also zum Problem, die meisten Rechner haben 2 oder mehr Audiogeräte. An meinem kann ich z.B. zwischen der Ausgabe über die Soundkarte per Aux-Anschluss und der Ausgabe über die Grafikkarte am Displayport mit Hilfe des Monitors wählen. In Spielen und Anwendungen die im Vollbild und vorallem im Vordergrund laufen, oder die man nicht unterbrechen will, kann es dann sehr stören, wenn man das Audiogerät wechseln will. Man also z.B. von der Ausgabe des Headsets mal eben zum Monitor wechseln möchte und kurz darauf wieder zurück will. Man muss dann 2-3 Mal raustabben oder manchmal auch das Programm wirklich beenden. Mit einem Linksklick auf das Lautsprechersymbol in der Taskleiste von Windows 10 kann man zwar im erscheinenden Menu auswählen, aber das sind halt ein paar Klicks und manchmal kommt es zu Überlagerungen oder neuer Skalierung wenn in der Hauptanwendung eine andere Auflösung als auf dem Desktop gefahren wird. Wie gesagt ziemlich nervig und je öfter man die Funktion braucht, desto stärker fällt einem das auf.

Nun zur Lösung :) Ladet euch das Programm nircmd runter https://www.nirsoft.net/utils/nircmd.html (der Link zur Datei ist ganz unten auf der Seite) und entpackt das .zip Verzeichnis zu einem Ort eurer Wahl. Das Programm kann nur mit Startparametern ausgeführt werden, versucht also gar nicht erst die .exe Datei einfach so auszuführen. Aber dafür kann es relativ mächtige Windows Befehle umsetzen, die man sonst nur umständlich erreicht. Eigentlich kann man dann eine Verknüpfung zum Programm erstellen und unter den Dateieigenschaften der Verknüpfung einen Startparameter unter "Ziel" eingeben.

Bei mir sah das z.B. so aus: C:\Users\Nutzername\Desktop\Werkzeuge\nircmd-x64\nircmd.exe setdefaultsounddevice Realtek-887

"setdefaultsounddevice" stellt dabei den Befehl dar das aktuelle Standardsoundgerät auszuwählen. "Realtek-887" heißt mein Gerät und bei euch könnte es einfach "Lautsprecher" sein. Umbenennen könnt ihr das in der Sound-Systemsteuerung. Achtet aber darauf keine Leerzeichen zu verwenden, das Programm funktioniert nicht damit. Speichert die Verknüpfung dann so und stellt manuell ein anderes Gerät zum testen ein und führt die Verknüpfung dann aus. Nun sollte das eingetragene Gerät aktiviert sein und nicht mehr das, was ihr zum testen gerade manuell ausgewählt hattet. So legt ihr dann für jedes Gerät eine eigene Verknüpfung an. Gebt am besten noch jeder einen sinnvollen Namen.

Es war dann mein Plan, auf meiner Razer Blackwidow Elite eine Taste so zu belegen, dass die Verknüpfung gestartet wird, ich also ingame per einfachem Tastendruck das Audiogerät wechseln kann. Aber leider startet die Software von Razer dann immer nur direkt die .exe des Programms ohne Startparameter. Auch wenn man die URL an gibt. Das ist also komplett nutzlos (habs an Razer gemeldet). Ich habe dann eine Batch-Datei geschrieben die die Funktion der Verknüpfung übernimmt und die ließ sich auch in der Razer Synapse Software auswählen und starten. Nur da kam dann das nächste Problem, dass mich das aus jedem anderen Programm geworfen hat, also Spiele minimiert wurden, da das Komandofenster (cmd) im Vordergrund gestartet wurde.... grrr.

Zu dem Zeitpunkt sah meine Batch-Datei so aus und auch ihr solltet die erstmal so anlegen:

@Echo off
start C:\Users\Nutzername\Desktop\Werkzeuge\nircmd-x64\nircmd.exe setdefaultsounddevice Realtek-887
exit

Um so eine Datei anzulegen erstellt einfach ein Textdokument und ändert die Dateiendung von .txt auf .bat.
"@Echo off" deaktiviert die Azeige dessen was ausgeführt wird und "exit" ist sonst unnötig da cmd Fenster nach Ausführung selbstständig schließen, aber per Razer Software quasi fremd gestartet, blieb das Fenster und "exit" schloss es dann.

Aber wie gesagt, verloren meine Programme den Fokus. Mit dem Programm Bat To Exe Converter https://www.majorgeeks.com/files/details/bat_to_exe_converter.html konnte ich dann meine Batch-Datei in eine ausführbare .exe Datei konvertieren, die den Batch-Befehl enthielt der eigentlich eine Verknüpfung war :D Diese .exe Datei muss dann bei "Exe-Format" in Bat to Exe Converter auf "Invisible" bei der Konvertierung gestellt werden. Sie sollte im vorher ausgewählten Verzeichnis von nircmd platziert werden und die anderen Einstellungen könnt ihr ignorieren. Führt man diese .exe dann aus, seht ihr gar nicht mehr dass etwas passiert, aber eben euer Audiogerät ändert sich wie gewünscht. Vorallem aber funktioniert das auch mit der Tastatur Software und ich kann so ingame mein Audiogerät wechseln. Muss nicht mehr raustabben :) Benannt habe ich meine beiden Dateien nach "Audiogerät zu Soundchip wechseln.exe" und "Audiogerät zu Monitor wechseln.exe". Jeweils eine Datei liegt auf der Taste für vorheriger Track und nächster Track. Das könnt ihr aber belegen wie ihr wollt.

Hoffe das hilft einigen da es sonst im Internet keine Vernünftige Lösung gibt :) Lasst mir ggf. Verbesserungsvorschläge da
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: o0Julia0o, Nilo, Alchemist und eine weitere Person
Warum sollte man (auch noch im Spiel) das Audiogerät wechseln wollen? Ich glaube, du hast eine Lösung und dafür dann ein Problem gesucht.
 
yxcvb schrieb:
Warum sollte man (auch noch im Spiel) das Audiogerät wechseln wollen? Ich glaube, du hast eine Lösung und dafür dann ein Problem gesucht.

Das erklären dir sicher ein paar coole Leute hier denen meine Anleitung gefällt.
 
Wenn du dieses Windows-Gaming-Overlay mit WIN+G öffnest, kannst du auch das Audiogerät wechseln (gerade probiert). Finde ich praktisch, um den Audiomixer benutzen zu können.
 
  • Gefällt mir
Reaktionen: xexex
Grundsätzlich danke für den Tip. Aber ich versuche möglichst keine Overlays zu benutzen. FPS Monitor und manchmal Steam. Sonst reduzier ich alles weg. Hab gerne nen spartanisches System. Auch wenn das heute nicht mehr so ins Gewicht fällt, reduziere ich prinzipiell Hintergrundlast. Mehr Ressourcen frei zu haben hat dann den selben Effekt wie mehr Speicher zu verbauen oder den Takt des Prozessors zu erhöhen. Und die meisten Overlays zicken auch irgendwie rum. Aber selbst wenn das von Windows gut ist und eine Funktion bietet die sich der Sache annimmt, so ist es doch etwas mehr Aufmerksamkeit die es verlangt als meine Lösung. Bei mir musst du nur eine Taste am Ende drücken. Übrigens lässt sich mit meinem Weg auch ne Menge anderes lösen was Startparameter benötigt und von Razer Synapse sonst übersprungen würde. Das kann man also nochmal gebrauchen. Irgendwer der das in 10 Jahren ließt wirds mir danken ;)
 
Nochn Tip, falls jemand Leerzeichen in seiner Pfadangabe hat, sollte die Batch-Datei so strukturiert sein:

@Echo off
cd C:\Program Files (x86)\FPS Monitor
start FPSMonitor.exe
exit

Sonst würde cmd im Beispiel bei C:\Program aufhören. "cd" definiert den Pfad in dem sich die auszuführende Datei befindet. Und da dann klar ist, dass das Folgende eine Pfadangabe ist und nicht schon Teil des eigentlichen Befehls ist, funktioniert es dann auch mit Leertaste. Der Befehl "start" sollte dann in eine neue Zeile geschrieben werden. Denn idR. werden Batch-Dateien von oben nach unten ausgeführt.
Das Beispiel habe ich genommen, da man mit der von mir oben genannten Methode eigentlich alle Programme im Hintergrund starten kann und ich mir FPS Monitor auch auf eine Taste gelegt habe. Im Programm selbst nutze ich dann zusätzlich auch noch Hotkeys.
 
Nachtrag: Mit Freunden getestet kam heraus, dass die Software von Roccat nur die Verknüpfung braucht. Nicht die .bat und nicht die .exe Lösung. Mit der Logitech Software klappt die Verknüpfung auch nicht wie bei Razer, aber da reicht die .bat und die Konvertierung zur .exe ist nicht nötig. Bei Razer wie beschrieben ist der ganze Weg notwendig.

Diese Info ist jetzt aktuell, aber dass kann sich ändern wenn die Hersteller mal ihre Software fixen. Failsave war bisher bei allen meine Lösung mit der .exe.

Lässt sich übrigens auch schön auf frei programmierbare Headset Tasten legen ;)
 
Zuletzt bearbeitet:
Wenn man auf einer Taste gerne ein Programm starten und auch wieder beenden können möchte, dann kann das so gehen:

@Echo off
tasklist |find "FPSMonitor.exe"
if %errorlevel%==0 taskkill /im "FPSMonitor.exe"
if not %errorlevel%==0 cd C:\Program Files (x86)\FPS Monitor & start FPSMonitor.exe
exit

Gerne hätte ich else verwendet, hab es aber nicht hinbekommen. Außerdem scheint die Abfrage für das Beenden des Tasks nicht immer zuverlässig zu funktionieren. Kann mir da jemand helfen? Ansonsten ist das schon gar nicht schlecht so.

Update: So geht es zuverlässig :)

@Echo off
tasklist |find "FPSMonitor.exe"
if %errorlevel%==0 taskkill /im "FPSMonitor.exe"
if %errorlevel%==0 taskkill /im "FPSMonitor.exe"
if not %errorlevel%==0 cd C:\Program Files (x86)\FPS Monitor & start FPSMonitor.exe
exit

Wieso der taskkill Befehl 2x nötig ist scheint an FPS Monitor zu liegen. Laut CMD wird auch schon bei der ersten Ausführung der Befehl erfolgreich ausgeführt. What ever, so wie nun beschrieben geht es :)
 
Zuletzt bearbeitet:
Hier noch mehr cooles Zeug was man im Hintergrund ohne rauszutabben (sorry Denglisch).

Und zwar könnt ihr mit einer AMD GPU und OverdriveNtool statt einer Verknüpfung mit Startparametern auch wieder eine Batch Datei anlegen und die wie zu Anfang beschrieben mit Bat to Exe ebenfalls zu einer im Hintergrund ausführbaren Datei machen. Diese Datei kann dann eure vorher mit OverdriveNtool angelegten Profile mit Power States laden. Und das halt ingame. Also ihr könnt dann im Spiel durchschalten und selbst den effizientesten Betrieb damit rausfinden oder eben auch beim übertakten und untervolten komfortabel die Einstellungen testen.

Damit ist es nicht mehr nötig den AMD Treiber aufzurufen oder das sowieso schon direktere OverdriveNtool. Der von euch programmierte Hotkey reicht dann aus. Find ich ja ziemlich geil.

Ich habe 5 sinnvolle Profile für meine Power States und vor ein paar Monaten auch recht umfangreich was zu Vega erklärt. Da werde ich den Beitrag hier auch nochmal verlinken. Sie dienen hier nun aber nur zur Anschauung wie man es machen kann. https://www.computerbase.de/forum/t...fahrungsthread.1704140/page-155#post-23724387

Das erste und sparsamste Profil heißt bei mir Power Save und dem nach habe ich die 1. Power Save.bat angelegt und die sah dann so aus:

@Echo off
start C:\Users\PLATZHALTER\Desktop\Werkzeuge\OverdriveNTool.exe -p0"Power Save"
exit

Daraus wurde dann mit Bat to Exe und den unsichtbaren Optionen für die Ausführung die 1. Power Save.exe. Die liegt jetzt auf einer Taste meiner Blackwiddow Elite.

Weiter ging es dann mit Light Gaming, dem 2. Profil, welches die Leistung der GPU steigert.

@Echo off
start C:\Users\Pascal\Desktop\Werkzeuge\OverdriveNTool.exe -p0"Light Gaming"
exit

Musste dafür der Code dann lauten. Am Ende hatte ich die 2. Light Gaming.exe und die natürlich auf einer anderen Taste. Ich hab btw einfach meinen Nummernblock dafür genommen.

Und so ging es dann mit 3. Efficent Gaming, 4. Gaming und 5. OC Boost weiter.

-p0 definiert übrigens die jeweilige GPU und "PLATZHALTER" definiert das Profil welches geladen werden soll.
 
Zuletzt bearbeitet:
Zurück
Oben