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?
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 –
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
Cieszę się, że go masz. Nie zapomnij przyjąć odpowiedzi! :-) –