2012-07-06 20 views
6

Estoy jugando con el proyecto de ejemplo de Apple "LoadPresetDemo". He agregado la unidad de audio de reverberación AudioUnit kAudioUnitSubType_Reverb2 al gráfico, que es la única reverb de iOS disponible. En el archivo de cabecera CoreAudio "AudioUnitParameters.h", se afirma que REVERB2 debe responder a estos parámetros:Core Audio (iOS 5.1) Las propiedades de Reverb2 no existen, código de error -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, 
}; 

Después de la AUGraph se ha inicializado y comenzó, todo se compila, escucho el sonido.

A continuación, modificar el parámetro kReverb2Param_DryWetMix (cambiando a la mezcla húmeda completa):

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

Todo bien, oigo el sonido de reverberación con plena mixta mojado.

Ahora escuche es donde me encuentro con problemas. Cuando intento alterar cualquier parámetro que no sea kReverb2Param_DryWetMix obtengo el código de error -10877. Parece que estos otros parámetros enumerados en el archivo de encabezado no existen realmente.

Por ejemplo, llamar

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

tira el error -10877.

¿Esto es un error? ¿He omitido algún marco de audio? ¿No importé cabezales de audio específicos?

Los marcos de audio actuales incluidos son AVFoundation y AudioToolbox. Las importaciones de audio actuales son

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

He fregado Google sin solución. Sé que tengo problemas cuando la ruta de Google falla. Cualquier ayuda sería muy apreciada.

Nota: Probé con el simulador y el dispositivo iPhone 4S, el mismo problema.

ACTUALIZACIÓN: He tratado

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

y se devuelve un valor de 0.500000, lo que significa que la propiedad existe. Entonces, ¿qué estoy haciendo mal al establecer el valor?

+1

Eche un vistazo a AUComponent.h. Parece que -10877 es kAudioUnitErr_InvalidElement "El elemento especificado no es válido". Buscar en Google la constante de error arroja algunos resultados, p. http://lists.apple.com/archives/coreaudio-api/2002/Sep/msg00470.html –

+0

Gracias por dónde localizar el código de error, me costaba encontrar qué encabezado tenía los códigos. Esto me ayudó a rastrear lo que hice mal. – Gobot

+0

me alegra que lo hayas conseguido. ¡No olvides aceptar tu respuesta! :-) –

Respuesta

4

Doh! Me doy cuenta de que estaba confundiendo AudioUnitSetParameter con AudioUnitSetProperty, incluidos sus parámetros. Hombre, sutil pero malvado

+0

Hola, estoy teniendo exactamente el mismo problema. ¿Te importa publicar un ejemplo de cómo resolviste el tuyo con AudioUnitSetProperty? Muchas gracias. Suponiendo –

+0

ha inicializado correctamente todo .... \t AudioUnitSetParameter (_reverbUnitModule.unit, kAudioUnitScope_Global, 0, kReverb2Param_DryWetMix, 50,0, 0); //////// AudioUnitSetParameter (_reverbUnitModule.unidad, kReverb2Param_DecayTimeAt0Hz, kAudioUnitScope_Global, 0, 1, 0); – Gobot

+0

Agradable. Gracias. –

Cuestiones relacionadas