Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "SoundSet", в содержании - "Sound Commands" - "SoundSet", v1.0.46.03.

Ник переводчика: YMP.

Настоящее имя переводчика: Юрий Попов.

SoundSet

Изменяет настройки звукового устройства (микшера). Окно с этими настройками открывается, например, при двойном щелчке по динамику в трее.

SoundSet, NewSetting [, ComponentType, ControlType, DeviceNumber]

Параметры

NewSetting Может быть выражением. Новая настройка. Число в диапазоне от -100 до 100 включительно (может быть числом с плавающей точкой). Если число указано со знаком (плюс или минус), значение настройки будет увеличено или уменьшено на указанную величину. Иначе текущее значение настройки будет заменено указанной величиной.

Для настроек с двумя возможными значениями, а именно ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, любое положительное число будет включать настройку, а ноль - выключать. Однако любое число с явно указанным знаком (плюс или минус) будет просто переключать настройку в противоположное состояние.
ComponentType Тип компонента (соотносится с одним из регуляторов в окне настроек микшера). Если опущен или пустой, принимает значение MASTER (общий регулятор громкости, который доступен также при одиночном щелчке по динамику в трее). Допустимые значения: MASTER (то же, что SPEAKERS), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG. Для версии 1.0.37.06 и следующих добавлено значение N/A, для версии 1.0.42.04 и следующих добавлено значение HEADPHONES. Если микшер не содержит указанного компонента, это будет отражено сообщением в переменной ErrorLevel (см. список ниже).

Компонент, обозначаемый в микшере как Auxiliary (дополнительный), иногда может быть доступен как ANALOG, а не как AUX.

