グラフィック系の関数をある程度扱ったので、次はサウンド系の関数を勉強してみましょう。
サウンドも、グラフィックと考え方はほとんど同じです。読み込み関数を使って素材をロードし、識別番号が返ってきますから、識別番号を使って音を鳴らします。
サウンド素材をロードし、識別番号を返す関数は LoadSoundMem関数 です。LoadSoundMem関数 のリファレンスを確認 してみましょう。
宣言 | int LoadSoundMem( char *FileName ) ; |
概略 | 音声ファイル(WAV.MP3.Ogg)をメモリに読みこむ |
引数 | FileName : メモリに読みこむ音声ファイルのファイル名文字列のポインタ |
引数にはファイルパスを指定します。指定出来るファイルの種類は Wav, Mp3, Ogg の3種類です。
サウンドファイルについての詳しい説明は 補足資料3章 音楽ファイルの種類(Wav, Mp3, Ogg)をご覧ください。
以下に簡単に説明します。
Wav は無圧縮の音楽ファイルです。フォーマットにもよりますが、だいたい1分10[MB]位になり、トンでもない容量を必要とします。
Mp3 は圧縮した音楽ファイルです。ビットレート等によりますが、80kbpsでだいたい1分0.5[MB]位になります。但しMp3には特許が存在します。そこでOggの出番になります。
Ogg はMp3と同等の圧縮が可能なフリーの圧縮形式です。Oggに特許は存在しませんからゲームに同梱しても問題ありません。
さて、話を戻しましょう。
LoadSoundMem関数 にはこの3種類のファイルが指定出来ます。
ロードして返って来た識別番号は PlaySoundMem関数 で再生出来ます。PlaySoundMem関数 のリファレンスを確認 してみましょう。
宣言 | int PlaySoundMem( int SoundHandle , int PlayType ) ; |
概略 | メモリに読みこんだ音声データを再生する |
引数 | SoundHanle : 再生する音の識別番号(サウンドハンドル) PlayType : 再生形式 DX_PLAYTYPE_NORMAL : ノーマル再生 DX_PLAYTYPE_BACK : バックグラウンド再生 DX_PLAYTYPE_LOOP : ループ再生 |
(あまり使用しない引数は省略してあります)
第一引数には先ほど取得した識別番号を指定します。
第二引数には再生形式を指定します。ノーマル再生は普通使用しません。ノーマル再生は関数を呼ぶと鳴り終わるまで処理が止まります。
普通効果音の再生にはバックグラウンド再生を指定します。BGMなどループする必要がある時はループ再生を指定します。
では、サンプルプログラムで、効果音を再生して試してみましょう。
#include "DxLib.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定 int Handle, Count=0; Handle = LoadSoundMem("サウンド/1up.wav"); // サウンド/1up.wavをロードし、識別番号をHandleに格納 // while(裏画面を表画面に反映, メッセージ処理, 画面クリア) while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){ if( Count % 120 == 0 ){ // 2秒に一度 PlaySoundMem( Handle, DX_PLAYTYPE_BACK ); // 効果音を再生する } Count++; } DxLib_End(); // DXライブラリ終了処理 return 0; }
- Remical Soft -