>> ゲームプログラミング入門トップに戻る

メモリに読み込んで音声を再生する

今回は音声をメモリに読み込んで再生する方法を説明します。

まずファイルをメモリに読み込む為に、LoadSoundMem関数を使います。
引数はファイル名だけです。
関数が成功すると、サウンドハンドルが返ります。エラーだとー1を返します。

今度はこのサウンドハンドルを、PlaySoundMem関数に渡して、
音声を再生します。
第一引数にはサウンドハンドル。
第二引数は再生形式。
第三引数は、再生後に再生位置を先頭に戻すかどうかを示すbool値を指定します。
TRUEだと再生位置を先頭に戻し、FALSEだと戻しません。

以下にサンプルを示します。

#include "DxLib.h"

// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode(TRUE);

	if( DxLib_Init() == -1 )		// DXライブラリ初期化処理
	{
		return -1 ;			// エラーが起きたら直ちに終了
	}
	
	char key[256];

	//サウンドハンドル取得。
	int sh;
	sh=LoadSoundMem("bom.wav");

	
	//描画先を裏画面に設定
	SetDrawScreen(DX_SCREEN_BACK);

	while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(key)==0){


		if(key[KEY_INPUT_RETURN]==1){
			PlaySoundMem(sh,DX_PLAYTYPE_BACK,TRUE);
		}
		
	}

	DxLib_End() ;				// DXライブラリ使用の終了処理

	return 0 ;				// ソフトの終了 
}

bom.wavというwaveファイルをプロジェクトファイルがあるフォルダと同じフォルダに置いて実行し、
エンターキーを押すと音がなります。
再生中でもすぐ制御を返すので、押しっぱなしにするとすごいうるさいです(笑)

この関数を使うとファイルを直接読んで再生するPlaySoundFile関数より高速に動作します。

今回の説明は以上です。
次回はサウンドを止める方法を説明します。

>> 【音声を止める】に進む
>> ゲームプログラミング入門トップに戻る