音を鳴らすここでは、 SDL(Simple DirectMedia? Layer) を用いて音を出す方法を説明し ます。(PS2には既にインストールされています) 初期化や再生に関する、簡単 なライブラリを作成しました。ここでの説明は、このライブラリを使用した場 合を想定して解説しています。ライブラリとサンプルプログラムは、以下の場 所に置いてあります。 * ~one/sound/ ... ダウンロード[sound.tgz] ただし、ライブラリの内容は非常に簡単な物なので、もっと複雑な事を行える 汎用的なライブラリに発展させる方が良いでしょう。 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` ※音に関するプログラムの実行は、TVで行うのが一番楽です BGM(バックミュージック)BGMとしてMP3形式のファイルが再生可能です。勿論、その他にも WAVE,MOD,MIDI,OGG等色々な形式のファイルが再生出来ます。
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を使った効果音の再生を解説します。
void hoge() { Mix_Chunk *chunk; init_sdl(); // おまじない effect = Mix_LoadWAV("warp01.wav"); // WAVファイルのロード start_wav(effect,1); // WAVの再生(1回だけ) } |