月別アーカイブ: 2010年6月

iOS4.0のオーディオ

iOS4.0がリリースされましたので、個人的に気になった変更点などをまとめておきたいと思います。大々的に告知されていたような目玉機能の羅列ではなく、主にオーディオ周りで気になったところです。

バックグラウンドオーディオ

これはiOS4.0のオーディオ系では一番の改良点と思われます。自分のアプリがバックグラウンドに入っても音を流し続けられることができます。対応しているのはたしかiPhone 3GSとiPod touch第3世代とiPhone 4あたりですね。マルチタスク非対応のデバイスでは残念ながら使うことはできません。

とりあえずバックグラウンドで流せればいいのであれば設定は簡単です。info.plistに「Required background modes」という項目を作って、そこで選べるモードの中から「App plays audio」を選択するだけです。これでバックグラウンドに入ってもAudioUnitなどが止まらずに動き続けてくれます。

appplaysaudio.jpg

しかし、自分のアプリが音を流しっぱなしにできるということは、iPodアプリだけでなく、他のいろいろなアプリも同じようにしてくるということです。iOS4デバイスの中でオーディオの主導権を握る仁義なき戦いが繰り広げられることになります。

そこでやっぱり重要なのがカテゴリの設定です。自分のアプリから音を出すときに、他のアプリの音をどうするか。逆に自分のアプリをバックグラウンドで流すときにどうするのか。OS3.xの時と比べて結構シビアになってくると思います。ガッツリ音を鳴らすようなアプリでもないのに他のアプリの音を消してしまったりしたら、ユーザーさんからクレームが来るかもしれません。

あとバッテリーのことを考えると、アプリがバックグラウンドに入るときに継続して音が鳴らないタイミングであれば、AudioUnitを止めておくことも必要と思われます。まぁ、これはバックグラウンドじゃなくてもそうかもしれませんが、再生するときのレスポンスとかもありますし。

また、オーディオに限りませんが、マルチタスキング対応にしていると基本的にずっとアプリが起動しているような状態になっていますので、ユーザデフォルトが設定アプリから変更されたり、File Sharingでドキュメントフォルダの内容が変更されたりということもあります。自分のアプリがアクティブになったらデータを更新するということも忘れないようにしないといけないでしょう。

オーディオカテゴリが厳格になった?

もしかするとiOS4.0からではないのかもしれませんが、オーディオ関連の挙動がオーディオカテゴリの設定にかなり厳格になっているようです。

たしかOS3.0とかの頃に試していたときにはカテゴリはあくまでルーティングが変わるというような影響でしかなかったのですが、iOS4.0を試していたところ、カテゴリをRecordにするとAudioUnitでアウトプットを生成できなかったり、MediaPlaybackにするとインプットを生成できなかったりします。イレギュラーな事にはカテゴリのオーバーライドで対応しろということでしょうかね。

Accelerate Framework

iOSにもいよいよ念願のAccelerate Frameworkが実装されました。

といっても、MacのAccelerate Frameworkそのままではなく、vecLibのみ。その中でも限定されていて、vDSPとcblasとclapackだけが使えるようです。FFTは使えますし、deq22もあるのでEQも楽に作れそうです。でも、vForceあたり(サイン・コサインとか)は全滅なのが、ちょっと残念。

とりあえずこんなところです。まだ全然チェックしてませんが、iPhone Dev CenterのサンプルコードもどっさりiOS4.0に対応しているみたいです。オーディオ以外や、ちゃんとまとめておきたいことでまた何かエントリを書くかもしれません。

※以下追記 2010/8/1

iPodライブラリからのファイル書き出しが可能に!

この記事を書いたときに気づいてなかったのですが、iPodライブラリから生のデータとして扱えるファイルに書き出すことができるようになりました。くわしい方法はこちらのエントリへどうぞ。

METRONOME STAR 1.0.1 公開しました

METRONOME STAR v1.0.1がリリースされました。ダウンロードはこちら

変更点はiOS 4.0対応ということで、マルチタスキング対応デバイスであれば、アプリを終了しても音が鳴り続けるようになりました。iPhone 3Gなどの非対応デバイスでは、おそらく何も変わってません。むしろよけいな処理が増えている分、パフォーマンスが落ちているかも…。あと、高解像度にも対応して、iPhone 4だとグラフィックがたぶんきれいになっているはずです。iPhone4実機の本予約がまだ確定していないので、その美しさを自分で体験するのがいつになるのがわからないのがもどかしいですね。iPhoneシミュレータだとすごく動きがカクカクしててパフォーマンスも不安ですし。

まあMETRONOME STARは正直ダウンロード数が少ないので万が一何かあっても被害が少ないかな、と。あと、グラフィックもサウンドもそれなりに使ってるアプリなので、新しい環境で試すにはちょうどいいアプリだというのもありました。何より、新OSと同時にリリースしてみたかったんですよね。(iOS4にはちょっと遅れましたが、iPhone 4には間に合った)

iOS4.0に対応したといっても、新機能を使ってみたという感じでバックグラウンドの作法は全く考えておらず、バックグラウンドに入る前に不必要なメモリを解放するとかやってないので、もしかするとシステムに迷惑なアプリになっているかもしれません。再生していないときのAudioUnitを止めたりとかはしてるくらいですかね。このへんは今後の課題かなぁと思っています。

あと、ほんとうにメトロノームをバックグラウンドでならす必要があるのかということも頭をよぎりましたが、逆にいろんなアプリがバックグラウンドオーディオ対応して、iPhoneユーザさんたちがどう感じるかというのを様子見するのがよいのかなと思いました。

ちなみに、BigStopWatchのiPhone 4高解像度対応バージョンというのも出来上がってはいますが、保留しています。こちらはいままでのダウンロード数が多いので、慎重に実機で試してからリリースしようと思っています。