sample\hgimg3\volsamp.hsp » Plain Format
//●dmmvolで正しい音量を設定するサンプル
;このサンプルはArue( http://hp.vector.co.jp/authors/VA029904/ )によって
;書かれました。このサンプルはdmmvol命令でデシベル値を直感的に設定するものです。
;hgimg3に直感的なボリュームコントロール命令が実装されるまでの繋ぎとして
;自由にお使いください。
//vol2db p1 ----------------------------------------------------------------
//ボリューム値をデシベル値に変換する関数(0.0〜100.0%を-10000〜0dbに変換する)
//p1:ボリュームを%で設定 0.0〜100.0(実数値)
// ※わかりやすく最大音量を100.0にしてますが、
// maxvolを1.0でボリュームを取れば(p1=0.0〜1.0)、
// ( p1 / maxvol )の式は ( p1 )のみで良くなるため、
// 若干高速化するかもしれません^^;
// vol2db Written by Arue.
#module
#define maxvol 100.0 //ボリュームの最大値を100.0とする。
#defcfunc vol2db double p1
if( p1 < 0.005 ):return -10000.0 //最低値を設定しておかないと0除算してしまう
if p1>maxvol:return 0.0
return ( ( 20.0 * (logf( p1 / maxvol )/logf(10)) ) * 100.0 )
#global
//サンプル ----------------------------------------------------------------
screen 0,400,200
#include "hspogg.as"
dmmini
dmmload dir_exe+"\\sample\\demo\\oot06.ogg",1:dmmplay 1
volume=50,0:gmode 0,4,8
repeat
stick ky,256
redraw 0
color 255,255,255:boxf:color:boxf 100,100,300,102:color ,,255
grect 100+volume*2,100:if ky&256:volume=limit((mousex-100)/2,0,100)
if volume!volume(1):{
dmmvol 1,vol2db(volume):volume(1)=volume
title "ボリューム"+volume+"/db値("+vol2db(volume)+")"
}
redraw 1
await 15
loop
//-------------------------------------------------------------------------