C/C++でクラスプラットフォームな音楽再生をしたいときに、SLD_mixerが便利という話。
SDLはSimple DirectMedia Layerの略でC言語で書かれたクロスプラットフォームのマルチメディアライブラリ(Wikipediaより)。SDLは低レイヤーのAPIでそのままでは扱いづらいので、より高レイヤーのAPIを提供してくれるのがSDL_mixer。クロスプラットフォームの音楽再生は、portaudioも候補にあがるが、これも低レイヤーで使いづらいので、高レイヤーで手軽に扱いたいときはSDL_mixerが便利だ。
インストール方法
MacならHomebrewで一発。Windowsはよくわかりません。
$ brew install sdl_mixer
使い方
再生するだけならめちゃ簡単
#include <SDL/SDL_mixer.h>
int main() {
if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 1, 4096) < 0) {
printf("Error inesperado");
return 0;
}
Mix_Init(0);
// 音声ファイルをロード
Mix_Music *talk = 0;
talk = Mix_LoadMUS("/path/to/audio");
// ボリュームを0〜128の範囲で指定
Mix_VolumeMusic(64);
// 再生スタート
Mix_PlayMusic(talk, -1);
// 停止
Mix_HaltMusic();
Mix_FreeMusic(talk);
}