目次



AutoHotKeyとNirCmdで音量ミキサーをキーボード操作する

前回はAutoHotKeyとNirCmdでスクリーンショット機能を強化した。
今回は、これらを組み合わせて音量操作をキーボード(とマウス)で操作できるようにする。

なお、環境はWindows 7 64-bit版だが、Vista/8/8.1/10でもたぶんできる。
Win7の32-bit版は言わずもがな。

Windowsの音量ミキサーとは

WindowsVista以降のマシンには、ボリュームコントロールとして音量ミキサーが標準搭載されている。
これは、起動しているアプリケーション毎にボリューム値を設定できるものだ。
  1. タスクバーの通知領域のスピーカーアイコンをクリックまたは右クリックする。
    001
  2. クリックした場合は左のウィンドウ、右クリックした場合は右のメニューが表示される。
    それぞれ「ミキサー」か「音量ミキサーを開く」をクリックする。
    003002



  3. すると以下の音量ミキサーが開く。
    000

一部のアプリケーションだけ音量を下げて同時視聴したり、システム音量だけミュートにしたり、色々と便利に使える。
テレビ機能搭載PCではスピーカー音量とテレビ音量が連動していることがあるので、テレビだけ音量を下げたい時にも活躍してくれるだろう。


この音量ミキサー、意外と活躍することも多い……が、しかし!

わざわざ通知領域のアイコンから開くのは面倒臭い!!
頻繁にミキサーをいじるような場合はやってられない…。

というわけで、今回もAutoHotKeyとNirCmdを組み合わせて、便利に音量調節できるようにしてしまおう。
以下の記事から予め導入のこと。
  1. AutoHotKey(導入方法
  2. NirCmd(導入方法

マスターボリューム(スピーカー)の音量調節

音量ミキサー操作の前に、まずは簡単なスピーカー音量の操作から設定する。
以下はAltキーとマウス操作で音量の増減とミュートが行える設定になっている。
キーボードだけで操作できる設定も合わせて紹介しているので参考に。

ちなみに、WoWsをやっていると以下のミュート設定がゲーム内操作と被ることがあった…。
例によって、各環境に合わせて使用するキーを変更のこと。

;------------------------------------
; VolumeChange
;------------------------------------
	;----------------------------
	; MasterVolume
	;----------------------------
	; AutoHotKeyのコマンドを利用すると以下のようになる。
	; 当方の環境だと音量は2%ずつ変化する。
	; {Volume_Up 2}のように数字を指定すると増減量を設定できる(設定値 × 2%相当)。
	!WheelUp::Send, {Volume_Up}			; Alt + マウスホイールアップで音量増加
	!WheelDown::Send, {Volume_Down}		; Alt + マウスホイールダウンで音量減少
	!RButton::Send, {Volume_Mute}			; Alt + 右クリックでミュートをトグル

	; 以下のコマンドであれば%で設定できる。(コメントアウト済み)
	;!WheelUp::
	;	SoundSet +5			; 5%単位で増加
	;	Return
	;!WheelDown::
	;	SoundSet -5			; 5%単位で減少
	;	Return
	;!RButton::
	;	SoundSet, +1, , mute	; トグル切り替えのミュート機能
	;	Return

	;----------------------------
	; 無変換キーと方向キーを利用した一例。(コメントアウト済み)
	; PgDnはFn + down(↓)で入力できる。
	;----------------------------
	;~vk1Dsc07B & Up::Send, {Volume_Up}
	;vk1Dsc07B & Down::Send, {Volume_Down}
	;vk1Dsc07B & PgDn::Send, {Volume_Mute}


音量ミキサーの音量調節

いよいよ本題の音量ミキサーの設定に入る。
先程までと違って、今度はNirCmdでコマンドを実行することになる。

以下は無変換キーとマウスを組み合わせて、アクティブウィンドウの音量を操作するスクリプトになる。
アクティブウィンドウと書いたが、実際には多重窓の場合は区別されず、アプリ毎に設定される。

;------------------------------------
; VolumeChange
;------------------------------------
	;----------------------------
	; AppVolume
	;----------------------------
	~vk1Dsc07B & WheelUp::
		;----------------------------
		; 0.1という数字は10%ずつ音量を上げるという設定。
		; コマンド入力時のスピーカー音量が100%として変化する。
		; 例えば、スピーカー音量が30の時は3ずつアプリの音量が増加する。
		; また、スピーカー音量より大きくなることはない。
		;----------------------------
		RunWait, nircmdc.exe changeappvolume focused 0.1, ,Hide
		Return

	vk1Dsc07B & WheelDown::
		;----------------------------
		; 負の値を指定すると、音量の減少になる。
		;----------------------------
		RunWait, nircmdc.exe changeappvolume focused -0.1, ,Hide
		Return

	vk1Dsc07B & RButton::
		;----------------------------
		; ミュートとミュート解除を交互に行う設定。
		;----------------------------
		RunWait, nircmdc.exe muteappvolume focused 2, ,Hide
		Return


特定のウィンドウでの挙動を変える

特定のアプリのみ別の操作を割り当てたい場合はIfWinActiveを用いる。
条件に一致した場合と、その他(Else)で挙動を変えられる。

以下では、ウィンドウタイトルが「SmartVision」と一致するアプリがアクティブな場合とそれ以外でコントロールするプロセスが異なる。
この他、音量の増減量を変更したり、一部のアプリでのみ動作させないことも可能。
;------------------------------------
; VolumeChange
;------------------------------------
	;----------------------------
	; AppVolume
	;----------------------------
	~vk1Dsc07B & WheelUp::
		;----------------------------
		; テレビの映像描画画面と音声などをコントロールするプロセスが異なるので、
		; 音量を変更するプロセスを別途指定している例。
		;----------------------------
		IfWinActive, SmartVision, 
			RunWait, nircmdc.exe changeappvolume DtnCtl.exe 0.1, ,Hide
		Else 
			RunWait, nircmdc.exe changeappvolume focused 0.1, ,Hide
		Return

	vk1Dsc07B & WheelDown::
		IfWinActive, SmartVision, 
			RunWait, nircmdc.exe changeappvolume DtnCtl.exe -0.1, ,Hide
		Else 
			RunWait, nircmdc.exe changeappvolume focused -0.1, ,Hide
		Return

	vk1Dsc07B & RButton::
		IfWinActive, SmartVision, 
			RunWait, nircmdc.exe muteappvolume DtnCtl.exe 2, ,Hide
		Else 
			RunWait, nircmdc.exe muteappvolume focused 2, ,Hide
		Return


その他、ボリュームコントロールでできることはこちら(AutoHotKey Wiki)Vista Audio Cntorol Function(外部)などを参照のこと。

以上で音量ミキサー操作の設定はおしまい。