###前提・実現したいこと
こんにちは。
現在iPadとRoland DUO-CAPTURE EX USB Audio Interfaceを繋ぎ
ステレオ音源の取得を行っています。
この入力のLとRをアプリ側で切り替えたいのですが...
Apple純正アプリGarageBandでUSBオーディオ接続時にプラグボタンタップ後に表示されるのマイク入力のチャンネル切り替えがまさにやりたいことなんです!
何卒宜しくお願い申し上げます。神様...
###発生している問題・エラーメッセージ
現状Lしか取れません...
###該当のソースコード
Objective-C,Xcode7.3
記録するデータフォーマットは以下になります。
AudioStreamBasicDescription dataFormat;
dataFormat.mSampleRate = 16000.0f;
dataFormat.mFormatID = kAudioFormatLinearPCM;
dataFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
dataFormat.mBytesPerPacket = 2;(ステレオ録音の場合4)
dataFormat.mFramesPerPacket = 1;
dataFormat.mBytesPerFrame = 2;(ステレオ録音の場合4)
dataFormat.mChannelsPerFrame = 1;(ステレオ録音の場合2)
dataFormat.mBitsPerChannel = 16;
dataFormat.mReserved = 0;
ちなみに()のようにパラメータを変えると普通にステレオは取れてます。
ただ実現したいのは最初から左なら左だけの1ch,右なら右の1chのみの取得なんです...だからここは変えたくないんです...
###試したこと
オーディオセッションでできる感じまではわかったのですが...
//録音カテゴリでオーディオセッションを開始し...
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
//チャンネル数を選択すると思しきプロパティに値をセットする
[audioSession setPreferredInput:1(L)or2(R) error:nil];
//ログ出力する
NSLog(@"%@",audioSession.preferredInput);
//→1(L)or2(R)と値はちゃんと変わってる...のにマイクの端子をLR入れ替えてもLだけしか取れていない!なんでや...
###補足情報(言語/FW/ツール等のバージョンなど)
Roland DUO-CAPTURE EX USB Audio Interfaceの環境としてはマイク1本しかないのですが、stereoを選択し録音しています。
###追記
申し訳ありません。記述謝ってました!正しくは以下になります。
//usbオーディオ接続中なら以下で取得(接続なければ内蔵マイク)
AVAudioSessionPortDescription *portDescription = [inRoute lastObject];
//usbオーディオ接続中なら設定(接続なければ内蔵マイク)
[audioSession setPreferredInput:portDescription error:nil];
//入力チャンネルの指定
[audioSession setPreferredInputNumberOfChannels:1 error:&error];
ご指摘いただきました内容で書き直しましたが、やはりLeftのみとなります。
画像はGarageBandの物になります。
このチャンネル切り替えがやりたいことです。
あなたの回答
tips
プレビュー