目次 - SDL_mixer 3.0

SDL_mixer 3.0 API (アルファベット順)

概要

SDL_mixerは面倒なオーディオ処理を簡単に行えるライブラリである.

これはオーディオファイルのデコード, 複数音源のミキシング, 基本的な立体音響, 様々なエフェクトを提供する.

リアルタイムで複数のオーディオデバイスにミックスすることや, ミックスしたオーディオデータを別の使用のためにメモリバッファに生成することができる. これらを同時に行うこともできる.

このライブラリを使用するには, まずMIX_Init()を呼ぶ. それからMIX_CreateMixerDevice()でミキサーを生成する. (またはMIX_CreateMixer()でメモリに書き込むレンダーを生成する)

ミキサーを生成した後は, MIX_LoadAudio(), MIX_LoadAudio_IO()またはMIX_LoadAudioWithProperties()でオーディオデータを読み込む. 一度読み込んだデータは何度でも再生できる.

オーディオデータの読み込みでは, SDL_mixerはID3やAPEタグのようないくつかのメタデータタグ形式を解析でき, この情報はMIX_GetAudioProperties()関数を経由して表に出すことができる.

オーディオデータの再生のためには, MIX_CreateTrack()でトラックを生成する. 同時に再生するオーディオデータには, それぞれトラックが必要である. トラックはミキサーボード上の一つ一つのスライダーと考えればよい. 何百ものオーディオファイルを読み込もうとしたことがあるかもしれないが, 再生の準備が整ったとき読み込んだファイルを割り当てるトラックはわずかで, これらのトラックは別のオーディオで再利用することになる. トラックはMIX_Audio(複数回再生される静的データ)またはSDL_AudioStream(アプリケーションが必要に応じて提供するストリーミングPCMオーディオ)から入力を受ける. その他の選択肢はSDL_IOStreamからの供給で読み込みと即座のデコードを行うもので, これは一度だけ使用するBGMなどで効果的かもしれない.

入力をMIX_SetTrackAudio(), MIX_SetTrackAudioStream(), またはMIX_SetTrackIOStream()MIX_Trackに割り当てる.

トラックが入力を得た後は, MIX_PlayTrack()で再生を開始する. この関数にはミキシングの機能: ループ, フェードなどを指示する様々なオプションがある.

トラックには"music", "ingame", "ui"のような任意の文字列をタグ付けできる. これらのタグは開始, 停止, 一時停止するトラックの選択を一度に行うために使用できる.

ミキシングパイプラインの重要な部分はコールバックのため, アプリケーションは適切な場所でフックしてミキサーへ向かうオーディオデータの調査や編集を行うことができる: オーディオファイルからデコードされた無編集のPCMデータの"raw"コールバック, 同じデータに全ての変換(フェード, ポジショニングなど)が行われた後の"cooked"コールバック, トラックがミキシングを完了したときの"stopped"コールバック, 最終的なミックスされた音声が再生のためのオーディオハードウェアに送られるときの"postmix"コールバックがある. さらに, MIX_Groupオブジェクトで再生中のトラックの一部をミックスしたり, 別のトラックとミックスする前のデータにアクセスしたりできる. これらは全てオプションだが, 強力なアクセスとミキシング処理の制御を可能にする.

SDL_mixerはオーディオファイルのデコードを実際のミックス以外で使用することもできる. これはMIX_AudioDecoderで行う. アプリケーションのオーディオエンジンとして使用する場合, SDL_mixerはデコードを透過的に扱うため このインターフェースは通常の使用法では必要ないかもしれないが, これは様々なファイル形式にアクセスするために別のオーディオライブラリを使用するとき有用になりうる.

このライブラリは音声のミキシング以外にもいくつかの機能がある: マスターゲインとは別にそれぞれのトラックにゲインを持たせボリュームを調整することができる. また, トラックやミックス後の最終的な出力に「周波数比」を設定して, 速度の上げ下げやピッチの調整を行うことができ, チャンネルマッピングもトラックごとに適用可能で, 指定のオーディオチャネルをどのスピーカーから出力するかを変えることができる.

SDL_mixerのほぼ全てのタイミングはサンプルフレーム単位である. 例えば, Sint16形式のステレオPCMオーディオデータは1サンプルフレーム当たり4バイト(1サンプル当たり2バイト×2チャネル)を消費する. これによりSDL_mixerでは全ての処理をサンプル単位で行うことができ, 実時間とは無関係に動作させることが, 必要ならば実時間よりも早くデータを与えることもできる. 問題なのは, 異なるサンプリングレートのデータは同じ時間でもサンプルフレームの長さが異なることである. これを扱うために変換ルーチンのMIX_TrackMSToFrames(), MIX_TrackFramesToMS()などが提供されている. これらの関数は一度に複数のトラックをミリ秒単位を扱うため, 変換は内部で行う. 詳細な仕様はドキュメントを確認すること.

SDL_mixerは, シンプルな3D位置APIのMIX_SetTrack3DPosition()とMIX_SetTrackStereo()で基本的な位置オーディオも提供する. 前者はシンプルな距離による減衰と空間化処理を行い――ステレオ環境では音が左右に動くように聞こえる――, サラウンドの設定や個々のトラックの移動を行える. 後者のMIX_SetTrackStereo()は音声を前面左から全面右のスピーカに強制し, 必要ならばアプリケーションで左右にパンさせる. どちらのエフェクトも状況に応じて役立ちうる. SDL_mixerには完全な3Dオーディオエンジンにはならないが, 多くの目的で十分な機能がある. より強力な3Dオーディオが必要ならば, OpenALのような正式な3Dライブラリの使用を検討すること.

