iOSで動作するデジタル オーディオ ワークステーションのアーキテクチャを開発しています(主に、OS X もサポートしようとしています)。Apple による何マイルにもわたるドキュメントとそのフレームワークのリファレンスをゆっくりと調べています。
私は DSP の経験がありますが、iOS は私にとってより新しいものであり、非常に多くのオブジェクト、チュートリアル (iOS の古いバージョンでも)、およびさまざまな API を備えたさまざまなフレームワークがあります。最初に正しいものを選択するか、それらの組み合わせを選択するようにしたいだけです。
アーキテクチャの目標は次のとおりです。
- サウンド トラックのサンプル アクセス(ファイル内のサンプルにアクセス)
- iPodライブラリの曲
- ローカルファイルの曲
- リモートサーバー上の曲
- ラジオ局 (無限の長さの曲)
- エフェクトチェーン(複数のイコライザー、またはピッチとテンポの同時変更)
- 複数のチャンネルとミキシング(サラウンドも含む)
- 携帯性
- 少なくとも Mac OS X
- iOS 6+ サポート (iOS 5 以下は不要)
- 符号付き整数ではなく、 32 ビット floatでのサンプル アクセス。
- 簡単な Objective-C API (DSP と処理はもちろん C++ で行われます)
- 録音、再生
- ファイルに記録 (選択したコーデック)、またはネットワーク経由で送信 (VoIP)
- 異なる出力 (Mac の場合) または iOS のスピーカー/ヘッドフォンでの再生
- 音量・ミュートの変更
- バックグラウンド オーディオのサポート
- リアルタイムのサンプル処理
- 現在再生中の曲のイコライザー
- リアルタイムのサンプル操作
- マルチスレッド
何も逃さなかったといいのですが、それが最も重要な目標です。
私の研究
私はほとんどのフレームワークを調べましたが (詳細はそれほど詳しくありません)、ここに私が理解したものがあります。Apple は、iOS でオーディオを使用するための次のフレームワークをリストしています。
- メディア プレーヤー フレームワーク
- AV Foundation フレームワーク
- オーディオ ツールボックス フレームワーク
- Audio Unit フレームワーク
- OpenAL フレームワーク
Media Player と AV Foundation は高レベルの API であり、サンプルに直接アクセスすることはできません。反対側の OpenAL は音声を録音できません。これで、Audio Toolbox と Audio Unit フレームワークは終了です。違いの多くはここで説明されています:これらすべてのオーディオ フレームワークの違いは何ですか?
私が理解できる限りでは、MIDI は現在必要とされていないため、Audio Toolbox が最適です。しかし、Audio Toolbox には、録音、再生など、より専門的な制御のための情報やチュートリアルがほとんどありません。ただし、Audio Units にはさらに多くの情報があります。
最初の質問: Audio Queue Services とは正確には何ですか? また、どのフレームワークに属していますか?
そして最後の質問:
望ましい目標のほとんどを達成できるようにするには、どのフレームワークを使用する必要がありますか?
フレームワーク、クラスの組み合わせを提案することもできますが、あなたの答えと、目標を達成するためにどのクラスを使用するかをより詳細に説明してください。できるだけ高レベルの API をお勧めしますが、目標を達成するために必要なレベルはできるだけ低くします。サンプルコードのリンクも大歓迎です。
ご助力ありがとうございます。