[iOS 8] オーディオ関連フレームワークの新機能まとめ
はじめに
本シリーズ「iOS Core Audio」ですが、 前回の第1回目の記事執筆からかなりの時間が経ってしまっています。 この間にiOS 8が発表され、オーディオ関連フレームワークに新しいクラスが追加されたり、 機能が強化されたりしました。
本記事では、iOS 8でのオーディオ関連フレームワークの変更点について見ていきます。
目次
iOS 8でのオーディオ関連フレームワークの主な変更点は以下の通りです。
- 「MIDI over Bluetooth」対応
- 新しいフレームワーク「CoreAudioKit Framework」の追加
- AV Foundation Framework に新クラス追加
- AV Audio Utility classes
- AVAudioEngine
「MIDI over Bluetooth」対応
MIDI over Bluetoothとは?
- Bluetooth Low Energyを使ってMIDIを送受信するもの
- 「iOS 8」及び「OSX Yosemite」から対応
- セキュアな接続
- 通常のMIDIデバイスとして扱える
セットアップ
- OSXにおいては、「Audio MIDI 設定」アプリを使用してセットアップする
- 「Audio MIDI 設定」アプリのパス:/Applications/Utilities
- iOSの場合は、「CoreAudioKit Framework」が提供するUIViewController のサブクラスを使用する
参考記事
CoreAudioKit Framework
- iOS用の新しいフレームワーク
- オーディオを扱うApp向けのUI部品を提供
- 「MIDI over Bluetooth LE」用のViewController
- 「Inter-App Audio」用のView
AV Foundation Framework に新クラス追加
これまで「CまたはC++言語」のインターフェースだったAPIが、 Objective-Cのインターフェースで提供されるようになり、 高度なオーディオ処理アプリを構築する敷居が下がりました。
AV Audio Utility classes
- Cの構造体のラッパー
- 構築が容易
- 低レベルのAPIへ変換される
内容 | Cの構造体との関連 | |
---|---|---|
AVAudioFormat | オーディオデータのフォーマットを記述 | 「AudioStreamBasicDescription」をラップ |
AVAudioChannelLayout | チャンネルの順番/役割を記述 | 「AudioChannelLayout」をラップ |
AVAudioPCMBuffer | PCMフォーマットのオーディオデータを保持するバッファ | 「AudioBuffer」や「AudioBufferList」をラップ |
AVAudioFile | 読込/書込のために開くことができるオーディオファイルを表す | 「ExtAudioFile」のようなもの |
AVAudioEngine
iOS 8で「AV Foundation Framework」に AVAudioEngineクラスとAVAudioNodeクラス(及びそのサブクラス)が追加されました。 これらの新クラスの特徴やできることは以下のとおりです。
- 特徴
- パワフル、機能豊富なAPI
- 複雑なタスクを容易く実行可能
- シンプルなリアルタイムオーディオ処理
- Objective-CのAPIインターフェース
- 低遅延、リアルタイム処理
- できること
- オーディオファイルの読み書き
- オーディオファイルまたはオーディオバッファからの再生
- オーディオの録音
- オーディオ処理ブロックへの接続
- 処理チェーン上の任意のポイントでのオーディオキャプチャ
- ゲーム向けの3Dオーディオの実装
AudioNodeのグラフ
Nodeと呼ばれる部品を繋ぎあわせて、音を鳴らしたり、エフェクトをかけたりすることができます。 EngineはNodeのグラフの管理、Nodeの接続のセットアップを担当します。
部品 | 対応するクラス |
---|---|
Node | AVAudioNodeクラス及びそのサブクラス |
Engine | AVAudioEngine |
iOS 7以前との比較
AVAudioEngine、AVAudioNodeクラスを使用してできることは、 iOS 7以前でもAUGraph(Audio Unit Processing Graph Services)を使えば同様のことができました。 AUGraphはC言語のAPIインターフェースでしたが、 「AV Foundation Framework」に今回追加されたクラスは、 Objective-CのAPIインターフェースになっています。 AUGraphよりも簡単に扱えるようになったのが大きいのではないでしょうか。
まとめ
本記事では、iOS 8でのオーディオ関連フレームワークの変更点について解説しました。 次回からは、メインの変更点である「AVAudioEngine」について詳しくみていきたいと思います。