SoundSet

Ändert diverse Einstellungen eines Audiogeräts (Master-Stummschaltung, Master-Lautstärke und so weiter).

SoundSet, Einstellung , Komponente, Regler, Gerätenummer

Parameter

Einstellung

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 mit der angegebenen Menge nach oben oder nach unten reguliert. Andernfalls wird die Einstellung explizit gesetzt.

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

Komponente

Wenn dieser Parameter weggelassen wird oder leer ist, wird standardmäßig das Wort MASTER verwendet. Ansonsten kann eines der folgenden Wörter angegeben werden: MASTER (gleichbedeutend mit SPEAKERS), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG, HEADPHONES oder N/A. Wenn das Audiogerät die angegebene Komponente nicht hat, wird ErrorLevel das Problem kennzeichnen.

Die Komponente mit der Bezeichnung Auxiliary muss bei einigen Mixern eventuell via ANALOG statt AUX angesteuert werden.

Wenn ein Gerät mehr als eine Instanz der Komponente hat (zum Beispiel zwei vom Typ LINE), enthält die erste Instanz für gewöhnlich die Wiedergabeeinstellungen und die zweite die Aufnahmeeinstellungen. Um anstelle der ersten Instanz auf eine andere zuzugreifen, müssen Sie nach diesem Parameter ein Doppelpunkt und eine Nummer anfügen. Zum Beispiel: Analog:2 ist die zweite Instanz der analogen Komponente.

Regler