Если микшер имеет более одного экземпляра какого-то компонента, то обычно первый содержит настройки воспроизведения, а второй - настройки записи. Для доступа ко второму и следующим экземплярам добавляйте двоеточие и номер к имени компонента. Например, Analog:2.
ControlType Вид настройки. Если опущен или пустой, принимает значение VOLUME (громкость). Допустимые значения: VOLUME (или VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER. В версии 1.0.37.06 и следующих может задаваться номером (см. переменную ControlTypes в скрипте для анализа звуковой карты). Если компонент не поддерживает указанный вид настройки, это будет отражено сообщением в переменной ErrorLevel (см. список ниже).
DeviceNumber Может быть выражением. Номер устройства. Если опущен, принимает значение 1, что обычно соответствует системному устройству по умолчанию для записи и воспроизведения. Для доступа к другим устройствам указывайте номер больше единицы.

ErrorLevel

Равен нулю, если команда выполнена успешно. Иначе принимает одно из следующих значений:


Invalid Control Type or Component Type (Неверный вид настройки или тип компонента)
Can't Open Specified Mixer (Не могу открыть указанный микшер)
Mixer Doesn't Support This Component Type (Микшер не поддерживает указанный компонент)
Mixer Doesn't Have That Many of That Component Type (Количество компонентов данного типа в микшере меньше, чем указанный номер)
Component Doesn't Support This Control Type (Компонент не поддерживает указанную настройку)
Can't Get Current Setting (Не могу считать текущую настройку)
Can't Change Setting (Не могу изменить настройку)

Примечания

Чтобы выяснить возможности установленных в системе звуковых устройств (микшеров), такие как доступные типы компонентов и виды настроек, запустите скрипт для анализа звуковой карты.

Когда SoundSet изменяет громкость в каком-то компоненте, все аудиоканалы этого компонента (например, левый и правый) устанавливаются на один и тот же уровень. Другими словами все настройки баланса каналов будут потеряны. Этого можно избежать, применяя команду SoundSetWaveVolume, которая старается сохранить баланс при изменении громкости.

Для считывания текущих значений настроек используйте команду SoundGet.

Примеры

SoundSet, 50 ; Общий регулятор громкости на середину.
SoundSet +10 ; Увеличить общую громкость на 10%.
SoundSet -10 ; Уменьшить общую громкость на 10%.
SoundSet, 1, Microphone, mute ; Отключить микрофон.
SoundSet, +1, , mute ; Переключить выключатель общей громкости (в противоположное состояние).
SoundSet, +20, Master, bass ; Поднять нижние частоты на 20%.
if ErrorLevel
    MsgBox, Настройка нижних частот не поддерживается общим регулятором громкости.

Скрипт для анализа звуковой карты

; АНАЛИЗ ЗВУКОВОЙ КАРТЫ
; Используйте этот скрипт, чтобы выяснить возможности вашей 
; звуковой карты (типы компонентов и виды настроек).
; Скрипт требует версии 1.0.36 или больше, т.к. использует ListView.

SetBatchLines -1
SplashTextOn,,, Сбор информации...

; Большинство обозначенных числами настроек ниже, вероятно, не существуют ни
; в одном микшере, но они проверяются для полноты.
; Числа соответствуют следующим настройкам (по порядку): CUSTOM, BOOLEANMETER, SIGNEDMETER,
; PEAKMETER, UNSIGNEDMETER, BOOLEAN, BUTTON, DECIBELS, SIGNED, UNSIGNED, PERCENT, SLIDER,
; FADER, SINGLESELECT, MUX, MULTIPLESELECT, MIXER, MICROTIME, MILLITIME

ControlTypes = 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

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

; Создание ListView и подготовка к главному циклу:
Gui, Add, Listview, w400 h400 vMyListView, Компонент|Настройка|Значение|Микшер
LV_ModifyCol(4, "Integer")
SetFormat, Float, 0.2  ; Ограничить число знаков после запятой до двух.

Loop  ; Для каждого из существующих в системе микшеров определить его возможности.
{
    CurrMixer := A_Index
    SoundGet, Setting,,, %CurrMixer%
    if ErrorLevel = Can't Open Specified Mixer  ; Любая другая ошибка означает,
        break                                   ; что микшер существует.

    ; Для каждого компонента микшера определить количество экземпляров и виды настроек:
    Loop, parse, ComponentTypes, `,
    {
        CurrComponent := A_LoopField
        ; Сначала определить, существует ли компонент:
        SoundGet, Setting, %CurrComponent%,, %CurrMixer%
        if ErrorLevel = Mixer Doesn't Support This Component Type  ; Если не существует,
            continue  ; проверить следующий тип компонента.
        Loop  ; Для каждого экземпляра компонента выяснить виды настроек.
        {
            CurrInstance := A_Index
            ; Сначала проверить, существует ли данный экземпляр этого компонента:
            SoundGet, Setting, %CurrComponent%:%CurrInstance%,, %CurrMixer%
            ; Проверка на две следующие ошибки позволяет скрипту работать
            ; на более старых версиях.
            if ErrorLevel in Mixer Doesn't Have That Many of That Component Type
                ,Invalid Control Type or Component Type
                break  ; Больше нет экземпляров этого компонента.

            ; Получить текущие значения каждого вида настроек для данного
            ; экземпляра данного компонента:
            Loop, parse, ControlTypes, `,
            {
                CurrControl := A_LoopField
                SoundGet, Setting, %CurrComponent%:%CurrInstance%, %CurrControl%, %CurrMixer%
                ; Проверка на две следующие ошибки позволяет скрипту работать
                ; на более старых версиях.
                if ErrorLevel in Component Doesn't Support This Control Type
                    ,Invalid Control Type or Component Type
                    continue
                if ErrorLevel  ; Если здесь ошибка, показать её в результатах.
                    Setting := ErrorLevel
                ComponentString := CurrComponent
                if CurrInstance > 1
                    ComponentString = %ComponentString%:%CurrInstance%
                LV_Add("", ComponentString, CurrControl, Setting, CurrMixer)
            }  ; Для каждого вида настроек.
        }  ; Для каждого экземпляра компонента.
    }  ; Для каждого типа компонентов.
}  ; Для каждого микшера.

Loop % LV_GetCount("Col")  ; Подогнать ширину колонок к ширине содержимого.
    LV_ModifyCol(A_Index, "AutoHdr")

SplashTextOff
Gui, Show
return

GuiClose:
ExitApp

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.