2012-07-06 4 views
6

Ich spiele mit Apples Beispielprojekt "LoadPresetDemo". Ich habe die Reverb-Audioeinheit AudioUnit kAudioUnitSubType_Reverb2 zu der Grafik hinzugefügt, die der einzige verfügbare iOS-Reverb ist. In der CoreAudio- Header-Datei „AudioUnitParameters.h“, heißt es, dass REVERB2 auf diese Parameter reagieren soll:Core Audio (iOS 5.1) Reverb2-Eigenschaften nicht vorhanden, Fehlercode -10877

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, 
}; 

Nachdem der AUGraph initialisiert und gestartet wurde, stellt alles, ich höre Ton.

Als nächstes ändere ich die kReverb2Param_DryWetMix Parameter (auf volle nasse Mischung zu ändern):

AudioUnitSetParameter(_reverbUnit, kAudioUnitScope_Global, 0, kReverb2Param_DryWetMix, 100.0f, 0); 

Alle gut, ich mit voller nass gemischt Hallklang hören.

Jetzt hören ist, wo ich auf Probleme stoße. Beim Versuch, einen anderen Parameter als kReverb2Param_DryWetMix zu ändern, erhalte ich den Fehlercode -10877. Es scheint, als ob diese anderen Parameter, die in der Header-Datei aufgelistet sind, nicht existieren.

Zum Beispiel

AudioUnitSetParameter(_reverbUnit, kAudioUnitScope_Global, 0, kReverb2Param_DecayTimeAtNyquist, 20.0f, 0) 

führt den -10877 Fehler aufrufen.

Ist das ein Fehler? Habe ich irgendwelche Audio-Frameworks weggelassen? Habe ich bestimmte Audio-Header nicht importiert?

Die aktuellen Audio-Frameworks sind AVFoundation und AudioToolbox. Die aktuellen Audio-Importe sind

#import <AudioToolbox/AudioToolbox.h> 
#import <AVFoundation/AVFoundation.h> 
#import <CoreAudio/CoreAudioTypes.h> 

ich google ohne Lösung abgesucht haben. Ich weiß, dass ich Probleme habe, wenn die Google-Route fehlschlägt. Jede Hilfe würde sehr geschätzt werden.

Hinweis: Ich habe mit Simulator und iPhone 4S Gerät getestet, das gleiche Problem.

UPDATE: Ich habe

versucht
AudioUnitGetParameter(_reverbUnit, kReverb2Param_DecayTimeAtNyquist, kAudioUnitScope_Global, 0, &value) 

und es gibt einen Wert von 0.500000, die das Eigentum bedeutet nicht existiert. Was mache ich falsch beim Einstellen des Wertes?

+1

Schauen Sie in AUComponent.h. Sieht aus wie -10877 ist kAudioUnitErr_InvalidElement "Das angegebene Element ist nicht gültig". Das Googlen der Fehlerkonstante wirft einige Ergebnisse auf, z. http://lists.apple.com/archives/coreaudio-api/2002/Sep/msg00470.html –

+0

Danke für die Suche nach dem Fehlercode, ich hatte eine harte Zeit zu finden, welche Header die Codes hatte. Das hat mir geholfen, herauszufinden, was ich falsch gemacht habe. – Gobot

+0

froh, dass du es hast. Vergiss nicht, deine Antwort zu akzeptieren! :-) –

Antwort

4

Doh! Ich merke, dass ich AudioUnitSetParameter mit AudioUnitSetProperty einschließlich ihrer Parameter verwirre. Mann, subtil, aber böse.

+0

Hallo, ich habe genau das gleiche Problem. Würde es Ihnen etwas ausmachen, ein Beispiel dafür zu nennen, wie Sie Ihre mit AudioUnitSetProperty gelöst haben? Danke vielmals. –

+0

Vorausgesetzt, dass Sie alles richtig initialisiert .... \t AudioUnitSetParameter (_reverbUnitModule.unit, kAudioUnitScope_Global, 0, kReverb2Param_DryWetMix, 50,0, 0); //////// AudioUnitSetParameter (_reverbUnitModule.Einheit, kReverb2Param_DecayTimeAt0Hz, kAudioUnitScope_Global, 0, 1, 0); – Gobot

+0

Nice one. Vielen Dank. –