iOS Core Audio 概要

iOSアプリ開発でオーディオを扱う時には、パワフルなライブラリ/フレームワーク「CoreAudio」を使うことができます。

CoreAudioはもともとMacOSXに搭載されていた、高性能なオーディオ処理エンジンです。それがiOS(iPhone/iPad)でも使えるようになり、たくさんのオーディオアプリがAppStoreに公開されています。

iOS版のCoreAudioはMac版と比たらコンパクトで、電話の割り込みへ対応する「AudioSession」や簡単にオーディオを扱える「AVFoundation」といったiOS固有のサービスが存在します。

「CoreAudio」のフレームワークには、

  • Audio Toolbox フレームワーク
  • Audio Unit フレームワーク
  • AVFoundationというフレームワーク
などがあります。

簡易的な再生や録音を行いたい場合は「AVFoundation」
波形レベルでオーディオを扱いたい場合は「Extended Audio File Services」&「AudioUnit」または「AudioQueue」
といった感じで、目的に応じてフレームワークを使い分けます。


Audio Toolbox フレームワーク

オーディオファイルの読み出し、書き出し、再生、変換などを担当します。

System Sound Services

30秒以下のサウンドファイルが再生でき、警告音の再生などに使います。簡単にサウンドファイルを再生できます。

Audio Queue Services

iOSが対応しているオーディオフォーマットの再生と録音ができます。長さの制限はありません。

Audio File Services

オーディオデータをそのまま入力又は出力できます。フォーマットの変換の機能はありません。

Audio Session Services

iOS固有のサービスであり、オーディオの動作をコントロールします。iPodが再生している時やサイレントモードの時に音を出すかどうか、電話がかかってきた時やアラームが鳴った時にどう対応するか、などの処理を担当します。

Audio Converter Services

オーディオデータのフォーマットの変換をするためのサービスです。

Audio Format Services

オーディオのフォーマットに関するサービスです。

Extended Audio File Services

「Audio Converter Services」と「Audio Format Services」の機能を組み合わせて、サウンドファイルを簡単に読み書きできるようにしたものです。

Audio Unit Processing Graph Services

CoreAudioが持つプラグイン規格「Audio Unit」を複数接続するためのサービスであり、AudioUnitを組み合わせてオーディオ処理を行うことができます。

Audio File Stream Services

オーディオデータパケットを解析するもので、インターネット上のMP3をダウンロードしながら再生する、などの処理を実現できます。


Audio Unit フレームワーク

「Audio Unit」はオーディオ処理を行うプラグイン規格であり、CoreAudioにはシステムレベルで採用されています。

オーディオ入出力、サウンドエフェクト、フォーマット変換、ミキシングなど多数のAudioUnitが存在します。単体でも使えますし、「Audio Unit Processing Graph Services」を使って複数接続して使用することもできます。

オーディオ入出力用のAudioUnitには「Remote IO Unit」というものがあり、iOS端末でオーディオを入出力する時には、ほぼRemote IO Unitが使われます。

Audio Component Services

Audio ComponentというAudioUnitのプラグイン形式を扱うサービスです。AudioUnitを使う時に使用します。

Output Audio Unit Services

AudioUnitの処理の開始/停止を担当します。


AVFoundationフレームワーク

iOSが対応している全てのフォーマットのオーディオファイルを再生できます。再生、再生位置/ボリュームの変更、停止、一時停止などの基本的な機能を備えています。

Objective-Cのインターフェイスを持ち、扱いやすいフレームワークとなっています。

AVAudioPlayerクラス

オーディオファイルの再生を担当します。

AVAudioRecorderクラス

オーディオファイルの録音を担当します。

AVAudioSessionクラス

AudioSessionの管理を担当します。