SDL_Mixerって楽ちんすぎ
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使用終了