Appleのサンプルプロジェクト「LoadPresetDemo」で遊んでいます。グラフにリバーブオーディオユニットAudioUnit kAudioUnitSubType_Reverb2
を追加しました。これは、利用可能な唯一のiOSリバーブです。CoreAudioヘッダーファイル「AudioUnitParameters.h」には、Reverb2がこれらのパラメーターに応答する必要があることが記載されています。
enum {
// Global, CrossFade, 0->100, 100
kReverb2Param_DryWetMix = 0,
// Global, Decibels, -20->20, 0
kReverb2Param_Gain = 1,
// Global, Secs, 0.0001->1.0, 0.008
kReverb2Param_MinDelayTime = 2,
// Global, Secs, 0.0001->1.0, 0.050
kReverb2Param_MaxDelayTime = 3,
// Global, Secs, 0.001->20.0, 1.0
kReverb2Param_DecayTimeAt0Hz = 4,
// Global, Secs, 0.001->20.0, 0.5
kReverb2Param_DecayTimeAtNyquist = 5,
// Global, Integer, 1->1000
kReverb2Param_RandomizeReflections = 6,
};
AUGraphが初期化されて開始された後、すべてがコンパイルされ、音が聞こえます。
次に、kReverb2Param_DryWetMixパラメーターを変更します(フルウェットミックスに変更)。
AudioUnitSetParameter(_reverbUnit, kAudioUnitScope_Global, 0, kReverb2Param_DryWetMix, 100.0f, 0);
いいですね、フルウェットミックスリバーブの音が聞こえます。
今聞いて、私が問題にぶつかるところです。エラーコード以外のパラメータを変更しようとするとkReverb2Param_DryWetMix
、エラーコードが表示されます-10877
。ヘッダーファイルにリストされているこれらの他のパラメータは実際には存在しないようです。
たとえば、
AudioUnitSetParameter(_reverbUnit, kAudioUnitScope_Global, 0, kReverb2Param_DecayTimeAtNyquist, 20.0f, 0)
エラーをスローし-10877
ます。
これはバグですか?オーディオフレームワークを省略しましたか?特定のオーディオヘッダーをインポートしていませんか?
含まれている現在のオーディオフレームワークは、AVFoundationとAudioToolboxです。現在のオーディオインポートは
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>
私は解決策なしでグーグルを精査しました。Googleルートが失敗すると問題が発生することはわかっています。どんな助けでも大歓迎です。
注:シミュレーターとiPhone 4Sデバイスでテストしましたが、同じ問題です。
更新:私は試しました
AudioUnitGetParameter(_reverbUnit, kReverb2Param_DecayTimeAtNyquist, kAudioUnitScope_Global, 0, &value)
値を返します0.500000
。これは、プロパティが存在することを意味します。では、値を設定する際に何が間違っているのでしょうか。