7

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。これは、プロパティが存在することを意味します。では、値を設定する際に何が間違っているのでしょうか。

4

1 に答える 1

4

ドー!パラメータを含めて、と混同AudioUnitSetParameterしていたことに気付きました。AudioUnitSetProperty男、微妙だが邪悪。

于 2012-07-06T15:00:48.970 に答える