iOS Apps Developer's Note

Audio Session Top

9. PlayAndRecordカテゴリのモードの種類

PlayAndRecordカテゴリには以下の6つのモードがある。
  • Default
  • Measurement
  • VideoRecording
  • VoiceChat
  • VideoChat
  • GameChat
VideoRecordingモードはRecordカテゴリと同様iOS 5から存在していた。
また、このPlayAndRecordカテゴリは入力と出力を同時に使うことができるため、さらに追加されている3つのモードはみなチャットである。
音声だけのVoiceChat、画像付きのVideoChat、オンラインゲームで使うであろうGameChat、の3つである。

それでは、逆順ではあるが順番にみていこう。
  • GameChat
    iOS 5から存在する。
    Appleのドキュメントによれば、
    “GKVoiceChatオブジェクトを使用するアプリケーションに代り、Game Kitがこのモードを指定するので直接指定してはいけない”、とある。
    また、
    “もし、アプリがGKVoiceChatを使用せず、GameChatのような振る舞いが必要な場合は、VoiceChatまたはVideoChatを使用すること”、とある。
    そのような訳で、今回GameChatについては調査できていないことを、あらかじめお詫びしておく。
  • VideoChat
    iOS 7で追加された。
    Appleのドキュメントによれば、
    “オンラインビデオ会議のようなアプリで設定する”、とある。
    ドキュメントにはPlayAndRecordカテゴリとRecordカテゴリで設定できると書かれているがRecordカテゴリではこのモードを設定するとエラーになる。
    また、
    このモードでは次の3つの作用がある。
    • 音声に最適化されたイコライザー処理がされる
    • ビデオチャットに適したオーディオ経路だけが選択できるように制限される
    • Bluetoothオプションが自動でイネーブルされる
      オプションに関してはこの後で説明する。
    このモードを使う場合はAudioUnitの入出力としてRemoteIOではなくVoiceProcessingを使用することをAppleは推奨している。
  • VoiceChat
    iOS 5から存在する。
    Appleのドキュメントによれば、
    “双方向の通話をするVoIPのようなアプリで設定する”、とある。
    また、
    このモードでは次の3つの作用がある。
    • 音声に最適化されたイコライザー処理がされる
    • ボイスチャットに適したオーディオ経路だけが選択できるように制限される
    • Bluetoothオプションが自動でイネーブルされる
      オプションに関してはこの後で説明する。
    このモードを使う場合はAudioUnitの入出力としてRemoteIOではなくVoiceProcessingを使用することをAppleは推奨している。
  • VideoRecording
    VideoRecordingモードはRecordカテゴリでの同モードと同じである。
    “複数の内蔵マイクを持つデバイスで録画する場合、ビデオカメラに最も近いマイクが使用される”
    “このモードを指定することでシステムは適切なオーディオ信号処理をする”
    “アプリがAVCaptureSessionを使用してビデオを録画する場合、このモードを直接使用しなくてもAVCaptureSessionが替わりに設定する”
  • Measurement
    他のカテゴリでのMeasurementモードと同様、最小限の入出力での信号処理をするモードである。
  • Default
    さて、PlaybackカテゴリでのDefaultというのは、MoviePlaybackというモードが追加されているように、通常のオーディオの再生を想定しているものだろう。
    また、RecordカテゴリでのDefaultというのは、Playbackカテゴリと同様にVideoRecordingが追加されていることから、オーディオの録音を想定していると思われる。
    では、PlayAndRecordでのDefaultにはどのようなケースが考えられるのだろうか。
    カテゴリの説明の前に以下のような利用状況を例示した。
    • 電話のような音声通話
    • FaceTimeのようなビデオ通話
    • 音楽再生
    • ボイスメモ
    • PCMレコーダー
    • キークリックや効果音
    • インターネットラジオのようなストリーミング再生
    • ビデオ再生
    • ムービー録画
    • オシロスコープや音響特性測定のような測定機器
    • DJアプリのような2系統出力を持つプレーヤー
    • 楽器
    これらに対して、カテゴリとモードを選んでみよう。
    • 電話のような音声通話 : PlayAndRecord + VoiceChat
    • FaceTimeのようなビデオ通話 : PlayAndRecord + VideoChat
    • 音楽再生 : Playback + Default
    • ボイスメモ : Record/PlayAndRecord + Default
    • PCMレコーダー : Record/PlayAndRecord + Default
    • キークリックや効果音 : Ambient
    • インターネットラジオのようなストリーミング再生 : Playback + Default
    • ビデオ再生 : Playback + MoviePlayback
    • ムービー録画 : Record/PlayAndRecord + VideoRecording
    • オシロスコープや音響特性測定のような測定機器 : Record/PlayAndRecord + Measurement
    • DJアプリのような2系統出力を持つプレーヤー : MultiRoute
    • 楽器 : Playback/PlayAndRecord + Default
    こうして眺めてみると、PlayAndRecord + Defaultはかなり特殊なケースに見えてくる。
    上記リストの中では楽器やボイスレコーダー/PCMレコーダーが該当するが、楽器は入力を必要としないのが普通だろう。
    そうなると、ボイスメモというよりPCMレコーダーで音声をモニターしながら録音するような用途がいちばん近いのではないだろうか。
    あとはオシロスコープ等の測定機器がMeasurementの代りにDefaultを使っても良い候補かもしれない。

    適切なカテゴリおよびモードの選択について具体的に見ていく前に、もう一つの設定である、オプションについて説明しよう。

PrevNext