= Audio
* ((<Audio 機能概説>))
* ((<利用可能な音楽/音声フォーマット>))
* ((<SDL::Mixer::Wave>))
* ((<SDL::Mixer::Music>))
* Audio関連メソッド
  * ((<SDL::Mixer.open>)) -- Audio関連APIの初期化をします。
  * ((<SDL::Mixer.spec>)) -- 初期化したデバイスが実際に使っているフォーマットを得ます。
  * ((<SDL::Mixer.driver_name>)) -- 初期化したデバイスの名前を得ます
  * ((<SDL::Mixer::Wave.load>)) -- ファイルから音声をロードする。
  * ((<SDL::Mixer::Wave.load_from_io>)) -- IOオブジェクトから音声をロードする。
  * ((<SDL::Mixer::Wave#destroy>)) -- オーディオデータを解放します
  * ((<SDL::Mixer::Wave#destroyed?>)) -- オーディオデータを解放したかどうかを返します。
  * ((<SDL::Mixer::Music.load>)) -- ファイルから音楽データをロードする。
  * ((<SDL::Mixer::Music.load_from_string>)) -- 文字列から音楽データをロードする。
  * ((<SDL::Mixer::Music#destroy>)) -- 音楽データを解放します
  * ((<SDL::Mixer::Music#destroyed?>)) -- 音楽データを解放したかどうかを返します。
  * ((<SDL::Mixer::Wave#set_volume>)) -- ボリュームを設定します。
  * ((<SDL::Mixer.allocate_channels>)) -- チャンネル数を設定します。
  * ((<SDL::Mixer.set_volume>)) -- 指定したチャンネルのボリュームを変更します。
  * ((<SDL::Mixer.play_channel>)) -- 指定したチャンネルで音声を再生します。
  * ((<SDL::Mixer.play_channel_timed>)) -- 指定したチャンネルで指定した時間だけ音声を再生します。
  * ((<SDL::Mixer.fade_in_channel>)) -- 指定したチャンネルで音声をフェイドインして再生します。
  * ((<SDL::Mixer.fade_in_channel_timed>)) -- 指定したチャンネルで音声をフェイドインして指定した時間だけ再生します。
  * ((<SDL::Mixer.pause>)) -- 指定したチャンネルの再生を一時停止します。
  * ((<SDL::Mixer.resume>)) -- 指定したチャンネルの再生を再開する。
  * ((<SDL::Mixer.halt>)) -- 指定したチャンネルの再生を止めます。
  * ((<SDL::Mixer.expire>)) -- 指定したミリ秒後に再生を停止します。
  * ((<SDL::Mixer.fade_out>)) -- 指定したチャンネルをフェードアウトします。
  * ((<SDL::Mixer.play?>)) -- 指定したチャンネルが再生中であるかどうかを得る。
  * ((<SDL::Mixer.playing_channels>)) -- 再生中のチャンネルの数を得ます
  * ((<SDL::Mixer.pause?>)) -- 指定したチャンネルが一時停止中かどうかを得る。
  * ((<SDL::Mixer.fading>)) -- 指定したチャンネルがフェードイン/フェードアウトしているかどうかを得る
  * ((<SDL::Mixer.play_music>)) -- 音楽を演奏します。
  * ((<SDL::Mixer.fade_in_music>)) -- 音楽をフェードインして演奏します。
  * ((<SDL::Mixer.set_volume_music>)) -- 音楽演奏の音量を設定します。
  * ((<SDL::Mixer.pause_music>)) -- 音楽の演奏を一時停止します。
  * ((<SDL::Mixer.resume_music>)) -- 音楽の演奏を再開します。
  * ((<SDL::Mixer.rewind_music>)) -- 演奏位置を最初に移動します。
  * ((<SDL::Mixer.halt_music>)) -- 音楽の演奏を止めます。
  * ((<SDL::Mixer.fade_out_music>)) -- 音楽演奏をフェードアウトして停止します。
  * ((<SDL::Mixer.play_music?>)) -- 音楽が演奏中かどうかを得ます。
  * ((<SDL::Mixer.pause_music?>)) -- 音楽が一時停止中かどうかを得る。
  * ((<SDL::Mixer.fading_music>)) -- 音楽演奏のフェードイン/アウトの情報を得ます。

== Audio 機能概説
SDLはポータブルで低レベルなオーディオ出力機能を持っています。
低レベルな機能をRubyから直接利用するのは問題があるため、
Ruby/SDLでは高レベルな SDL_mixer ライブラリを経由した
音声出力機能のみ提供します。そのためオーディオ出力機能を利用するため
には SDL_mixer ライブラリをインストールする必要があります。

SDL_mixer ライブラリは一般的な需要に答えるため、
単純は複数チャンネル同時演奏ができる音声ミキシング機能を提供します。
16ビットステレオが8チャンネル音声出力と、
MOD/MIDI/MP3などによる音楽演奏1チャンネルが利用可能です。

このように音声出力と音楽演奏が分けられているのは、主に実装上の
理由です。「音声出力」が効果音、「音楽演奏」がBGMと考えれば良いでしょう。
音声には ((<SDL::Mixer::Wave>)) クラスが、音楽には ((<SDL::Mixer::Music>)) クラスが対応し
ています。

MIDIファイルの演奏はCPUに負荷をかけるため、普通のWAVEファイルは
ちゃんと聞こえるのに、MIDIファイルを演奏するとひどい音がする
ということがあります。
その場合は、8-bit出力やモノラル出力、低い周波数を試してください。

MIDIファイルを演奏するためには、
((<Timidity GUS Patches|URL:http://www.libsdl.org/projects/mixer/timidity/timidity.tar.gz>))
を適切な場所(UNIXでは /use/local/lib, Windowsでは C:\)に展開してください。

== 利用可能な音楽/音声フォーマット

Ruby/SDL では以下の音楽/音声フォーマットが利用可能です。
* WAVE/RIFF (.wav)
* AIFF (.aiff)
* VOC (.voc)
* MOD (.mod .xm .s3m .669 .it .med など)
* MIDI (.mod) timidity利用もしくはMIDIハードウェアを利用
* OggVorbis (.ogg) ogg/vorbis ライブラリが必要
* MP3 (.mp3) SMPEG ライブラリが必要

現在、MP3の再生には問題があることが確認されています。
おそらくSMPEGの問題と考えられるのですが、修正されていません。
OggVorbisを代わりに使ってください。

== SDL::Mixer
audio関連のクラスや関数を持つモジュールです。

== SDL::Mixer::Wave
複数チャンネルによる合成が可能な音声データを表わすクラスです。
WAVE,  AIFF, RIFF, OGG, VOC に対応しています。

== SDL::Mixer::Music
音楽データを表わすクラスです。
WAVE, MOD, MIDI, OGG, MP3 に対応しています。

== Audio関連メソッド

--- SDL::Mixer.open(frequency=Mixer::DEFAULT_FREQUENCY,format=Mixer::DEFAULT_FORMAT,cannels=Mixer::DEFAULT_CHANNELS,chunksize=4096)

    Audio関連APIの初期化をします。他のAudio関連のメソッドを呼ぶ前にこれを
    呼ぶ必要があります。またこれを呼ぶ前に((<SDL.init>))(SDL::INIT_AUDIO)を呼ば
    なくてはなりません。
    CDと同じ44.1KHzのサンプリングレートを使いたいときは ((|frequency|)) として
    44100を与えてください。44100では古いコンピュータではCPUパワーを使いすぎる
    のでゲームではたいてい22050を使います。
    定数 Mixer::DEFAULT_FREQUENCY はこの 22050 を表わします。
    ((|chunksize|)) はそれぞれのチャンネルに割当てられるメモリの量(byte単位)です。
    遅いコンピュータ上で ((|chunksize|)) を小さくすると、音が途切れる可能性が
    あります。また、((|chunksize|)) を大きくしすぎると、効果音の発生が遅延します。
    対象のコンピュータに合わせてちょうどよい値を設定してください。
    単に音楽を演奏したいだけなら、4096以上にしておけば良いでしょう。
    デフォルトでは8(定数Mixer::CHANNELS)チャンネルが確保されます。
    
    ((|format|)) は以下のものが利用できます。
    :SDL::Mixer::FORMAT_U8
        Unsigned 8-bit samples
    :SDL::Mixer::FORMAT_S8
        Signed 8-bit samples
    :SDL::Mixer::FORMAT_U16LSB
        Unsigned 16-bit samples, in little-endian byte order
    :SDL::Mixer::FORMAT_S16LSB
        Signed 16-bit samples, in little-endian byte order
    :SDL::Mixer::FORMAT_U16MSB
        Unsigned 16-bit samples, in big-endian byte order
    :SDL::Mixer::FORMAT_S16MSB
        Signed 16-bit samples, in big-endian byte order
    :SDL::Mixer::FORMAT_U16
        same as FORMAT_U16LSB (for backwards compatability probably)
    :SDL::Mixer::FORMAT_S16
        same as FORMAT_S16LSB (for backwards compatability probably)
    :SDL::Mixer::FORMAT_U16SYS
        Unsigned 16-bit samples, in system byte order
    :SDL::Mixer::FORMAT_S16SYS
        Signed 16-bit samples, in system byte order
    
    SDL::DEFAULT_FORMAT は SDL::Mixer::FORMAT_S16SYS を指します。
    
    ((|channels|)) は 1 でモノラル、2でステレオ出力を指定します。
    Mixer::DEFAULT_CHANNELS は 2 です。

    失敗したときには例外((<SDL::Error>))を発生させます。


    EXAMPLE
      # SDLを初期化、Audio機能を有効にする。
      SDL.init(SDL::INIT_AUDIO)
      # 44.1KHz, signed 16bit, system byte order, ステレオ出力、
      # 1024 byte チャンクサイズ
      SDL::Mixer.open(44100, SDL::Mixer::DEFAULT_FORMAT, 2, 1024)

    * NOTES

      音の発生が遅延する場合はここで与えるパラメータを変えると
      改善される場合があります。
      ((|frequency|)) を 22050 にしたり、((|chunksize|)) を2048や1024などと
      小さくしたりしてみてください。((|format|)) を変えるのが有効な場合もあります。

    * See Also
      
      ((<SDL::Mixer.spec>)), ((<SDL::Mixer.allocate_channels>))

--- SDL::Mixer.spec

    初期化したデバイスが実際に使っているフォーマットを得ます。これは
    ((<SDL::Mixer.open>)) に与えたパラメータと同じ場合もありますし違う場合もあります。
    返り値は [frequency, format, channels] という配列です。詳しい意味は
    ((<SDL::Mixer.open>)) を参照してください。

    失敗したときには例外((<SDL::Error>))を発生させます。


    EXAMPLE
      frequency, format, channels = SDL::Mixer.spec
      format_str = case format
      when SDL::Mixer::AUDIO_U8 then "U8"
      when SDL::Mixer::AUDIO_S8 then "S8"
      when SDL::Mixer::AUDIO_U16LSB then "U16LSB"
      when SDL::Mixer::AUDIO_S16LSB then "S16LSB"
      when SDL::Mixer::AUDIO_U16MSB then "U16MSB"
      when SDL::Mixer::AUDIO_S16MSB then "S16MSB"
      end
      
      printf "frequency=%dHz format=%s channels=%d", frequency, format_str, channels

    * See Also
      
      ((<SDL::Mixer.open>))

--- SDL::Mixer.driver_name
--- SDL::Mixer.driverName

    現在使われているオーディオデバイスの名前を文字列で得ます。

    ((<SDL::Mixer.open>)) による初期化がまだされていない場合は
    例外 ((<SDL::Error>)) が発生します。

    * See Also
      
      ((<SDL::Mixer.open>))

--- SDL::Mixer::Wave.load(filename)

    ((|filename|)) から音声をロードします。
    WAVE, AIFF, RIFF, OGG, VOC に対応しています。

    失敗したときには例外((<SDL::Error>))を発生させます。

    * NOTES

      これを呼ぶ前に ((<SDL::Mixer.open>)) を呼んでおく必要があります。
      
      OGGをロードした場合、ロード時にすべてのデータがメモリ上にRAWデータとして
      展開されるので、メモリ使用量に注意してください。

--- SDL::Mixer::Wave.load_from_io(io)
--- SDL::Mixer::Wave.loadFromIO(io)

    ((|io|))から音声をロードします。((|io|))にはRubyのIOオブジェクト
    (IO, StringIOなどread, tell, rewindを持つオブジェクト)を指定します。
    WAVE, AIFF, RIFF, OGG, VOC に対応しています。

    失敗したときには例外((<SDL::Error>))を発生させます。

    * NOTES

      これを呼ぶ前に ((<SDL::Mixer.open>)) を呼んでおく必要があります。
      
      OGGをロードした場合、ロード時にすべてのデータがメモリ上にRAWデータとして
      展開されるので、メモリ使用量に注意してください。

--- SDL::Mixer::Wave#destroy

    オーディオデータが占めていたリソースを解放します。
    解放後は一切の操作ができなくなります。

    * See Also
      
      ((<SDL::Mixer::Wave#destroyed?>))

--- SDL::Mixer::Wave#destroyed?

    ((<SDL::Mixer::Wave#destroy>))によって
    オーディオデータを解放したかどうかを真偽値で返します。

    * See Also
      
      ((<SDL::Mixer::Wave#destroy>))

--- SDL::Mixer::Music.load(filename)

    ((|filename|)) から音楽データをロードします。
    WAVE, MOD, MIDI, OGG, MP3 に対応しています。

    失敗したときには例外((<SDL::Error>))を発生させます。

    * NOTES

      Windowsでは環境によってはMP3がロードできないことがあります。

--- SDL::Mixer::Music.load_from_string(str)
--- SDL::Mixer::Music.loadFromString(str)

    ((|str|))から音楽データをロードします。((|str|))には音楽データのバイナリ文字列
    を与えます。
    MOD, OGG に対応しています。

    失敗したときには例外((<SDL::Error>))を発生させます。

    * NOTES

      内部的に ((|str|)) をコピーして別に保持しているため、メモリの使用量に
      注意してください。
      
      Windowsではこのメソッドが使えない場合があります。

--- SDL::Mixer::Music#destroy

    音楽データが占めていたリソースを解放します。
    解放後は一切の操作ができなくなります。

    * See Also
      
      ((<SDL::Mixer::Music#destroyed?>)), ((<SDL::Mixer::Wave#destroy>))

--- SDL::Mixer::Music#destroyed?

    ((<SDL::Mixer::Music#destroy>))によって
    音楽データを解放したかどうかを真偽値で返します。

    * See Also
      
      ((<SDL::Mixer::Music#destroy>)), ((<SDL::Mixer::Wave#destroyed?>))

--- SDL::Mixer::Wave#set_volume(volume)
--- SDL::Mixer::Wave#setVolume(volume)

    ボリュームを ((|volume|)) に設定します。ボリュームは 0 から 128 までの
    値を指定します。

--- SDL::Mixer.allocate_channels(num_channels)
--- SDL::Mixer.allocateChannels(num_channels)

    ミキシングするチャンネル数を設定します。この関数は何度呼んでもかまいません。
    音声再生中に呼んでもかまいません。もし新たなチャンネル数が以前のものより
    小さいならば、大きいほうのチャンネルは再生を停止し、リソースを解放し、
    ミキシングされなくなります。1秒間に1000回もチャンネル数を変更させるような
    ことはしないほうがよいでしょう。

    確保したチャンネル数を返します。


    EXAMPLE
      # 16チャンネル確保
      SDL::Mixer.allocate_channels(16)

    * NOTES

      もし ((|num_channels|)) に 0 を与えたならば、たとえ再生中でも
      すべてのチャンネルを解放してしまいます。

--- SDL::Mixer.set_volume(channel, volume)
--- SDL::Mixer.setVolume(channel, volume)

    ((|channel|)) で指定したチャンネルのボリュームを ((|volume|)) に設定します。
    ((|channel|)) に -1 を指定した場合はすべてのチャンネルのボリュームを
    一度に変更します。このボリュームは最終ミキシング時に適用されるものであり、
    ((<SDL::Wave#set_volume>)) で指定したものとは独立に作用します。つまり指定したチャンネル
    で再生する音をすべて半分の大きさにしたい場合は、 ((|volume|)) として64を指定
    してください。すべてのチャンネルはデフォルトでは音量は 128、 つまり最大
    の値に設定されています。((<SDL::Mixer.allocate_channels>)) で新たに確保された
    チャンネルの音量は 128 に設定されます。そのため ((|volume|)) に -1 を指定して
    すべてのチャンネルの音量を変更した後、新たなチャンネルを確保すると、
    そのチャンネルは音量変更の効果を受けません。

    現在のボリュームを返します。((|channel|)) として -1 を与えた場合は
    すべてのチャンネルの平均を返します。

    * See Also
      
      ((<SDL::Mixer::Wave#set_volume>)), ((<SDL::Mixer.set_volume_music>))

--- SDL::Mixer.play_channel(channel, wave, loops)
--- SDL::Mixer.playChannel(channel, wave, loops)

    ((|channel|)) で指定したチャンネルで ((|wave|)) で指定した音声(((<SDL::Mixer::Wave>))
    のインスタンス)を再生します。 ((|channel|)) に -1 を指定した場合は使われていない
    チャンネルの中で一番若いものが使われます。((|loops|)) + 1 回繰り返し演奏されます。
    ((|loops|)) に -1 を指定すると無限に繰り返します。

    どのチャンネルを使って再生したかを整数で返します。


    EXAMPLE
      # 使われていないチャンネルを使って sample を再生する
      # 繰り返しはしない
      SDL::Mixer.play_channel(-1, sample, 0)

    * See Also
      
      ((<SDL::Mixer.play_channel_timed>)), ((<SDL::Mixer.fade_in_channel>)), ((<SDL::Mixer.halt>)), ((<SDL::Mixer.expire>))

--- SDL::Mixer.play_channel_timed(channel, wave, loops, ticks)
--- SDL::Mixer.playChannelTimed(channel, wave, loops, ticks)

    ((|wave|)) が十分長い、もしくは ((|loops|)) が十分大きい場合に
    ((|ticks|)) ミリ秒だけ再生します。
    他は ((<SDL::Mixer.play_channel>)) と同じです。


    EXAMPLE
      # 使われていないチャンネルを使って sample を 1/2秒再生する
      SDL::Mixer.play_channel(-1, sample, -1, 500)

    * See Also
      
      ((<SDL::Mixer.play_channel>)), ((<SDL::Mixer.fade_in_channel_timed>)), ((<SDL::Mixer.fade_out>)), ((<SDL::Mixer.halt>)), ((<SDL::Mixer.expire>))

--- SDL::Mixer.fade_in_channel(channel, wave, loops, ms)
--- SDL::Mixer.fadeInChannel(channel, wave, loops, ms)

    指定したチャンネルで音声をフェイドインして再生します。
    ((|ms|)) ミリ秒かけてフェイドイン再生する点以外は ((<SDL::Mixer.play_channel>)) と
    同じです。


    EXAMPLE
      # 使われていないチャンネルを使って
      # sample を1秒かけてフェードインして3回再生する
      SDL::Mixer.fade_in_channel(-1, sample, 2, 1000)

    * See Also
      
      ((<SDL::Mixer.play_channel>)), ((<SDL::Mixer.fade_in_channel_timed>)), ((<SDL::Mixer.fading>)), ((<SDL::Mixer.fade_out>)), ((<SDL::Mixer.halt>)), ((<SDL::Mixer.expire>))

--- SDL::Mixer.fade_in_channel_timed(channel, wave, loops, ms, ticks)
--- SDL::Mixer.fadeInChannelTimed(channel, wave, loops, ms, ticks)

    指定したチャンネルで音声をフェイドインして指定した時間だけ再生します。
    ((|ms|)) ミリ秒かけてフェイドイン再生する点以外は ((<SDL::Mixer.play_channel_timed>)) と
    同じです。

    * See Also
      
      ((<SDL::Mixer.play_channel_timed>)), ((<SDL::Mixer.fade_in_channel>)), ((<SDL::Mixer.fading>)), ((<SDL::Mixer.fade_out>)), ((<SDL::Mixer.halt>)), ((<SDL::Mixer.expire>))

--- SDL::Mixer.pause(channel)

    ((|channel|)) で指定したチャンネルの再生を一時停止します。
    ((|channel|)) に -1 を指定するとすべてのチャンネルを停止します。
    これで一時停止したチャンネルを ((<SDL::Mixer.halt>)) で完全に停止してもかま
    いません。


    EXAMPLE
      # すべての音声再生を停止する
      SDL::Mixer.pause(-1)

    * See Also
      
      ((<SDL::Mixer.resume>)), ((<SDL::Mixer.pause?>)), ((<SDL::Mixer.halt>))

--- SDL::Mixer.resume(channel)

    ((<SDL::Mixer.pause>)) で再生を停止していたチャンネルの再生を再開します。
    ((|channel|)) で再開するチャンネルを指定します。-1 を与えると
    すべてのチャンネルで再開します。

    * See Also
      
      ((<SDL::Mixer.pause>)), ((<SDL::Mixer.pause?>))

--- SDL::Mixer.halt(channel)

    ((|channel|)) で指定したチャンネルの再生を止めます。-1を与えた場合は
    すべてのチャンネルの再生を止めます。

    * See Also
      
      ((<SDL::Mixer.expire>)), ((<SDL::Mixer.fade_out>))

--- SDL::Mixer.expire(channel, ticks)

    ((|ticks|)) ミリ秒後に、((|channel|)) で指定したチャンネルの再生を停止します。
    ((|channel|)) に -1 を与えるとすべてのチャンネルを停止します

    停止するチャンネルの数を返します。


    EXAMPLE
      # 2秒後に全てのチャンネルの再生を停止する
      SDL::Mixer.expire(-1, 2000)

    * See Also
      
      ((<SDL::Mixer.halt>)), ((<SDL::Mixer.fade_out>))

--- SDL::Mixer.fade_out(channel, ms)
--- SDL::Mixer.fadeOut(channel, ms)

    この関数を呼んだ時点から ((|ms|)) ミリ秒かけて ((|channel|)) をフェードアウトします。
    フェードアウトが完了したらそのチャンネルは再生を停止します。
    また、((|channel|)) に-1を渡すとすべてのチャンネルをフェードアウトします。
    再生中のチャンネルしか影響を及ぼしませんが、一時停止中のものも
    影響を受けます。

    フェードアウトするチャンネルの数を返します。


    EXAMPLE
      # すべてのチャンネルを3秒でフェードアウトする
      printf "starting fade out of %d channels", SDL::Mixer.fade_out(-1, 3000)

    * See Also
      
      ((<SDL::Mixer.fade_in_channel>)), ((<SDL::Mixer.fade_in_channel_timed>)), ((<SDL::Mixer.fading>))

--- SDL::Mixer.play?(channel)

    ((|channel|)) で指定したチャンネルが再生中であるなら
    true を、なければ false を返す。

    * See Also
      
      ((<SDL::Mixer.pause?>)), ((<SDL::Mixer.fading>)), ((<SDL::Mixer.play_channel>)), ((<SDL::Mixer.pause>))

--- SDL::Mixer.playingChannels
--- SDL::Mixer.playing_channels

    再生中のチャンネルの数を返します。

    * See Also
      
      ((<SDL::Mixer.pause?>)), ((<SDL::Mixer.fading>)), ((<SDL::Mixer.play_channel>)), ((<SDL::Mixer.pause>))

--- SDL::Mixer.pause?(channel)

    指定したチャンネルが一時停止中なら真を、なければ偽を返す。

    * See Also
      
      ((<SDL::Mixer.play?>)), ((<SDL::Mixer.pause>)), ((<SDL::Mixer.resume>))

--- SDL::Mixer.fading(which)

    指定したチャンネルがフェードアウトしているなら SDL::Mixer::FADING_OUT を、
    フェードインしている最中なら SDL::Mixer::FADING_IN を、
    どちらでもなければ SDL::Mixer::NO_FADING を返す。

    * See Also
      
      ((<SDL::Mixer.play?>)), ((<SDL::Mixer.pause?>)), ((<SDL::Mixer.fade_in_channel>)), ((<SDL::Mixer.fade_in_channel_timed>)), ((<SDL::Mixer.fade_out>))

--- SDL::Mixer.play_music(music, loops)
--- SDL::Mixer.playMusic(music, loops)

    ((|music|)) で指定した音楽を
    ((|loop|)) 回最初から最後まで演奏します。((|loops|)) に -1 を指定すると
    永遠に演奏を繰り返します。
    前に演奏していていた音楽は演奏を停止します。フェードアウトの最中にある
    場合はフェードアウトが終わってから次のを演奏します。

    失敗したときには例外((<SDL::Error>))を発生させます。

    * See Also
      
      ((<SDL::Mixer.fade_in_music>))

--- SDL::Mixer.fade_in_music(music, loops, ms)
--- SDL::Mixer.fadeInMusic(music, loops, ms)

    ((|music|)) で指定した音楽を ((|ms|)) ミリ秒かけてフェードインして演奏を開始します。
    ((|loops|)) 回繰り返し演奏します。-1 を与えると永遠に繰り返します。
    繰り返しの最初の1回目のみフェードインします。
    その時点で演奏していた曲は停止します。フェードアウトの最中にある
    場合はフェードアウトが終わってから次のを演奏します。

    失敗したときには例外((<SDL::Error>))を発生させます。

    * See Also
      
      ((<SDL::Mixer.play_music>))

--- SDL::Mixer.set_volume_music(volume)
--- SDL::Mixer.setVolumeMusic(volume)

    音楽演奏の音量を ((|volume|)) に設定します。0 が最小で 128 が最大です。
    フェードイン/アウト中にこのモジュール関数を呼んでも効果がありません。
    なぜならフェードイン/アウトを実現するためにこれを使っているからです。

    * See Also
      
      ((<SDL::Mixer.fade_in_music>)), ((<SDL::Mixer.fade_out_music>))

--- SDL::Mixer.pause_music
--- SDL::Mixer.pauseMusic

    音楽の演奏を一時停止します。時停止中でも ((<SDL::Mixer.halt_music>)) で
    演奏を止めることができます。

    * See Also
      
      ((<SDL::Mixer.resume_music>)), ((<SDL::Mixer.pause_music?>)), ((<SDL::Mixer.halt_music>))

--- SDL::Mixer.resume_music
--- SDL::Mixer.resumeMusic

    ((<SDL::Mixer.pause_music>)) で一時停止している音楽を再開します。

    * See Also
      
      ((<SDL::Mixer.pause_music>)), ((<SDL::Mixer.pause_music?>))

--- SDL::Mixer.rewind_music
--- SDL::Mixer.rewindMusic

    演奏位置を最初に移動します。音楽が演奏中、停止中、一時停止中、いずれの
    場合に呼んでも問題ありません。
    
    このモジュール関数は MOD, OGG, MP3, Native MIDI の場合のみに
    使えます。

--- SDL::Mixer.halt_music
--- SDL::Mixer.haltMusic

    音楽の演奏を止めます。
    フェードイン/アウト中でもすぐ停止します。

    * See Also
      
      ((<SDL::Mixer.fade_out_music>))

--- SDL::Mixer.fade_out_music(ms)
--- SDL::Mixer.fadeOutMusic(ms)

    音楽演奏を ((|ms|)) ミリ秒かけてフェードアウトして停止します。
    一時停止中の場合にも効果があります。

--- SDL::Mixer.play_music?
--- SDL::Mixer.playMusic?

    音楽が演奏中なら真を、なければ偽を返します。

    * See Also
      
      ((<SDL::Mixer.pause_music?>)), ((<SDL::Mixer.fading_music>)), ((<SDL::Mixer.play_music>))

--- SDL::Mixer.pause_music?
--- SDL::Mixer.pauseMusic?

    一時停止中なら true を、なければ false を返す。

    * See Also
      
      ((<SDL::Mixer.play_music?>)), ((<SDL::Mixer.pause_music>)), ((<SDL::Mixer.resume_music>))

--- SDL::Mixer.fading_music
--- SDL::Mixer.fadingMusic

    音楽演奏がフェードアウトしているなら SDL::Mixer::FADING_OUT を、
    フェードインしている最中なら SDL::Mixer::FADING_IN を、
    どちらでもなければ SDL::Mixer::NO_FADING を返す。

    * See Also
      
      ((<SDL::Mixer.fading>)), ((<SDL::Mixer.pause_music?>)), ((<SDL::Mixer.play_music?>)), ((<SDL::Mixer.fade_out_music>))

