LoginSignup
8
7

More than 5 years have passed since last update.

C/C++でcross-platformでの音楽再生にはSDL_mixerが便利

Posted at

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);
}
8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7