PlayLoud!!

Since1997

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
(それにマシンのスピードによって遅延の状況が変わっちゃう気がする)