Audioの使い方をまとめておこうと思います。AudioとはUSBオーディオインターフェースやHDMIなどの外部出力を接続したときに、ヘッドホンへ別系統の音を出力できる機能です。外部出力2chとヘッドホン2chの計4ch出力する事が出来ます。残念ながらマルチイン・アウトが搭載されているオーディオインターフェースをマルチで使えるという機能ではなく、USBオーディオインターフェースはイン・アウト2chのみで、それとは別にヘッドホンにも別の音をだせるというだけの機能です。ちなみにUSBオーディオインターフェースの繋げ方を知らない方に説明しておきますと、カメラコネクションキットまたはUSBカメラアダプタを使ってUSBオーディオインターフェースを接続すると、内蔵スピーカーではなくオーディオインターフェースから音を出す事が出来ます。市販されているたいていのUSBオーディオインターフェースは対応しているはずです。USB接続に対応しているのはiPadのみで、HDMI接続ならiPhone・iPad両方大丈夫です。バスパワーで動作するオーディオインターフェースはほぼ電源供給が足りないので、電源付きのUSBハブを介して接続する必要があります。入力が2系統受けられる機能に関してはiOS5から搭載されているようですが、出力に関してはiOS6からの新機能です。今回のエントリでは出力のみ扱います。505でも解説されていますので、英語に抵抗無い方はApple純正の解説をご覧いただくのも良いと思います。音を出す前の準備として大まかに以下のような作業が必要になります。Audioが使えるようになります。実際に音を出すのには、RemoteIOを使う方法と、AVAudioPlayerを使う方法の2つがあります。基本的にRemoteIOの方法を解説します。AVAudioPlayerは個人的に使わないので簡単に触れる程度にします。AudioSessionのCategoryをMultiRouteにするAVAudioSessionのCategoryにAVAudioSessionCategoryMultiRouteをセットし、通常オーディオを鳴らす前の準備と同じくAudioSessionをアクティブにしてください。error:&error];RouteChangeの通知を受け取る通知センターからAVAudioSessionRouteChangeNotificationの通知を受け取るように登録します。これで、オーディオデバイスやヘッドホンを抜き差ししたときに通知が飛んできます。通知を受け取った後の処理}出力ポートの情報を取得する通知を受け取った後や、一番最初にセットアップをするときに出力ポートの情報を取得します。AVAudioSessionChannelDescription}AudioSessionのcurrentRouteから現在のオーディオ接続状態をAVAudioSessionRouteDescriptionで取得できます。そのAVAudioSessionRouteDescriptionのoutputsから現在の出力ポートの情報がAVAudioSessionPortDescriptionのNSArrayで取得できます。ポートというのは基本的に接続されている機器です。Audioであったり、ヘッドホンであったり内蔵スピーカーの事です。出力であればだいたい2chずつチャンネルを持っています。outputsが2つあればマルチで出力できるという事ですし、1つであれば1系統しか出力が無いという事です。AudioSessionでMultiRouteにCategoryがセットされていなければ、常に1つだけになります。CategoryがMultiRouteでかつマルチで出力できる接続があるときにoutputsが2つになります。AVAudioPlayerで出力を選択するには、AVAudioSessionPortDescriptionのchannelsで取得できるAVAudioSessionChannelDescriptionをchannelAssignmentsにセットすれば良いようです。Routeの状態であることが確認できたら、RemoteIOからどの出力へアサインするかをChannelMapで設定します。size);重要な注意点として、RemoteIOはひとつにつき2chしか出力する事が出来ません。Audioとヘッドホンの合計4chへバラバラの音を出力したい場合は、RemoteIOを2つ作成する必要があります。同じ音を複数の出力へ割り当てる事は出来ますので、外部出力とヘッドホン出力で左右を入れ替えるというだけだったり(そんなことはしないと思いますが...)、モノラルを2系統出力するという用途であればRemoteIOひとつでも大丈夫です。ChannelMapはUInt32型の配列で設定します。4chの出力がある状態ならば、要素数が4つの配列にRemoteIOのアウトのどのチャンネルを割り当てるのかを記述します。0と1にすればRemoteIOのそれぞれのチャンネルの音が出力されますが、-1にすれば出力されません。(符号無しの型なのに-1を記述するのはちょっと気持ち悪いですが、-1で設定するように指定されています)。MultiRouteの状態でなければChannelMapの設定は無視されるようです。ChannelMap配列の出力の順番は、AudioSessionのcurrentRouteのoutputsの順番と一致しています。接続するオーディオデバイスによって順番が変わったりしますので、ちゃんとポートの中身を判断して設定したり、ユーザーに設定をしてもらう必要があります。USBでしか試していないと「本線(USB)・ヘッドホン」の順番で固定だと思ってしまいますが、HDMIだと「ヘッドホン・本線(HDMI)」となるので、注意が必要です。AMこの記事を読ませていただき、ありがとうございました。私も、MultiRouteを試していますが、出力ボード情報の出力のところが上手く出力できないです。直接デバイスをMACに接続していなく、パソコンのエミレータで動かしてみましたが、input,outputの情報は、nillとなっています。デバイス情報を出力させるために、何かほかの条件が必要ありますか。教えていただくようお願いいたします。PMMacで試そうとしているように見受けられますが、Mac上で動くiOSのシミュレータでは、AudioSessionは動かないので情報を取得する事は出来ませんし、MultiRouteの状態を試す事も出来ません。iOSの実機でMultiRouteとして動作させるときはXcodeと接続する事は難しいので、オーディオのIN・OUTの情報を取得するには、実機の画面に表示するか、テキストで保存してあとから見るかするなどの工夫が必要になると思います。PMなるほど、わかりました。ありがとうございました。