0

iOS をターゲットにして、2 つの .caf オーディオ ファイルを同時に再生したいと考えています。

リモート IO (出力スコープ) に接続されたマルチチャンネル ミキサー AU に接続された 2 つの「ジェネレーター」オーディオ ユニット (サブタイプ kAudioUnitSubType_AudioFilePlayer) で構成される単純な AUGraph を作成しました。

ミキサーに接続された 1 つの filePlayer AU だけで、ファイルの 1 つを正常に再生できます。2 つのファイルを再生するには、filePlayer AU の別のインスタンスを作成し、最初の filePlayer と同じ方法で構成するだけです。

オーディオ ファイルを開き、kAudioUnitProperty_ScheduledFileIDsプロパティと プロパティを使用して Generator ユニットに渡しkAudioUnitProperty_ScheduledFileRegionます。

すべての AU 呼び出しの途中でエラーをチェックしていますが、何もエラーを返しません。グラフを開始すると、沈黙しかありません。

「再生」を押した後のグラフのスナップショットは次のとおりです。

AudioUnitGraph 0xF7DA000:
  Member Nodes:
    node 1: 'auou' 'rioc' 'appl', instance 0xf18e3e0 O I
    node 2: 'aumx' 'mcmx' 'appl', instance 0x9d72f50 O I
    node 3: 'augn' 'afpl' 'appl', instance 0x9db6ee0 O I
    node 4: 'augn' 'afpl' 'appl', instance 0x9db6fd0 O I
  Connections:
    node   3 bus   0 => node   2 bus   1  [ 1 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
    node   4 bus   0 => node   2 bus   2  [ 1 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
    node   2 bus   0 => node   1 bus   0  [ 2 ch,  44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved]
  CurrentState:
    mLastUpdateError=0, eventsToProcess=F, isRunning=T (3)

欠けている複数の filePlayer Audio Units を使用するニュアンスはありますか? 私がやろうとしていることは、この方法で可能ですか? それとも、代わりにオーディオ バッファを作成し、手動で filePlayer ユニットにフィードする必要がありますか?

4

2 に答える 2

0

これを修正したかどうかはわかりません。

ミキサーを remoteIO に接続する前に、ファイル プレーヤーをミキサーに接続しているように見えます。

常にグラフを「後方」に接続します。つまり、remoteIO から開始し、チェーンを介してジェネレーターに戻ります。AUGraphs で使用されているプル アーキテクチャが原因で、フォワードの接続が機能しないと思います

于 2014-04-20T13:06:33.033 に答える
0

あなたが持っているものはうまくいくはずですが、表面化した可能性のある落とし穴がいくつかあります:

  1. 出力だけでなく、各バスのボリューム パラメータを 0 より大きい値に設定しましたか? (kMultiChannelMixerParam_Volumeインプットとアウトプットのスコープで)ミキサーはすべてのボリュームが 0 で始まると私は信じているので、これが問題だと思います。

  2. kAudioUnitProperty_ElementCountInput スコープのプロパティ設定で、入力バス数を 2 以上に設定していませんか? (注: 要素 1 と 2 を使用しているため、要素数を 3 に設定するか、代わりに要素 0 と 1 を使用する必要があります)。

于 2013-01-05T23:58:16.470 に答える