音を鳴らす

音を鳴らす

# 音を鳴らす

ここでは、 SDL(Simple DirectMedia Layer) を用いて音を出す方法を説明し ます。(PS2には既にインストールされています) 初期化や再生に関する、簡単 なライブラリを作成しました。ここでの説明は、このライブラリを使用した場 合を想定して解説しています。ライブラリとサンプルプログラムは、以下の場 所に置いてあります。

1
   * ~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` 

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

    }

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy