I've made a few additions to this script for my benefit, and perhaps that of others. One thing that made me adapt this particular script, is that it doesn't cause an alt-tab out of games when i use the volume controls, like other Volume Bar scripts do.
The changes are the following:
-If master mute is on, displays "All Muted" below the master volume bar.
-If the variable that sets the "PC Spk Mute" option is ON (In my case, MASTER, ONFF has value 'on'), displays "PC Spk. Muted". For more on this feature, see
this thread.
-Reduced time of display
-Extra hints/instructs included at start of code
Apologies if I forgot any other changes I made to this script... but i'm fairly certain that's it. It's just been in my "AlwaysRunning.ahk" for a while and has received tinkering at times.
Hope this is useful to someone. I'm happy with it myself... tinkering with AHK code is fun.
Code:
; 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.
; Further features added by Gertlex (Sept. 2007)
; * Message displayed if master mute is on
; * Message displayed if pc spk mute is on
; * Also changed display time from 2000ms to 500ms
; * Additional hotkeys for laptop's built in volume control buttons
; ...probably universal
; To change pcspk mute variable (the actual variable varies between computers)
; see the line with comment "; Laptop's speakers" in vol_ShowBars function.
; Correct variable can be found by using the SoundCardAnalysis.ahk (code is
; in AHK help... or search for it) and experimenting with the PC Spk Mute
; (which can probably be found in "Volume Control" -> Advanced
;_________________________________________________
;_______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 = 500
; Master Volume Bar color (see the help file to use more
; precise shades):
vol_CBM = Black
; 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 = 100
vol_PosY = 950
vol_Width = 200 ; width of bar
vol_Thick = 24 ; 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
Hotkey, SC12E, vol_MasterDown
Hotkey, SC130, vol_MasterUp
;___________________________________________
;_____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
{
SoundGet, master_mute,MASTER,MUTE ; System-wide mute
SoundGet, master_onoff,MASTER,ONOFF ; Laptop's speakers
if master_mute = On
{
Progress, %vol_BarOptionsWave%, , All Muted, vol_Wave
}
else
{
if master_onoff = On ; laptop speakers ARE muted
{
Progress, %vol_BarOptionsWave%, , PC Spk. Muted, vol_Wave
}
else
{
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
;*******************************