PlayLoud!!

Since1997

dsoundexを使ったBGM演奏でのループ管理

ゲームでBGMを演奏する際に、どうしても曲のループを考えないといけない。

HSPdsoundexを使用しての話。
前にゲームを作ったときに困ったのが、『ループの際は前奏を飛ばしたい』ということなのだが、よく考えれば現在演奏中のポイントを管理しながら、然るべきタイミングでループしたあとの再生開始ポイントを設定してやれば済むだけの話だった。

以下のスクリプトのように、『ds_getp』で常に曲の再生位置を取得し、曲が最後まで行ったら『ds_setp』でループポイントを設定してやればうまく繰り返し再生できる。
あとは、これをゲームの中でBGMを切り替えて使えるようなルーチンに最適化してやればいいだけか。

	#include "dsoundex.as"

	ds_init
	
	ds_load "a.wav",1
	ds_loop 1

repeat
	getkey flag, 27
	if flag : end

//現在の再生ポイントを取得
	ds_getp 1
	sp = stat

	await

//再生ポイントの判定と、ループポイントの設定
	if sp>2822400 {
	   sp=1411200
           ds_setp 1,sp
	}	
loop

stop