Standardmäßiges Soundeingabegerät automatisch wechseln

Standardmäßiges Soundeingabegerät automatisch wechseln

Ich habe mir zusätzlich zu meinem kabellosen Logitech G930-Headset mit hochklappbarem Mikrofon ein neues Mikrofon gekauft, das an meinem Schreibtisch befestigt ist.

Wenn ich an meinem Schreibtisch sitze, soll mein Mikrofon dort das Standardgerät sein. Sobald ich meinen Schreibtisch verlasse und das Headset-Mikrofon herunterklappe, soll dieses als Standardeingabegerät dienen.

Wenn ich meine Kopfhörer physisch stummschalte/aufklappe, wird anscheinend eine Art Ereignis an mein Betriebssystem gesendet, da es weiß, dass die Stummschaltung erfolgt ist und dies beispielsweise hier anzeigt:

[ Bild]

Ich habe einige Nachforschungen angestellt und Software wieAbonnieren, aber wie ich das sehe, gibt es keine Möglichkeit, den Stummschaltzustand zu erreichen. Anscheinend kann das mit C++ CoreAudio gemacht werden. Ich würde lieber keinen 3-GB-Compiler und Visual Studio nur für einen Zehnzeiler herunterladen.

Gibt es CoreAudio-Bindings für andere Sprachen wie Python oder Node.js/alternative Tools, um das zu erreichen, was ich brauche?

Antwort1

Ich bin endlich dazu gekommen, das Problem zu lösen, indem ichhttps://github.com/frgnca/AudioDeviceCmdlets/innerhalb eines PowerShell-Skripts.

$Microphone = "{0.0.1.00000000}.{50486949-aae2-4574-97fb-4660fd26b6f7}"
$Headset = "{0.0.1.00000000}.{4bf15a7e-d091-4bcb-ae8f-5cadfdcffca7}"

while (1) {
    $ActiveDevice = Get-AudioDevice -Recording
    $HeadSetObject = Get-AudioDevice -ID $Headset
    $HeadSetIsMuted = $HeadSetObject."Device"."AudioEndpointVolume"."Mute"
    if ($HeadSetIsMuted) {
        if ($ActiveDevice."ID" -eq $HeadSet) {
            Set-AudioDevice -ID $Microphone
        }
    } else {
        if ($ActiveDevice."ID" -eq $Microphone) {
            Set-AudioDevice -ID $Headset
        }
    }
    
    sleep 3;
}

verwandte Informationen