/docs/scripts/VolumeOSD.ahk
AutoHotKey | 127 lines | 71 code | 24 blank | 32 comment | 3 complexity | 0ca65ab11f84897d4219724138fe7271 MD5 | raw file
- ; Volume On-Screen-Display (OSD) -- by Rajat
- ; http://www.autohotkey.com
- ; This script assigns hotkeys of your choice to raise and lower the
- ; master and/or wave volume. Both volumes are displayed as different
- ; color bar graphs.
- ;_________________________________________________
- ;_______User Settings_____________________________
- ; Make customisation only in this area or hotkey area only!!
- ; The percentage by which to raise or lower the volume each time:
- vol_Step = 4
- ; How long to display the volume level bar graphs:
- vol_DisplayTime = 2000
- ; Master Volume Bar color (see the help file to use more
- ; precise shades):
- vol_CBM = Red
- ; Wave Volume Bar color
- vol_CBW = Blue
- ; Background color
- vol_CW = Silver
- ; Bar's screen position. Use -1 to center the bar in that dimension:
- vol_PosX = -1
- vol_PosY = -1
- vol_Width = 150 ; width of bar
- vol_Thick = 12 ; thickness of bar
- ; If your keyboard has multimedia buttons for Volume, you can
- ; try changing the below hotkeys to use them by specifying
- ; Volume_Up, ^Volume_Up, Volume_Down, and ^Volume_Down:
- HotKey, #Up, vol_MasterUp ; Win+UpArrow
- HotKey, #Down, vol_MasterDown
- HotKey, +#Up, vol_WaveUp ; Shift+Win+UpArrow
- HotKey, +#Down, vol_WaveDown
- ;___________________________________________
- ;_____Auto Execute Section__________________
- ; DON'T CHANGE ANYTHING HERE (unless you know what you're doing).
- vol_BarOptionsMaster = 1:B ZH%vol_Thick% ZX0 ZY0 W%vol_Width% CB%vol_CBM% CW%vol_CW%
- vol_BarOptionsWave = 2:B ZH%vol_Thick% ZX0 ZY0 W%vol_Width% CB%vol_CBW% CW%vol_CW%
- ; If the X position has been specified, add it to the options.
- ; Otherwise, omit it to center the bar horizontally:
- if vol_PosX >= 0
- {
- vol_BarOptionsMaster = %vol_BarOptionsMaster% X%vol_PosX%
- vol_BarOptionsWave = %vol_BarOptionsWave% X%vol_PosX%
- }
- ; If the Y position has been specified, add it to the options.
- ; Otherwise, omit it to have it calculated later:
- if vol_PosY >= 0
- {
- vol_BarOptionsMaster = %vol_BarOptionsMaster% Y%vol_PosY%
- vol_PosY_wave = %vol_PosY%
- vol_PosY_wave += %vol_Thick%
- vol_BarOptionsWave = %vol_BarOptionsWave% Y%vol_PosY_wave%
- }
- #SingleInstance
- SetBatchLines, 10ms
- Return
- ;___________________________________________
- vol_WaveUp:
- SoundSet, +%vol_Step%, Wave
- Gosub, vol_ShowBars
- return
- vol_WaveDown:
- SoundSet, -%vol_Step%, Wave
- Gosub, vol_ShowBars
- return
- vol_MasterUp:
- SoundSet, +%vol_Step%
- Gosub, vol_ShowBars
- return
- vol_MasterDown:
- SoundSet, -%vol_Step%
- Gosub, vol_ShowBars
- return
- vol_ShowBars:
- ; To prevent the "flashing" effect, only create the bar window if it
- ; doesn't already exist:
- IfWinNotExist, vol_Wave
- Progress, %vol_BarOptionsWave%, , , vol_Wave
- IfWinNotExist, vol_Master
- {
- ; Calculate position here in case screen resolution changes while
- ; the script is running:
- if vol_PosY < 0
- {
- ; Create the Wave bar just above the Master bar:
- WinGetPos, , vol_Wave_Posy, , , vol_Wave
- vol_Wave_Posy -= %vol_Thick%
- Progress, %vol_BarOptionsMaster% Y%vol_Wave_Posy%, , , vol_Master
- }
- else
- Progress, %vol_BarOptionsMaster%, , , vol_Master
- }
- ; Get both volumes in case the user or an external program changed them:
- SoundGet, vol_Master, Master
- SoundGet, vol_Wave, Wave
- Progress, 1:%vol_Master%
- Progress, 2:%vol_Wave%
- SetTimer, vol_BarOff, %vol_DisplayTime%
- return
- vol_BarOff:
- SetTimer, vol_BarOff, off
- Progress, 1:Off
- Progress, 2:Off
- return