〜 メディア 〜
Waveボリュームを変更 (要WINMM.DLL)

コチラのサウンドボリューム調整ツールを起動させるのではなく、自作ツールにて音量を変更する場合、
サンプルモジュールでも示したwinmm.dllの関数を利用しましょう。
尚、最小音量は0、最大音量は65535となるように設定し、
waveOutSetVolume関数の第1パラメータには、オーディオデバイスハンドルを設定するのですが、
識別子を指定する必要がない場合は0で良いでしょう。
第2パラメータに新しい音量を設定しますが、左右個別に設定可能なデバイスの場合、
上位2バイトが右チャンネル、下位2バイトが左チャンネルをあわせて指定する形となり、
左右個別に設定不可能なデバイスは下位2バイトだけのモノラルボリュームレベルを使用します。
	

setvolume 右ボリューム, 左ボリューム
右ボリュームボリュームレベルを0〜100(%)で指定する。
左ボリュームボリュームレベルを0〜100(%)で指定する。
モノラルのみ対応したデバイスの場合はコチラは使用しない。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
	ll_libload winmm, "winmm.dll"
	ll_getproc waveOutSetVolume, "waveOutSetVolume", winmm

#module
#deffunc setvolume int, int
	mref right, 0 : mref left, 1
	if right < 0 : right = 0 : else : if right > 100 : right = 100
	if left < 0 : left = 0 : else : if left > 100 : left = 100
	prm = 0xFFFFFFFF, right * 0xFFFF / 100 << 16 + (left * 0xFFFF / 100)
	ll_callfunc prm, 2, waveOutSetVolume@
	return
#global

	size = 100, 75, 50, 25, 0
	pos 10, 10 : mes "左"
	pos 10, 40 : combox lvol, 100, "100%\n75%\n50%\n25%\n0%"
	pos 80, 10 : mes "右"
	pos 80, 40 : combox rvol, 100, "100%\n75%\n50%\n25%\n0%"
	pos 10, 70 : button "変更", *change
	stop

*change
	setvolume size.rvol, size.lvol // 音量を指定サイズに変更する
	stop

setvolume 右ボリューム, 左ボリューム
右ボリュームボリュームレベルを0〜100(%)で指定する。
左ボリュームボリュームレベルを0〜100(%)で指定する。
モノラルのみ対応したデバイスの場合はコチラは使用しない。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#uselib "winmm.dll"
#func  global waveOutSetVolume "waveOutSetVolume" int, int

#module
#deffunc setvolume int right, int left, local i
	i = limit(right, 0, 100) * 0xFFFF / 100, limit(left, 0, 100) * 0xFFFF / 100
	waveOutSetVolume 0xFFFFFFFF, (i.0 << 16) + i.1
	return
#global

	size = 100, 75, 50, 25, 0
	pos 10, 10 : mes "左"
	pos 10, 40 : combox lvol, 100, "100%\n75%\n50%\n25%\n0%"
	pos 80, 10 : mes "右"
	pos 80, 40 : combox rvol, 100, "100%\n75%\n50%\n25%\n0%"
	pos 10, 70 : button gosub "変更", *change
	stop

*change
	setvolume size.rvol, size.lvol // 音量を指定サイズに変更する
	return