ページ 11

WAVEファイルをDXライブラリでループ再生できない

Posted: 2015年1月04日(日) 20:40
by Praludium

コード:

bool Continues()
{

	if(ScreenFlip()      != 0) return false;
	if(ClearDrawScreen() != 0) return false;
	if(ProcessMessage()  != 0) return false;

	return true;

}

int WINAPI WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR argv, int showsCmd)
{

	// 初期化
	ChangeWindowMode(TRUE);
	DxLib_Init();
	SetDrawScreen(DX_SCREEN_BACK);

	// 音声ファイルの読み込み(foobar.wavは存在するものとする)
	int bgm = LoadSoundMem("./something/foobar.wav");

	// 5000msでループ
	SetLoopPosSoundMem(5000, bgm);

	// 実際に再生する
	PlaySoundMem(bgm, DX_PLAYTYPE_LOOP);

	while(Continues())
	{

		if(CheckHitKey(KEY_INPUT_ESCAPE)) break;

	}

	DxLib_End();
	return 0;

}
以上のコードで何故かループ再生ができません。WAVEファイルはAudacity 2.0.5で書き出したものです。形式のせいなのかと考え、Oggファイルでも試したのですが同じ結果となりました。
何か解決策はありますでしょうか。ご教授ください。

Re: WAVEファイルをDXライブラリでループ再生できない

Posted: 2015年1月04日(日) 21:37
by みけCAT
手元の環境ではループ再生が出来ました。
とりあえずDXライブラリが最新か確認し、最新でなければ最新にしてみてください。

Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB
Dev-C++ 5.8.3
GCC(MinGW) 4.8.1
DXライブラリ Ver3.13b

Re: WAVEファイルをDXライブラリでループ再生できない

Posted: 2015年1月04日(日) 23:01
by Praludium
ありがとうございます。

私自身のループに対する理解が間違っていたのが原因でした。
このコードの場合、5000msでWAVEファイルの先頭に戻って再生するものだとばかり思っていました。WAVEファイルの終端に到達したら5000msに戻る、という動作を頂いたコードで確認することができました。