関数

  1. MIX_AudioFramesToMS
  2. MIX_AudioMSToFrames
  3. MIX_CreateAudioDecoder
  4. MIX_CreateAudioDecoder_IO
  5. MIX_CreateGroup
  6. MIX_CreateMixer - オーディオデータをメモリバッファに生成するミキサーを生成する
  7. MIX_CreateMixerDevice - オーディオデバイスから音声を再生するミキサーを生成する
  8. MIX_CreateSineWaveAudio
  9. MIX_CreateTrack - ミキサーに新しいトラックを生成する
  10. MIX_DecodeAudio
  11. MIX_DestroyAudio - 指定したオーディオを破棄する
  12. MIX_DestroyAudioDecoder
  13. MIX_DestroyGroup
  14. MIX_DestroyMixer - ミキサーを破棄する
  15. MIX_DestroyTrack - 指定したトラックを破棄する
  16. MIX_FramesToMS
  17. MIX_Generate - オーディオデバイスで動作していない場合のミキサーの出力を生成する
  18. MIX_GetAudioDecoder
  19. MIX_GetAudioDecoderFormat
  20. MIX_GetAudioDecoderProperties
  21. MIX_GetAudioDuration
  22. MIX_GetAudioFormat
  23. MIX_GetAudioProperties - MIX_Audioに関連付けられたプロパティを得る
  24. MIX_GetGroupMixer
  25. MIX_GetGroupProperties
  26. MIX_GetMixerFormat - ミキサーが生成するオーディオの形式を得る
  27. MIX_GetMixerFrequencyRatio
  28. MIX_GetMixerGain
  29. MIX_GetMixerProperties
  30. MIX_GetNumAudioDecoders
  31. MIX_GetTaggedTracks
  32. MIX_GetTrack3DPosition
  33. MIX_GetTrackAudio
  34. MIX_GetTrackAudioStream
  35. MIX_GetTrackFadeFrames
  36. MIX_GetTrackFrequencyRatio
  37. MIX_GetTrackGain
  38. MIX_GetTrackLoops
  39. MIX_GetTrackMixer
  40. MIX_GetTrackPlaybackPosition
  41. MIX_GetTrackProperties
  42. MIX_GetTrackRemaining
  43. MIX_GetTrackTags
  44. MIX_Init - SDL_mixerライブラリを初期化する
  45. MIX_LoadAudio - ファイルから再生するオーディオデータを読み込む
  46. MIX_LoadAudio_IO - SDL_IOStreamから再生するオーディオデータを読み込む
  47. MIX_LoadAudioNoCopy
  48. MIX_LoadAudioWithProperties - プロパティグループを通して再生のためのオーディオを読み込む
  49. MIX_LoadRawAudio
  50. MIX_LoadRawAudio_IO
  51. MIX_LoadRawAudioNoCopy
  52. MIX_LockMixer
  53. MIX_MSToFrames
  54. MIX_PauseAllTracks
  55. MIX_PauseTag
  56. MIX_PauseTrack
  57. MIX_PlayAudio - MIX_Audioを管理せずに先頭から末尾まで再生する
  58. MIX_PlayTag
  59. MIX_PlayTrack - トラックの再生を開始(または再開)する
  60. MIX_Quit - SDL_mixerライブラリを終了する
  61. MIX_ResumeAllTracks
  62. MIX_ResumeTag
  63. MIX_ResumeTrack
  64. MIX_SetGroupPostMixCallback
  65. MIX_SetMixerFrequencyRatio
  66. MIX_SetMixerGain
  67. MIX_SetPostMixCallback
  68. MIX_SetTagGain
  69. MIX_SetTrack3DPosition
  70. MIX_SetTrackAudio - MIX_Trackへの入力としてMIX_Audioを設定する
  71. MIX_SetTrackAudioStream - MIX_Trackへの入力としてSDL_AudioStreamを設定する
  72. MIX_SetTrackCookedCallback
  73. MIX_SetTrackFrequencyRatio
  74. MIX_SetTrackGain
  75. MIX_SetTrackGroup
  76. MIX_SetTrackIOStream - MIX_Trackへの入力としてSDL_IOStreamを設定する
  77. MIX_SetTrackLoops
  78. MIX_SetTrackOutputChannelMap
  79. MIX_SetTrackPlaybackPosition
  80. MIX_SetTrackRawCallback
  81. MIX_SetTrackRawIOStream
  82. MIX_SetTrackStereo
  83. MIX_SetTrackStoppedCallback
  84. MIX_StopAllTracks
  85. MIX_StopTag
  86. MIX_StopTrack
  87. MIX_TagTrack
  88. MIX_TrackFramesToMS
  89. MIX_TrackMSToFrames
  90. MIX_TrackPaused
  91. MIX_TrackPlaying
  92. MIX_UnlockMixer
  93. MIX_UntagTrack
  94. MIX_Version

  1. MIX_Audio - オーディオデータを表す不透明オブジェクトの型
  2. MIX_AudioDecoder
  3. MIX_Group
  4. MIX_GroupMixCallback
  5. MIX_Mixer - ミキサーを表す不透明オブジェクトの型
  6. MIX_PostMixCallback
  7. MIX_Track - ミックスされる音源を表す不透明オブジェクトの型
  8. MIX_TrackMixCallback
  9. MIX_TrackStoppedCallback

構造体

  1. MIX_Point3D
  2. MIX_StereoGains

マクロ

  1. SDL_MIXER_MAJOR_VERSION
  2. SDL_MIXER_MICRO_VERSION
  3. SDL_MIXER_MINOR_VERSION
  4. SDL_MIXER_VERSION
  5. SDL_MIXER_VERSION_ATLEAST

SDL Wikiへのリンク

SDL3_mixer/CategorySDLMixer