SoundSet

Ändert verschiedene Einstellungen eines Audiogeräts (Master-Stummschaltung, Master-Lautstärke usw.).

SoundSet, NeueEinstellung , KomponenteTyp, ReglerTyp, GerätNummer

Parameter

NeueEinstellung

Eine Prozentzahl zwischen -100 und 100 (kann eine Floating-Point-Zahl oder ein Ausdruck sein). Wenn die Zahl mit einem Plus- oder Minuszeichen beginnt, wird die aktuelle Einstellung um den angegebenen Wert erhöht bzw. verringert. Andernfalls wird die Einstellung explizit auf NeueEinstellung gesetzt.

Bei Reglertypen mit nur zwei möglichen Einstellungen (ONOFF, MUTE, MONO, LOUDNESS, STEREOENH und BASSBOOST) bewirkt eine positive Zahl, dass die Einstellung eingeschaltet wird, und 0, dass sie ausgeschaltet wird. Wenn die Zahl jedoch mit einem Plus- oder Minuszeichen beginnt, wird die Einstellung umgeschaltet (jeweils auf den entgegengesetzten Zustand).

KomponenteTyp

Wenn leer oder weggelassen, wird standardmäßig MASTER verwendet. Andernfalls geben Sie eines der folgenden Wörter an: MASTER (synonym zu SPEAKERS), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG, HEADPHONES oder N/A. Wenn das Audiogerät den angegebenen Komponententyp nicht hat, wird ErrorLevel das Problem kennzeichnen.

Es ist möglich, dass die Komponente namens Auxiliary bei einigen Mixern unter ANALOG statt AUX zugänglich ist.

Wenn ein Gerät mehr als eine Instanz des Komponententyps hat (z.B. zwei vom Typ LINE), enthält die erste Instanz normalerweise die Wiedergabeeinstellungen und die zweite die Aufnahmeeinstellungen. Um auf eine andere Instanz als die erste zuzugreifen, fügen Sie einen Doppelpunkt und eine Nummer an. Zum Beispiel ist Analog:2 die zweite Instanz der analogen Komponente.

ReglerTyp

