SoundSet
사운드 장치의 다양한 설정을 변경합니다 (음소거, 볼륨 등등.)
SoundSet, NewSetting [, ComponentType, ControlType, DeviceNumber]
매개변수
- NewSetting
백분률 숫자. 범위는 -100부터 100 까지 (부동 소수점 수 또는 표현식 가능). 숫자가 플러스 또는 마이너스 사인으로 시작하면, 현재 설정이 지정한 양만큼 위나 아래로 조절됩니다. 그렇지 않으면, 이 설정은 명시적으로 NewSetting에 지정한 값이 설정됩니다.
오직 두 개의 설정만 가능한 ControlTypes에 대하여 -- 즉 ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, 그리고 BASSBOOST -- 양수는 설정을 켜고 0이면 설정을 끕니다. 그렇지만, 숫자가 플러스 또는 마이너스 사인으로 시작하면, 설정은 토글됩니다 (현재 상태를 반대로 설정합니다).
- ComponentType
생략하거나 비어 있으면, 기본값은 단어 MASTER입니다. 그렇지 않으면, 다음 단어 중 하나가 될 수 있습니다: MASTER (SPEAKERS와 동의어), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG, HEADPHONES, 또는 N/A. 사운드 장치에 지정된 ComponentType이 없으면, ErrorLevel은 그 에러를 알려줍니다.
라벨이 Auxiliary인 컴포넌트는 어떤 믹서에서 AUX가 아니라 ANALOG로 접근할 수 있습니다.
장치에 ComponentType의 실체가 하나 이상 있으면 (예를 들어 두 종류의 LINE), 보통 첫 번째 콤포넌트에 연주 설정이 담기고 두 번째 콤포넌트에 녹음 설정이 담깁니다. 첫 콤포넌트 말고 다른 콤포넌트에 접근하려면 쌍점과 숫자를 이 매개변수 뒤에 추가하십시오. 예를 들어:
Analog:2
는 아날로그 컴포넌트의 두 번째 실체입니다.- ControlType
생략하거나 비어 있으면, 기본 값은 VOLUME입니다. 그렇지 않으면, 다음 단어 중 하나가 될 수 있습니다: VOLUME (또는 VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER, 또는 유효한 콘트롤 유형이 번호 (사운드카드 분석 스크립트 참조). 지정된 ComponentType에 지정된 ControlType이 없으면, ErrorLevel은 그 문제를 알려 줍니다.
주의: 사운드 장치는 보통 VOLUME (또는 VOL) 그리고 MUTE만 지원합니다. 물론 다른 것들도 사운드 장치와 윈도우즈 버전에 따라 사용할 수 있습니다.
- DeviceNumber
1부터 지원되는 장치의 총 갯수 까지의 숫자. 이 매개변수를 생략하면, 기본 값은 1 (첫 번째 사운드 장치)이거나, 아니면 Windows Vista 이후에서 연주에 대한 시스템의 기본 장치입니다. 이 매개변수는 표현식일 수 있습니다. 사운드카드 분석 스크립트는 어느 번호를 사용할 지 결정하는 데 도움이 될 것입니다..
ErrorLevel
[v1.1.04+] 이 명령어는 실패시 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.
ErrorLevel은 명령어가 성공했으면 0이 설정됩니다. 그렇지 않으면, 다음 문구 중 하나가 설정됩니다:
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 (설정을 변경할 수 없음) |
논평
Windows Vista 이후는 v1.1.10부터 지원합니다.
오디오를 더 섬세하게 제어하려면, VA 라이브러리의 사용을 고려해 보십시오.
볼륨을 조절하는 또다른 방법은 스크립트에게 볼륨-제어 키눌림을 전송하게 해 전체 시스템에 대하여 마스터 볼룸을 변경하는 것입니다. 예를 들어 다음 예제와 같이 할 수 있습니다:
Send {Volume_Up} ; 마스터 볼륨을 1 눈금 올립니다 (보통 5%). Send {Volume_Down 3} ; 마스터 볼륨을 3 눈금 내립니다. Send {Volume_Mute} ; 마스터 볼륨을 음소거 하거나 해제합니다.
시스템에 설치된 사운드 장치 (믹서)의 능력을 알아 내려면 -- 예를 들어 컴포넌트 유형과 콘트롤 유형 -- 사운드카드 분석 스크립트를 실행하십시오.
Windows 2000/XP/2003: SoundSet이 한 컴포넌트의 볼륨을 변경할 때, 다른 모든 컴포넌트의 채널도 (예, 왼쪽 오른쪽) 같은 레벨로 설정됩니다. 다른 말로, 이전에 "평형"을 벗어난 값이 설정되었다면 모두 사라집니다. WAVE 컴포넌트에 대하여 이를 피하려면 대신에 SoundSetWaveVolume을 사용하면 됩니다. 이는 볼륨 레벨을 변경할 때 기존의 평형을 유지하려고 시도합니다.
Windows Vista 이후 (v1.1.10+): SoundSet는 볼륨 레벨을 변경할 때 기존의 평형을 유지하려고 노력합니다.
설정의 현재 값을 열람하려면 SoundGet을 사용하십시오.
관련 항목
SoundGet, SoundGetWaveVolume, SoundSetWaveVolume, SoundPlay
예제
; 기본 예제: SoundSet, 50 ; 마스터 볼륨에 50%를 설정합니다 SoundSet +10 ; 마스터 볼륨을 10% 올립니다 SoundSet -10 ; 마스터 볼륨을 10% 내립니다 SoundSet, 1, Microphone, mute ; 마이크로폰을 음소거합니다 SoundSet, +1, , mute ; 마스터 음소거를 토글합니다 (반대 상태로 설정합니다) SoundSet, +20, Master, bass ; bass 레벨을 20% 올립니다. if ErrorLevel MsgBox, MASTER에서 BASS 설정을 지원하지 않습니다.
사운드카드 분석
다음 스크립트를 사용하면 사운드카드의 능력을 알아볼 수 있습니다 (컴포넌트 유형과 콘트롤 유형). 그 결과를 간단한 ListView에 보여줍니다. 다른 방법으로, Windows Vista 이후에 (예를 들어 장치의 화면 이름과 같은) 더 자세한 정보를 제공하는 스크립트를 다음 포럼의 주제에서 내려 받을 수 있습니다: http://www.autohotkey.com/board/topic/90877-/
SetBatchLines -1 SplashTextOn,,, Gathering Soundcard Info... ; 아래에서 순수한 숫자는 대부분 아마도 어느 믹서에도 존재하지 않겠지만, 완벽을 기하기 위해 질의합니다. ; 숫자들은 다음 항목에 (순서대로) 상응합니다: 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, Component Type|Control Type|Setting|Mixer LV_ModifyCol(4, "Integer") SetFormat, Float, 0.2 ; Limit number of decimal places in percentages to two. 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