話題の記事

[iOS] iOS Core Audio 入門 # 1 概要編

2014.05.14

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

はじめに

本シリーズ「iOS Core Audio」ではiOS 2.0からiOSに標準搭載されている「CoreAudio」と呼ばれるオーディオ処理用のソフトウェアインターフェイスを扱っていきます。

今回はCore Audioのフレームワーク群の概要を見ていきます。

目次

Core Audio ?

「Core Audio」はオーディオ処理用のフレームワークの総称であり、アプリ内でオーディオを再生、録音、ミックス、生成することをサポートします。MIDIコンテンツを扱ったり、他のアプリにオーディオやMIDIをストリーミングしたりすることも可能です。

coreaudio-2014_002 多数のフレームワークが用意されており、簡易的な効果音の再生から波形レベルの操作まで行うことができます。高いパフォーマンスと低レイテンシを実現するオーディオエンジンがOSの標準として備わっているということであり、AppStoreには電子楽器やシーケンサー、DAWなどの音楽アプリが多数公開されています。

Core Audioを構成するフレームワーク/サービス

Core Audioを構成するフレームワーク・サービスには以下の様なものがあります。

coreaudio-2014_001

AV Foundation Framework

Media Player Framework

Audio Toolbox Framework

  • 録音、再生、およびストリームの解析のためのアプリケーションレベルのサービスを提供
  • iOSではAudioSessionを管理するための追加のインターフェイスを提供している(Mac版にはない)
  • 関連するドキュメント

Services

サービス名 内容 関連公式ドキュメント 関連公式サンプルプロジェクト
Audio Converter Services オーディアデータを変換するためのサービス。異なるPCMフォーマット間、PCM-圧縮フォーマット間の変換を行うことができる。
Audio File Services ディスクまたはメモリ上の様々なオーディオデータを読み書きするためのCのインターフェースを提供。
Audio File Stream Services ストリーミング・オーディオの解析機能を提供する。
Audio Format Services オーディオ形式とコーデックに関する情報を取得するためのCインタフェースを提供する。
Audio Queue Services オーディオの再生や録音に使用できるソフトウェアオブジェクトである"audio queue"を提供。インターフェイスはC。 Audio Queue Services Programming Guide
Audio Session Services アプリが再生するオーディオの振る舞いを指定するためのサービスだが、iOS 7.0で非推奨になった。代わりにAV Foundation FrameworkのAVAudioSessionを使うようになっている。(What's New in iOS - Deprecated APIs) Audio Session Programming Guide
Audio Unit Processing Graph Services 複数のAudioUnitの配置、それぞれのAudioUnitの入力出力の接続、インプット用のコールバックを提供する。 Audio Unit Hosting Guide for iOS
Extended Audio File Services Audio File ServicesとAudio Converter Servicesを組み合わせて、簡単にオーディオファイルの読み書きができるようにしたサービス。
System Sound Services ユーザーの操作に対して音を出したり、バイブレーションを発動させたりするためのC言語の関数群を提供。

OpenAL Framework

Audio Unit Framework

  • 「オーディオユニット」と呼ばれるオーディオ処理用のプラグインを使用するためのインターフェースを提供
  • iOSではAppleが提供しているオーディオユニットしか使用できない(Macでは第三者が作成したものも使用できる)
  • 関連するドキュメント
  • 関連する公式のサンプルプロジェクト

Core Media Framework

  • オーディオビジュアルメディアを再生/管理するための低レベルのCインタフェースを提供
  • オーディオおよびビデオコンテンツの作成及び再生をより正確に制御する必要がある開発者向け
  • 関連するドキュメント

Core MIDI Framework

  • MIDIキーボードやシンセサイザーなどのデバイスと通信するためのAPIを提供
  • 有線あるいは無線で接続できる。
  • 関連するドキュメント

Media Toolbox Framework

Core Audio Framework

  • Core Audio全体で使用されるオーディオデータ型を定義
  • (Core Audioの他のサービスを包括するフレームワークではない)
  • 関連するドキュメント

Inter-App Audio

coreaudio-2014_003

「Inter-App Audio」はiOS 7で追加されました。対応アプリ同士でオーディオやMIDI、現在時間などをやりとりすることができます。 例えば、DAW(Digital Audio Workstation)アプリケーションと外部アプリ(エフェクターやシンセシンセサイザーなど)を連携することで複数のアプリを連携して作曲することができます。

実装的には、Audio Unit Frameworkのアップデートによって「Inter-App Audio」を実現している形になっているようです。 アプリのオーディオを他のアプリに提供するには、"AURemoteIO"オーディオユニットを他のアプリから見えるように公開します。 他のアプリのオーディオを利用するには、iOS 7のオーディオコンポーネント·ディスカバリ·インタフェースを使用します。

また、実機で動かすには証明書の設定でInter-App Audioを利用可能にする必要があります。

実機とシミュレータ

実機とシミュレータで動作が異なる部分があります

  • iOSシミュレータで動作しないサービス
    • Audio Session Services
    • AVAudioSession API
    • iPodライブラリアクセス

外部ハードウェアとの連携

iOSに対応したMIDIコントローラやオーディオインターフェース等が各社から発売されており、それらの機器と連携するアプリを開発できます。

coreaudio-2014_004 IK MultimediaのiRigシリーズ

coreaudio-2014_005 KORGのnanoKEY 2

外部ハードウェアとの連携については別記事で書いてみたいと思います。

iOSのバージョンとCore Audio

iOS 4.0以降の機能追加は以下のような感じになっています。

  • iOS 7.1
    • Support for External Media Players (CarPlay関連のようです)
  • iOS 7.0
    • Inter-App Audioの追加
    • Media Player / AV Foundation Frameworkの機能強化
    • Audio Toolbox framework内のAudio Session APIの非推奨化
  • iOS 6.0
    • Audio UnitのComponentの追加
    • Media Player / Core Media / AV Foundation Frameworkの機能強化
  • iOS 5.0
    • Audio UnitのComponentの追加
    • Media Player / AV Foundation / AudioToolbox Frameworksの機能強化
  • iOS 4.3
    • AV Foundationの機能強化
    • Media Player / Audio Unit / Audio Toolbox Frameworksの機能強化
  • iOS 4.2
    • Core MIDI frameworkの追加
    • Media Player Frameworkの機能強化
    • AirPlay(オーディオ再生)の追加
  • iOS 4.1
    • AV Foundationの機能強化
  • iOS 4.0
    • Core Media Frameworkの追加
    • AV Foundationの機能強化

まとめ

今回はCore Audioのフレームワーク群の概要を見ていきました。以下のようなタイプのアプリケーションの開発に活用できそうです。

  • 一般的なツールアプリに効果音を追加(ユーザーの操作に対するフィードバックとして)
  • iPodライブラリと連携したアプリ
  • インターネットラジオ/ポッドキャストアプリ
  • ICレコーダーアプリ
  • 音を主体としたゲーム
  • シンセサイザー、ドラムマシン、サンプラー、DAW、シーケンサーなどの作曲アプリ

今後は各フレームワークの機能を試していきたいと思います。