2012-07-06 9 views
6

Gram z przykładowym projektem Apple "LoadPresetDemo". Dodałem pogłosową jednostkę dźwiękową AudioUnit kAudioUnitSubType_Reverb2 do wykresu, który jest jedynym dostępnym pogłosem systemu iOS. W pliku nagłówkowym CoreAudio „AudioUnitParameters.h”, stwierdza, że ​​Reverb2 powinien reagować na te parametry:Core Audio (iOS 5.1) Właściwości Reverb2 nie istnieją, kod błędu -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, 
}; 

Po AUGraph został zainicjowany i zaczął wszystko kompiluje, słyszę dźwięk.

Następnie ja zmieniać parametr kReverb2Param_DryWetMix (zmiana do pełnej mokrej mieszanki):

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

Wszystko dobre, słyszę dźwięk z pełnym mokrej mieszanej pogłosu.

Teraz słyszę, gdzie napotykam problemy. Podczas próby zmiany dowolnego parametru innego niż kReverb2Param_DryWetMix otrzymuję kod błędu -10877. Wygląda na to, że te inne parametry wymienione w pliku nagłówkowym faktycznie nie istnieją.

Na przykład, nazywając

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

Zgłasza błąd -10877.

Czy to błąd? Czy pominąłem jakieś frameworki audio? Czy nie zaimportowałem konkretnych nagłówków audio?

Obecne frameworki audio to AVFoundation i AudioToolbox. Obecne import audio są

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

mam prana google bez rozwiązania. Wiem, że mam problemy, gdy trasa w Google zawiedzie. Każda pomoc będzie bardzo ceniona.

Uwaga: testowałem z symulatorem i urządzeniem iPhone 4S, ten sam problem.

UPDATE: Próbowałem

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

i zwraca wartość 0.500000, co oznacza, że ​​nieruchomość nie istnieje. Więc co robię źle w ustalaniu wartości?

+1

Zajrzyj do AUComponent.h. Wygląda na to, że -10877 to kAudioUnitErr_InvalidElement "Podany element jest nieprawidłowy". Wyszukiwanie w dzienniku stałej błędu powoduje wyświetlenie niektórych wyników, np. http://lists.apple.com/archives/coreaudio-api/2002/Sep/msg00470.html –

+0

Dzięki za lokalizację, gdzie zlokalizowałem kod błędu, ciężko mi było znaleźć, który nagłówek miał kody. Pomogło mi to wyśledzić, co zrobiłem źle. – Gobot

+0

Cieszę się, że go masz. Nie zapomnij przyjąć odpowiedzi! :-) –

Odpowiedz

4

Doh! Zdaję sobie sprawę, że mylę AudioUnitSetParameter z AudioUnitSetProperty, w tym ich parametry. Człowiek, subtelny, ale zły.

+0

Witam, mam dokładnie ten sam problem. Czy masz ochotę opublikować przykład tego, jak rozwiązałeś swój z AudioUnitSetProperty? Wielkie dzięki. –

+0

Zakładając, że wszystko poprawnie zainicjowany .... \t AudioUnitSetParameter (_reverbUnitModule.unit, kAudioUnitScope_Global, 0, kReverb2Param_DryWetMix, 50,0, 0); //////// AudioUnitSetParameter (_reverbUnitModule.jednostka, kReverb2Param_DecayTimeAt0Hz, kAudioUnitScope_Global, 0, 1, 0); – Gobot

+0

Niezły. Dzięki. –