SDL_Mixerって楽ちんすぎ

iPodMini近影@某宴会

STATUS: 故障中

 ゲームのBGM・効果音をどうしようかと思ったんだけど、SDL_Mixer使ってみたらとても簡単でびっくり。
 効果音の同時再生も何も考えずにサポートされる。(同時再生数は指定可能)
 BGMのフェードイン・フェードアウトも簡単。コールバックを書けば独自エフェクトもかけられるみたい。
 サウンド関連だけのためにSDL使ってもいいな。

【はまり中】
 再生用の音楽ファイルとして、mp3とかも使えるみたいだけどよくわからなかった。mp3の読み込みにはsmpegを使えばいいみたいだけど、コンパイル済みのDLLって無いの?

Windows + VisualC++6.0で使うときのメモ

【必要なライブラリ】
SDL
http://www.libsdl.org/release/SDL-devel-1.2.7-VC6.zip
(http://www.libsdl.org/download-1.2.php)

SDL_Mixer
http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-devel-1.2.5a-VC6.zip
(http://www.libsdl.org/projects/SDL_mixer/)

ドキュメント:http://jcatki.no-ip.org/SDL_mixer/SDL_mixer_frame.html

ディレクトリ構成例】
MyProject/                このソース
sdk/SDL-1.2.7/            SDL
sdk/SDL_mixer-1.2.5/    SDL_Mixer

【リンクするライブラリの指定】
..\sdk\SDL-1.2.7\lib\SDL.lib ..\sdk\SDL_mixer-1.2.5\lib\SDL_mixer.lib

【ソース例】
C Magazine 2002/2 P.41のソースをパク^h^h参考にしました

#include "../sdk/SDL-1.2.7/include/SDL.h"
#include "../sdk/SDL_mixer-1.2.5/include/SDL_mixer.h"

// 以下ソースの適当なところに書く

Mix_Music    *music;
Mix_Chunk    *chunk,*chunk2;

SDL_Init(SDL_INIT_AUDIO  );                // SDL初期化

Mix_OpenAudio(22050,AUDIO_S16,2,4096);    // SDL_Mixerオープン

music = Mix_LoadMUS("music.wav");        // 曲ファイルをロード
chunk = Mix_LoadWAV("se1.wav");            // 効果音ファイル1をロード
chunk2 = Mix_LoadWAV("se2.wav");        // 効果音ファイル2をロード

Mix_AllocateChannels(16);                // 同時発声数を設定

Mix_PlayMusic(music,-1);                // 曲の再生スタート(無限ループ)
SDL_Delay(2000);
Mix_PlayChannel( -1,chunk,0 );            // 効果音1再生
SDL_Delay(500);
Mix_PlayChannel( -1,chunk2,0 );            // 効果音2再生 (ちゃんと音が重なる)
SDL_Delay(1000);
Mix_FadeOutMusic(4000);                    // フェードアウト(4000ms)
SDL_Delay(4000);
Mix_HaltMusic();                        // 曲の再生停止

Mix_FreeMusic(music);                    // ロードした曲を開放
Mix_FreeChunk(chunk);                    // ロードした効果音1を開放
Mix_FreeChunk(chunk2);                    // ロードした効果音2を開放
Mix_CloseAudio();                        // SDL_Mixerクローズ

SDL_Quit();                                // SDL使用終了
   

コメント