# 音を鳴らす
ここでは、 SDL(Simple DirectMedia Layer) を用いて音を出す方法を説明し ます。(PS2には既にインストールされています) 初期化や再生に関する、簡単 なライブラリを作成しました。ここでの説明は、このライブラリを使用した場 合を想定して解説しています。ライブラリとサンプルプログラムは、以下の場 所に置いてあります。
|
|
ただし、ライブラリの内容は非常に簡単な物なので、もっと複雑な事を行える 汎用的なライブラリに発展させる方が良いでしょう。 SDL(より詳細には、 SDL_mixer)の詳しい説明は、 このページ に載っています。英語ですが、簡単 な英語で記述されているので、気軽に読んで下さい。様々な関数が用意されて おり、便利かつ面白いです。
# コンパイル
SDLを使用したプログラムをコンパイルするためには、 Makefileにいくつかの 変更が必要です。まず、コンパイルのオプションに、
`sdl-config --cflags`
という記述を追加して下さい。次に、SDLのライブラリを指定します。ライブ ラリを指定するオプションに、
-lSDL_mixer `sdl-config --libs`
という記述を追加して下さい。 PS2 Linux付属のサンプルのMakefileを例にす ると、以下のようになります。
CFLAGS = $(CDEBUGFLAGS) $(DEFINES) $(INCLUDES) -Wall
-fno-common `sdl-config --cflags`
LIBS = -lm -lps2dev -lSDL_mixer `sdl-config --libs`
COLOR(orange){※音に関するプログラムの実行は、TVで行うのが一番楽です}
# BGM(バックミュージック)
BGMとしてMP3形式のファイルが再生可能です。勿論、その他にも WAVE,MOD,MIDI,OGG等色々な形式のファイルが再生出来ます。
-
SDLのAPI void init_sdl(); SDLの初期化(初めに1回だけ実行しておく)
Mix_Music *load_music(char *file_name); 再生したいファイルをロードする。ロードに成功すると、Mix_Music 型のポインタを返す。
void start_music(Mix_Music *music, short times); ロードしたファイルを再生する。第一引数に、load_musicで得たポイ ンタを引き渡して、任意の音楽を再生させる。第二引数には、何回再 生するかを指定する。 -1と指定すると、無限ループ再生する。
-
使用例
void hoge() { Mix_Music *music; // この型の変数を利用して音楽再生する
init_sdl(); // SDLの初期化 music = load_music("./bgm.mp3"); // ファイルのロード start_music(music,1); // BGMスタート(再生は1回だけ) ・・・ Mix_HaltMusic(); // BGMストップ(途中でストップさせたい時に使う)
}
# Sound Effect(効果音)
ここでは、WAVを使った効果音の再生を解説します。
-
簡易ライブラリのAPI void start_wav(Mix_Chunk *chunk, short times); ロードしたファイルを再生する。第一引数に、Mix_LoadWAVで得たポ インタを引き渡して、任意の音楽を再生させる。第二引数には、何回 再生するかを指定する。 -1と指定すると、無限ループ再生する。
-
使用例
void hoge() { Mix_Chunk *chunk;
init_sdl(); // おまじない effect = Mix_LoadWAV("warp01.wav"); // WAVファイルのロード start_wav(effect,1); // WAVの再生(1回だけ)
}