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

Mix_LoadMUSType_RW

形式を指定したオーディオを音楽オブジェクトに読み込む

構文

Mix_Music * Mix_LoadMUSType_RW(SDL_RWops *src, Mix_MusicType type, int freesrc)

引数

src読み込み元のSDL_RWops
typesrcのオーディオ形式
freesrc0以外のときSDL_RWopsを閉じて解放する. 0のとき開いたままにする

戻り値

生成された音楽オブジェクトを戻す. エラーのときNULLを戻す.

詳細

SDL_mixerには2つのオーディオデータ構造がある. 1つは「チャンク」で, これは事前にファイルを完全にメモリにデコードする. もう1つは「音楽」で, ファイルを必要に応じてデコードする. 当初はWAVの様な無圧縮の単純な形式をチャンク, MP3等を音楽として, 1つの音楽をBGMとしてストリーム再生し, チャンクを効果音として繰り返し再生することを意図していた.

現在では形式による違いはなく, ほぼ相互に交換可能で, 事前にデコードした方がアプリケーションにとってよいかの問題となっている. チャンクはより多くのメモリを使用するが, 一度読み込めば再度デコードすることはない. 一方, 音楽は再生のたびに常にデコードする必要がある. さらに決定的なのは, アプリケーションには多くのチャンクのチャネルを確保できるが, 「音楽」チャネルは1つしか提供されていない.

この関数はアプリケーションが形式を指定して音楽データを読み込む. これはSDL_mixerがデータストリームの形式を特定できない場合に有用である.

現在は以下の形式に対応している.

freesrcが0以外のとき, 処理が成功してもしなくても関数から戻るときRWopsは閉じる. どのような場合でもこの関数を呼ぶと必要ならばSDL_mixerは全て読み込む.

簡単のため, SDL_RWopsを扱わずMix_LoadMUS("filename.mp3")のようにディスクからファイルを読み込む関数も存在する.

この関数はファイルの形式を類推しようとする. もし呼び出し側が形式を知っている, または強制したい場合は, 代わりにMix_LoadMUSType_RW()を使うこと. (ただし音楽の形式は指定できない.)

音楽を使用し終えたならば, アプリケーションはMix_FreeMusic()を呼んで解放する必要がある.

バージョン

SDL_mixer 2.0.0以降

関連項目(関数)

Mix_FreeMusic

原文へのリンク

SDL_mixer/Mix_LoadMUSType_RW