目次 - 4.関数 - 4.5音楽 - Mix_SetMusicCMD

# Mix_SetMusicCMD

`int Mix_SetMusicCMD(const char *command)`

command
  システムの音楽を再生するコマンド. コマンドラインのファイル名を除く完全なコマンドである必要がある. ファイル名はその後に追加される. NULLのとき外部コマンドの使用を止め, 内部の音楽再生機能に戻す

音楽の再生で使うコマンドラインのプレイヤーを設定する 再生中の音楽は全て停止する. 再生する音楽ファイルはMix_LoadMUSで設定する. このファイル名はコマンドラインの最後に追加される. これにより複数の音楽ファイルを再生できる. このコマンドは, 停止のときSIGTERM, 一時停止のときSIGSTOP, 一時停止解除のときSIGCONTを受け取る. コマンドのプログラムはSDL_mixerの関数が正しく動作するようにこれらのシグナルを処理する必要がある. 外部プレイヤーの場合は, Mix_VolumeMusicは無効で, Mix_GetErrorはエラーコードが設定される. 音楽のボリュームは対応していればプレイヤーのコマンドで設定する必要がある. 音楽プレイヤーのプロセスが終了したとき再びコマンドを呼ぶことでループする. コマンドによる音楽の再生はフォークされたプロセスで行われる. NULLを設定すると内部音楽プレイヤーを使う.

メモ: 外部で再生された音楽はSDL_mixerではミキシングできず, 後処理フックでは扱えない.

メモ: ドライバがオーディオデバイスの複数オープンに対応していない場合, 外部コマンドによる音楽の再生はできない. SDL_mixerがすでにサンプリング音声のためにオーディオデバイスを開いているためである.

メモ: コマンドのない環境もあるため注意する必要がある.

戻り値: 成功のとき0, メモリがないなど失敗のとき-1

## サンプルコード

`

    // mpg123で音楽を再生する
    Mix_Music *music=NULL;
    if(Mix_SetMusicCMD("mpg123 -q")==-1) {
        perror("Mix_SetMusicCMD");
    } else {
        // 適当なMP3ファイルを再生する
        music=Mix_LoadMUS("music.mp3");
        if(music) {
            Mix_PlayMusic(music,1);
        }
    }

`

## 参照

Mix_PlayMusic, Mix_VolumeMusic

## 原文へのリンク

4.5.14 Mix_SetMusicCMD