dsoundexを使ったBGM演奏でのループ管理 3
検証編
データはこちら(44100Hz,16bit,2ch,tempo 120,12小節)
↓
http://idolmaster.ddo.jp/sound/test.wav
120bpm,12小節なので、もちろん曲はぴったり24秒。
で、以下のようなスクリプトでこれを演奏してみる。
全12小節だが、8小節の終わりまで行ったら、4小節終わりまで戻る。
つまり、5小節目〜8小節終わりの繰り返しに設定。
実行ファイルとソースのパックはこちら
#include "dsoundex.as"
ds_init
ds_load "test.wav",1
si = stat
ds_loop 1
repeat
getkey flag, 27
if flag : end
getkey flag, 32
if flag : stop
ds_getp 1
sp = stat
cls
pos 0,0
mes "現在の演奏ポイント:" + sp
pos 0,32
mes "バッファサイズ:" + si
await
if sp>2822400 {
sp=1411200
ds_setp 1,sp
}
loop
stop……むむ!?
なんか遅れがある感じ……??
う〜ん……シビアなタイミングで演奏ポイントを設定すると、遅延が生じるみたいだ。
今後の課題か。
※追記
if文の、
sp>2822400
って条件を、
sp>2816000
ぐらいにするとちょうどいい感じ……って、それじゃあ試行錯誤と変わらないよ orz
(それにマシンのスピードによって遅延の状況が変わっちゃう気がする)