リニアPCMについて
- 1チャンネル分を表す単一の数値をサンプルと呼ぶ
- 時間的に同じ位置にあるサンプルの集まりをフレームと呼ぶ
- 1つまたは複数の連続するフレームの集まりをパケットと呼ぶ
オーディオユニット
- オーディオデータを処理するソフトウェアプラグイン
CoreAudioの3つのAPIレイヤ
- High-Level Services
- AVAudioPlayer(iOSでオーディオ再生をサポート)
- Audio Queue Services(録音、再生、一時停止、ループ再生等)
- Extended Audio File Services(Audio File ServicesとAudio Converter Servicesを統合したもの)
- OpenAL(定位オーディオのためのオープンソースOpenAL標準。主にゲーム開発用)
- Mid-Level Services
- Audio Converter Services(オーディオデータフォーマットコンバータ操作)
- Audio File Services(ファイルに対するオーディオデータの読み書き)
- Audio Unit Services(デジタル信号処理プラグイン)
- Audio Processing Graph Services(デジタル信号処理プラグイン)
- Core Audio Clock Services(オーディオとMIDIの同期や時間基準の変換)
- Audio File Stream Services(ストリーム解析。ネットワークストリーミングなど)
- Low-Level Services
- I/O Kit
- Audio HAL
- Core MIDI
- Host Time Services
フレームワーク
- Audio Toolbox
- Core Audioの中〜高レベルサービスのI/F
- Audio Session Servicesを含む(携帯電話等でのオーディオ動作を管理)
- Audio Unit
- オーディオプラグイン(オーディオユニットやコーデック)の操作
- AV Foundation
- オーディオ再生の効率化
- OpenAL
- OpenAL標準のI/F
プロキシオブジェクト
- ファイル、ストリーム、オーディオプレーヤーなどを表現する手段に使われる
プロパティ、スコープ、要素
- プロパティキー
- kAudioFilePropertyFileFormatやkAudioQueueDeviceProperty_NumberChannelsなどのおゆにニーモニック名の付いた列挙子定数
- プロパティ値
- void*,Float64,AudioChannelLayot構造体のように、その用途に適した特定のデータ型の値
コールバック関数
- 新しいオーディオデータのセットをアプリケーションに提供する場合(録音など)
- 新しいオーディオデータのセットをアプリケーションから要求する場合(再生など)
- ソフトウェアオブジェクトの状態が変更されたことをアプリケーションに知らせる場合
コールバックの実装は次の2つを実行する
1.コールバック関数の実装
2.対象オブジェクトにコールバック関数を登録
正準形のオーディオデータフォーマット
- 変換において中間フォーマットと必要になること
- Core Audioのサービスが最適化されるフォーマットであること
- 特にASBDを指定しない場合のデフォルトの(想定される)フォーマットであること
Core Audioにおける正準形のフォーマット
- iOSの入力および出力:リニアPCM
- iOSのオーディオユニット及びその他のオーディオ処理:非インターリーブのリニアPCM
マジッククッキー
- 圧縮されたサウンドファイルまたはストリームに添付される不透過のメタデータセット
オーディオデータフォーマット
- CBR(固定ビットレート):リニアPCMやIMA/ADPCMなど
- VBR(可変ビットレート):AAC,Apple Lossless,MP3など。フレーム数は同じだが、ビット数が可変
- VFR(可変フレームレート):各パケットのフレーム数が可変。一般的ではない
※VBRとVFRはAudio Stream Basic Descriptionが必要
データフォーマット変換
- Audio Queue Servicesでは適切なコンバータが自動的に取得される
新しいサウンドファイルの作成(AudioFileCreateWithURL)
必要なもの
- ファイルのシステムパス(CFURLまたはNSURL形式)
- ファイルタイプの識別子。(AudioFile.hのAudio File Typesの列挙で宣言されている)
- ファイルに格納するオーディオストリーム基本記述
iOSのオーディオファイルフォーマット
AIFF | .aif,.aiff |
CAF | .caf |
MPEG-1 Layer 3 | .mp3 |
MPEG-2またはMPEG-4 ADTS | .aac |
MPEG-4 | .m4a,.mp4 |
WAV | .wav |
オーディオセッション
カテゴリ | アプリケーションの一連のオーディオ動作を識別するキー |
割り込み、及び出力先の変更 | 割り込み発生時、終了時、及びハードウェアのオーディオ出力先が変更されたとき、オーディオセッションから通知を送る。この通知によって、正しい応答を行う |
ハードウェアの特性 | デバイスの特性(サンプルレート、チャネル数、オーディオ入力を使用できるかなど)を調べる |
AVAudioPlayerクラスを使用した再生
- 任意の所要時間のサウンド再生
- ファイルまたはメモリバッファからのサウンド再生
- サウンドのループ再生
- 複数のサウンド再生
- 再生中の各サウンドの相対的な再生レベルの制御
- サウンドファイル内での特定の位置へのシーク(早送りや巻き戻しなどのアプリケーション機能サポート)
- オーディオレベル測定機能に使用できるデータの取得