Wenn dieser Parameter weggelassen wird oder leer ist, wird standardmäßig das Wort VOLUME verwendet. Ansonsten kann eines der folgenden Wörter angegeben werden: VOLUME (oder VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER oder die Nummer eines gültigen Reglers (siehe Soundkartenanalyse-Skript). Wenn die angegebene Komponente den angegebenen Regler nicht hat, wird ErrorLevel das Problem kennzeichnen.

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

Gerätenummer

Eine Nummer zwischen 1 und Gesamtanzahl an unterstützten Geräten. Lässt man diesen Parameter weg, wird standardmäßig 1 verwendet (das erste Audiogerät), oder in Windows Vista oder höher das standardmäßig verwendete Wiedergabegerät des Systems. Dieser Parameter kann ein Ausdruck sein. Das Soundkartenanalyse-Skript könnte dabei helfen, welche Nummer verwendet werden soll.

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. Ansonsten 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 Audio-Steuerung ist die VA-Bibliothek besser geeignet.

Zum Anpassen der Master-Lautstärke des Systems kann alternativ auch ein Skript verwendet werden, das lautstärkespezifische Tastendrücke sendet. Zum Beispiel:

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

Um den Leistungsumfang der installierten Audiogeräte (Mixer) zu ermitteln -- z. B. verfügbare Komponenten und Regler -- 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 (zum Beispiel der linke und rechte Kanal) auf die gleiche Stufe gesetzt. Das heißt, dass jede zuvor eingestellte außermittige "Balance" verloren geht. Bei der WAVE-Komponente kann das verhindert werden, wenn man stattdessen den Befehl SoundSetWaveVolume verwendet, der versuchen wird, die vorhandene Balance beizubehalten, sobald sich die Lautstärke ändert.

[v1.1.10+]: In Windows Vista und höher versucht SoundSet, die vorhandene Balance beizubehalten, sobald sich die Lautstärke ändert.

Mit SoundGet kann der aktuelle Wert einer Einstellung abgerufen werden.

Siehe auch

SoundGet, SoundGetWaveVolume, SoundSetWaveVolume, SoundPlay

Beispiele

#1: Einfache Beispiele

SoundSet, 50  ; Setzt die Master-Lautstärke auf 50%
SoundSet +10  ; Erhöht die Master-Lautstärke um 10%
SoundSet -10  ; Verringert die Master-Lautstärke um 10%
SoundSet, 1, Microphone, mute  ; Schaltet das Mikrofon auf stumm
SoundSet, +1, , mute  ; Schaltet die Master-Stummschaltung um (jeweils auf den entgegengesetzten Zustand)
SoundSet, +20, Master, bass  ; Erhöht die Bassstärke um 20%.
if ErrorLevel
    MsgBox, Die BASS-Einstellung wird nicht für MASTER unterstützt.

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

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

; Die meisten unten genannten reinen Zahlen gibt es wahrscheinlich nicht in jedem Mixer, allerdings werden sie 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
Regler := "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"

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

; Erstellt eine ListView und bereitet diese auf die Hauptschleife vor:
Gui, Add, ListView, w400 h400 vMeineListView, Komponente|Regler|Einstellung|Mixer
LV_ModifyCol(4, "Integer")
SetFormat, Float, 0.2  ; Begrenzt die maximale Dezimalstellenanzahl eines Prozentwertes auf 2.

Loop  ; Ruft von jedem Mixer, der im System vorkommt, dessen Fähigkeiten ab.
{
    AktMixer := A_Index
    SoundGet, Einstellung,,, %AktMixer%
    if (ErrorLevel = "Can't Open Specified Mixer")  ; Jeder anderer Fehler kennzeichnet, dass der Mixer vorhanden ist.
        break

    ; Ruft von jeder Komponente, die in diesem Mixer existiert, ihre Instanzen und Regler ab:
    Loop, parse, Komponenten, `,
    {
        AktKomponente := A_LoopField
        ; Zuerst überprüfen, ob diese Komponente überhaupt im Mixer existiert:
        SoundGet, Einstellung, %AktKomponente%,, %AktMixer%
        if (ErrorLevel = "Mixer Doesn't Support This Component Type")
            continue  ; Startet für die nächste Komponente eine neue Iteration.
        Loop  ; Ruft von jeder Instanz dieser Komponente ihre Regler ab.
        {
            AktInstanz := A_Index
            ; Zuerst überprüfen, ob diese Instanz dieser Instanz auch im Mixer vorkommt:
            SoundGet, Einstellung, %AktKomponente%:%AktInstanz%,, %AktMixer%
            ; Das Überprüfen beider folgenden Fehler erlaubt diesem Skript, auf ältere Betriebssysteme zu laufen:
            if ErrorLevel in Mixer Doesn't Have That Many of That Component Type,Invalid Control Type or Component Type
                break  ; Keine weiteren Instanzen von dieser Komponente.
            ; Ermittelt die aktuelle Einstellung von jedem Regler, der in dieser Instanz dieser Komponente existiert:
            Loop, parse, Regler, `,
            {
                AktRegler := A_LoopField
                SoundGet, Einstellung, %AktKomponente%:%AktInstanz%, %AktRegler%, %AktMixer%
                ; Das Überprüfen beider folgenden Fehler erlaubt diesem Skript, auf ältere Betriebssysteme zu laufen:
                if ErrorLevel in Component Doesn't Support This Control Type,Invalid Control Type or Component Type
                    continue
                if ErrorLevel  ; Irgendein unerwarteter Fehler, der demzufolge in den Ergebnissen angezeigt wird.
                    Einstellung := ErrorLevel
                KomponenteZkette := AktKomponente
                if (AktInstanz > 1)
                    KomponenteZkette := KomponenteZkette ":" AktInstanz
                LV_Add("", KomponenteZkette, AktRegler, Einstellung, AktMixer)
            }  ; Für jeden Regler.
        }  ; Für jede Instanz der Komponente.
    }  ; Für jede Komponente.
}  ; Für jeden Mixer.

Loop % LV_GetCount("Col")  ; Passt die Breiten der Spalten an den Inhalt der Reihen an.
    LV_ModifyCol(A_Index, "AutoHdr")

SplashTextOff
Gui, Show
return

GuiClose:
ExitApp