私がする必要があるのは、4 チャンネルのオーディオ (ライブ ソースからではなく、アプリ バンドルに事前に録音されたオーディオ ファイルのみ) をミックスし、できれば MP3 を使用して、リアルタイムで個別に音量を変更できることです。iPhone 用のさまざまなサウンド API すべてに関して、私が取るべき最善/正しい道は何ですか?
ありがとう!
私がする必要があるのは、4 チャンネルのオーディオ (ライブ ソースからではなく、アプリ バンドルに事前に録音されたオーディオ ファイルのみ) をミックスし、できれば MP3 を使用して、リアルタイムで個別に音量を変更できることです。iPhone 用のさまざまなサウンド API すべてに関して、私が取るべき最善/正しい道は何ですか?
ありがとう!
Storm Sim はこれを AVAudioPlayer で行いますが、これは確かに最も単純な方法です。各プレーヤー オブジェクトで prepareToPlay を呼び出し、後で再生を開始して、遅延が発生しないようにすることができます。また、永遠ループで空の 1 秒オーディオ プレーヤーを使用して deviceTime のカウント ダウンを維持するため、playAfter を使用して将来的に特定の deviceTime を指定し、すべてのサンプルを同期または相互にオフセットして再生することができます (deviceTimeある種のオーディオ再生がある場合にのみティックします)。AVAudioPlayerDelegate にはイベントの中断/再開と finishedPlaying があるため、何が起こっているかの通知を受け取ることができます。
ただし、ハードウェア MP3/AAC デコーダーは 1 つしかないため、他の 3 つがデコードに CPU (したがってバッテリー) を使い果たします。バッテリ寿命を最大限に延ばしたい場合は、IMA4@44100 の CAF ファイルを使用してください。生の WAV ファイルの約 1/4 のサイズであるため、MP3 ほどではありませんが、特に小さなオーディオ トラックを多数使用している場合は、パフォーマンスははるかに優れています。音声を使用している場合は、忠実度がはるかに低くなり、ファイルがさらに破壊される可能性があります。ターミナルの afconvert は、ソース ファイルを CAF 形式で取得するのに役立ちます (エンコーディングに関係なく、CAF ファイルを使用する必要があります)。