int Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize)
ミキサーAPIを初期化する. このライブラリの他の関数を使う前に呼ぶ必要がある. この関数を呼ぶ前に, SDLはSDL_INIT_AUDIOで初期化されている必要がある. frequencyは44100なら44.1KHzで, これはCDの音質である. 多くのゲームは22050を使っている. 44100は古いコンピュータにはCPUの負荷が大きすぎるためである. chunksizeは各ミキシングのサンプルのサイズである. この値を小さくすればするほど, フックが呼ばれる回数が多くなる. この値が小さすぎると, システムが遅くなり, 音が途切れるようになる. 大きくすると効果音が遅れるようになる. 対象のコンピュータにとってよい中間の値が必要だろう. もし, 音楽を再生するだけならば, 4096かそれ以上がよいだろう. デフォルトではMIX_CHANNELS(8)のミキシングチャネルが確保される. この関数は何度でも呼べるが, 同じ回数だけMix_CloseAudioを呼んでデバイスを閉じる必要がある. 完全に閉じるまではこの関数を呼んでも出力形式は変わらない. よって, 別の形式で開く前には完全に閉じなければならないだろう.
formatはSDLが対応するオーディオに基づいている. SDL_audio.hを参照すること. 値のリストは次の通りである:
MIX_DEFAULT_FORMATはAUDIO_S16SYSと同じである.
戻り値: 成功のとき0, 失敗のとき-1
// オーディオ対応でSDLを開始する
if(SDL_Init(SDL_INIT_AUDIO)==-1) {
printf("SDL_Init: %s¥n", SDL_GetError());
exit(1);
}
// 44.1KHz, 16bit符号あり, システムのバイト順, ステレオ, 1024byteチャンクで開く
if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)==-1) {
printf("Mix_OpenAudio: %s¥n", Mix_GetError());
exit(2);
}