Wenn leer oder weggelassen, wird standardmäßig VOLUME verwendet. Andernfalls geben Sie eines der folgenden Wörter an: VOLUME (oder VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER oder die Nummer eines gültigen Reglertyps (siehe Soundkartenanalyse-Skript). Wenn der angegebene Komponententyp den angegebenen Reglertyp nicht hat, wird ErrorLevel das Problem kennzeichnen.

Hinweis: Audiogeräte unterstützen üblicherweise nur VOLUME (oder VOL) und MUTE, obwohl je nach Windows-Version und Audiogerät auch andere verfügbar sein können.

GerätNummer

Wenn leer oder weggelassen, wird standardmäßig 1 (das erste Audiogerät) oder in Windows Vista oder höher das Standard-Wiedergabegerät des Systems verwendet. Andernfalls geben Sie eine Nummer zwischen 1 und der Gesamtzahl der unterstützten Geräte an. Dieser Parameter kann ein Ausdruck sein. Das Soundkartenanalyse-Skript kann helfen, die zu verwendende Nummer zu ermitteln.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf 0 gesetzt, wenn der Befehl erfolgreich war. Andernfalls wird es auf einen der folgenden Sätze gesetzt:

Bemerkungen

[v1.1.10+]: Dieser Befehl unterstützt Windows Vista und höher.

Für mehr Funktionalität und feinere Audiosteuerung ist die VA-Bibliothek besser geeignet.

Um die Master-Lautstärke des gesamten Systems zu ändern, kann alternativ ein Skript verwendet werden, das lautstärkespezifische Tastendrücke sendet. Zum Beispiel:

Send {Volume_Up}  ; Master-Lautstärke um 1 Stufe erhöhen (normalerweise 5 %).
Send {Volume_Down 3}  ; Master-Lautstärke um 3 Stufen verringern.
Send {Volume_Mute}  ; Master-Lautstärke stummschalten bzw. Stummschaltung aufheben.

Um den Leistungsumfang der installierten Audiogeräte (Mixer) zu ermitteln - z.B. die verfügbaren Komponenten- und Reglertypen - führen Sie das Soundkartenanalyse-Skript aus.

Windows 2000/XP/2003: Wenn SoundSet die Lautstärke einer Komponente ändert, werden alle Kanäle dieser Komponente (z.B. links und rechts) auf den gleichen Pegel gesetzt. Mit anderen Worten, jede zuvor eingestellte außermittige "Balance" geht verloren. Dies lässt sich bei der WAVE-Komponente durch Nutzung von SoundSetWaveVolume vermeiden, denn es versucht, die bestehende Balance beim Ändern der Lautstärke beizubehalten.

[v1.1.10+]: In Windows Vista und höher versucht SoundSet, die bestehende Balance beim Ändern der Lautstärke beizubehalten.

Mit SoundGet kann der aktuelle Wert einer Einstellung abgerufen werden.

SoundGet, SoundGetWaveVolume, SoundSetWaveVolume, SoundPlay

Beispiele

Setzt die Master-Lautstärke auf 50 %.

SoundSet, 50

Erhöht die Master-Lautstärke um 10 %.

SoundSet +10

Verringert die Master-Lautstärke um 10 %.

SoundSet -10

Schaltet das Mikrofon stumm.

SoundSet, 1, Microphone, Mute

Schaltet die Master-Stummschalteinstellung um (jeweils auf den entgegengesetzten Zustand).

SoundSet, +1,, Mute

Erhöht den Master-Basspegel um 20 %, wenn möglich, ansonsten wird eine Fehlermeldung angezeigt.

SoundSet, +20, Master, Bass
if ErrorLevel
    MsgBox, Die BASS-Einstellung wird für MASTER nicht unterstützt.

Soundkartenanalyse. Das folgende Skript kann verwendet werden, um die Fähigkeiten Ihrer Soundkarte zu ermitteln (Komponenten- und Reglertypen). Es zeigt die Ergebnisse in einer einfachen ListView an. Alternativ kann ein Skript für Windows Vista oder höher heruntergeladen werden, das mehr Details liefert (z.B. die Anzeigenamen der Geräte): https://www.autohotkey.com/board/topic/90877-/

SetBatchLines -1
SplashTextOn,,, Informationen der Soundkarte ermitteln ...

; Die meisten der unten angegebenen reinen Zahlen sind wahrscheinlich nicht in jedem Mixer vorhanden, werden aber der Vollständigkeit halber abgefragt.
; Die Zahlen beziehen sich auf folgende Elemente (in Reihenfolge): CUSTOM, BOOLEANMETER, SIGNEDMETER, PEAKMETER,
; UNSIGNEDMETER, BOOLEAN, BUTTON, DECIBELS, SIGNED, UNSIGNED, PERCENT, SLIDER, FADER, SINGLESELECT, MUX,
; MULTIPLESELECT, MIXER, MICROTIME, MILLITIME
ReglerTypen := "VOLUME,ONOFF,MUTE,MONO,LOUDNESS,STEREOENH,BASSBOOST,PAN,QSOUNDPAN,BASS,TREBLE,EQUALIZER,0x00000000, 0x10010000,0x10020000,0x10020001,0x10030000,0x20010000,0x21010000,0x30040000,0x30020000,0x30030000,0x30050000,0x40020000,0x50030000,0x70010000,0x70010001,0x71010000,0x71010001,0x60030000,0x61030000"

KomponenteTypen := "MASTER,HEADPHONES,DIGITAL,LINE,MICROPHONE,SYNTH,CD,TELEPHONE,PCSPEAKER,WAVE,AUX,ANALOG,N/A"

; Eine ListView erstellen und für die Hauptschleife vorbereiten:
Gui, Add, ListView, w400 h400 vMeineListView, Komponententyp|Reglertyp|Einstellung|Mixer
LV_ModifyCol(4, "Integer")
SetFormat, Float, 0.2  ; Anzahl der Dezimalstellen einer Prozentzahl auf 2 begrenzen.

Loop  ; Für jeden Mixer im System seine Fähigkeiten abrufen.
{
    AktMixer := A_Index
    SoundGet, Einstellung,,, %AktMixer%
    if (ErrorLevel = "Can't Open Specified Mixer")  ; Jeder andere Fehler gibt an, dass der Mixer existiert.
        break

    ; Für jeden Komponententyp in diesem Mixer seine Instanzen und Reglertypen abrufen:
    Loop, parse, KomponenteTypen, `,
    {
        AktKomponente := A_LoopField
        ; Zuerst prüfen, ob dieser Komponententyp überhaupt im Mixer existiert:
        SoundGet, Einstellung, %AktKomponente%,, %AktMixer%
        if (ErrorLevel = "Mixer Doesn't Support This Component Type")
            continue  ; Neue Wiederholung starten, um mit dem nächsten Komponententyp fortzufahren.
        Loop  ; Für jede Instanz dieses Komponententyps seine Reglertypen abrufen.
        {
            AktInstanz := A_Index
            ; Zuerst prüfen, ob diese Instanz dieser Instanz überhaupt im Mixer existiert:
            SoundGet, Einstellung, %AktKomponente%:%AktInstanz%,, %AktMixer%
            ; Die Prüfung der beiden folgenden Fehler ermöglicht die Skriptausführung auf älteren Systemen:
            if ErrorLevel in Mixer Doesn't Have That Many of That Component Type,Invalid Control Type or Component Type
                break  ; Keine weiteren Instanzen von diesem Komponententyp.
            ; Ermittelt die aktuelle Einstellung jedes Reglertyps, der in dieser Instanz dieser Komponente existiert:
            Loop, parse, ReglerTypen, `,
            {
                AktRegler := A_LoopField
                SoundGet, Einstellung, %AktKomponente%:%AktInstanz%, %AktRegler%, %AktMixer%
                ; Die Prüfung der beiden folgenden Fehler ermöglicht die Skriptausführung auf älteren Systemen:
                if ErrorLevel in Component Doesn't Support This Control Type,Invalid Control Type or Component Type
                    continue
                if ErrorLevel  ; Ein anderer unerwarteter Fehler, also in den Ergebnissen anzeigen.
                    Einstellung := ErrorLevel
                KomponenteZkette := AktKomponente
                if (AktInstanz > 1)
                    KomponenteZkette := KomponenteZkette ":" AktInstanz
                LV_Add("", KomponenteZkette, AktRegler, Einstellung, AktMixer)
            }  ; Für jeden Reglertyp.
        }  ; Für jede Instanz der Komponente.
    }  ; Für jeden Komponententyp.
}  ; Für jeden Mixer.

Loop % LV_GetCount("Col")  ; Breite jeder Spalte an ihren Inhalt anpassen.
    LV_ModifyCol(A_Index, "AutoHdr")

SplashTextOff
Gui, Show
return

GuiClose:
ExitApp