iPhone OS 3.0のオーディオ周りの変更点


OS3.0がでてからもう結構時間が経ってますが、オーディオ周りの挙動に変更があったところをまとめておきます。

ロック時に音が途切れない

AudioUnitのRemoteIOを使っている場合、AudioSessionのPreferredHardwareIOBufferDurationを何も設定せずデフォルト状態のままだと、以前と変わらずロックしていないときは1024フレーム、ロック中は4096フレームと切り替わってしまいますが、一度値を設定しておくと、ロックしても設定した値そのままで切り替わらなくなったようです。

RemoteIOのデフォルトフォーマットが変更

OS2.2.1以前のRemoteIOのデフォルトのフォーマットは8.24の固定小数点でしたが、OS3.0からは16bitの整数に変わっているようです。ただし、MultiChannelMixerなどはあいかわらず8.24の様ですので、組み合わせて使う場合は自分で設定して合わせる必要があり、注意が必要です。

Objective-CでAudioSession

いままでのC言語でのAPIだけでなく、AVFoundationにAVAudioSessionというObjective-CのAPIも加わり、より簡単にAudioSessionが使えるようになったようです。でもなぜかIOBufferDurationが設定できないんですよねぇ。使い方が間違ってるんでしょうか。

ExtAudioFileでMP3やAACなどの圧縮ファイルが使える

AVAudioPlayerでは以前から読み込めていましたが(AudioQueueでもでしたっけ?)、OS3.0からはExtAudioFileでも読み込めるようになったようです。個人的に録音に興味が無いので試していませんが、AACとかは書き込みも出来るかも。

Bluetooth経由で音の再生が可能に

BluetoothのA2DPに対応し、ワイヤレスで音の再生が可能になりました。が、手元にあったBluetoothレシーバ(以前使っていたTOSHIBAの携帯用のやつ)で試しに聴いてみたところ、音質は別にいいのですが、レイテンシーがひどすぎて、Touch the Waveとか楽器アプリで使うのはありえないという印象です。

ミュージックライブラリにアクセスが可能に

と聞いて期待したんですが、一瞬で打ち砕かれました。あくまでメタ情報の取得と、用意されているプレイヤーでの再生が出来るだけで、オーディオファイルを直接読み込む事は出来ません。なんかよく、ミュージックライブラリに直接アクセスなんて書いてありますが、「間接的」って表現のほうが合ってると思います。あ、でも、僕の認識が間違っていて、実はオーディオファイルの読み込みができるなんて情報があればぜひとも教えていただきたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です