音を鳴らす

ここでは、 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等色々な形式のファイルが再生出来ます。

  • 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回だけ)
	}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-03-10 (土) 18:37:42 (2827d)