2011-01-24 13 views
0

私は、1つの信号にまとめられた複数のセンサー信号をオーディオ入力を通じてiPhoneに取り込む手段を開発しています。私はいくつかのことを実行する必要があります。iPhoneでオーディオユニットのストリームを分割する

  1. は些細な フィルタチェーンを通じて 入力信号からこれらの信号を復調し、その後 さらに処理するために、独自の信号経路ダウン出力各 - リアルタイムでなければなりません。
  2. 信号の超音波処理されたバージョンを再生することができます。
  3. 各信号を ネットワーク接続にストリームします。好ましくは リアルタイムです。
  4. 各信号をPCM ファイルに保存します。リアルタイムである必要はありません。

このプロセスでシグナルチェーンを概念的に理解する助けが必要です。私はAudio Unitsを使ってデザインをスケッチし始めました。まず、オーディオユニットを選んで低レベルになったのですか?これはAudio Queue Servicesで実装可能でしょうか?それにもかかわらず、私は変調された信号が入ってきた(まだ復調していない)点に到達しており、それをリアルタイムで超音波処理しており、超音波信号を出力に戻しています。この信号を信号チェーンの2つの別々のセクションに分割するために、私は、リモートI/Oユニットの出力をマルチチャンネルミキサーユニット上の2つの別々の入力バスにルーティングし、超音波処理/書き込み処理マルチチャネルミキサーユニットのコールバックでディスクの書き込み/ネットワークへの書き込み。

しかし、これはリアルタイムスレッドの処理量が大きすぎますか?私は本当にこれを達成できるでしょうか、あるいは機能の一部をオフラインにする必要がありますか?次に、I/Oユニットの入力エレメントの出力をマルチチャンネルミキサーユニットの別々の入力エレメントにルーティングすることは可能ですか?そうでない場合は、マルチチャンネルストリームの説明を指定し、原点を分割できますか?

答えて

0

iOSデバイスではマルチチャンネル音声復調が可能です。これは、DSP IIRフィルタバンク、FFTフィルタリングなどを使用して行われています。ARM NEONベクトルユニットは、わずか数年前の多くの専用DSPチップよりも多くのDSPクランチングパワーを備えています。

データ取得のためだけにオーディオユニットまたはオーディオキューサービスを使用することをおすすめします。次に、PCMサンプルをキューに入れ、DSP処理ブロックに供給します。

あなたがネットワークを介してデータをストリーミングすることができますかどうかは、チャネルの数、チャネルあたりのデータレート、データ圧縮率、ネットワーク帯域幅の変動に依存し、そしてなど

+0

私は私がする必要がないことを聞いていますAudio Unitsに一歩踏み込んでみましょうか?まあねえ、少なくとも私はそれを学んだことが楽しかった! しかし、これらのツールの1つを取得に使用している場合は、できるだけ早くオフラインで処理し、スピーカー/ファイル/ネットワークにプッシュするか、誤解していますか? – GarlicFries

+0

また、このリアルタイムのすべてを行うことができれば、5または6チャンネルのストリームを指定し、オリジナルのモノラル信号をそれらのストリームに分割するという考えがありますか? – GarlicFries

+0

最低の待ち時間でオーディオユニットのみが必要です。それ以外の場合は、十分なデータをキューに入れ、バックグラウンドスレッドで処理してください。 – hotpaw2

関連する問題