volsamp.hsp

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
//-------------------------------------------------------------------------