[iOS 8] オーディオ関連フレームワークの新機能まとめ

2015.02.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

本シリーズ「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-8-whats-new-in-core-audio-02

 

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」について詳しくみていきたいと思います。

参考