ホーム
> iPhone Dev > iPhone+OpenAL入門
iPhone+OpenAL入門
移転しました→ http://d.hatena.ne.jp/Yusk/
最近作ったアプリで、独自ピッカーを動かす際に効果音を鳴らそうと思って、まず最も実装が簡単であろうAVFoundationを使ってみた。すると、ピッカーをゆっくり動かす分には問題ないのだが、少しでも速く動かすと、再生遅延が起こってうまく再生されず、最悪の場合再生されなくなってしまった。
そこで、遅延が少ないらしいOpenALで実装してみたので、そのときの手順をまとめてみる。
フレームワーク追加
- AudioToolbox.framework
- OpenAL.framework
インポート
#import <OpenAL/al.h> #import <OpenAL/alc.h> #import <AudioToolbox/AudioToolbox.h>
デバイス取得・コンテキストの生成と登録
ALCdevice *device = alcOpenDevice(NULL); if (device) { ALCcontext *context = alcCreateContext(device, NULL); alcMakeContextCurrent(context); }
alcOpenDeviceでデバイスを取得する。引数は、NULLにしておくと最適なデバイスを返してくれる(iPhoneではデバイスはひとつしかないのでNULL以外の選択肢はない)。
次にalcCreateContextでコンテキストの生成を行い、それをalcMakeContextCurrentで現在の《状況》として登録する。
コンテキストとは《状況》のことであり、alcMakeContextCurrentで登録を行うと、以後OpenALで行うすべての操作は、そのコンテキストに適応されることになる(大雑把な書き方でわかり難いと思うが、普通に使う分にはひとつ作成して登録しておくだけでいい。コンテキストを切り替えて使う場合がある)。
音声ファイルのデータを取得する
iPhoneでは容量の関係から、音声ファイルはcaf形式で使用するのが好ましいらしい。変換はターミナル上で行う。変換のコマンドは、検索すると沢山出てくるが、一応mp3からcafへの変換コマンド書いておく。音声ファイルがあるところまでターミナルで移動してから、以下のコマンドを実行。
mp3→caf
/usr/bin/afconvert -f caff -d LEI16@44100 -c 1 変換前.mp3 変換後.caf
カテゴリー:iPhone Dev
コメント (0)
Trackbacks (0)
コメントを残す
トラックバック