¿Cómo detectar cuándo terminan de reproducirse los efectos de sonido?

Estoy usando SimpleAudioEngine y estoy tratando de detectar si un efecto de sonido termina de reproducirse antes de continuar.

Estoy buscando cualquier método, ¡pero el que estoy tratando de implementar no funciona!

CDSoundEngine *engine = [CDAudioManager sharedManager].soundEngine;    
ALuint soundId = [[SimpleAudioEngine sharedEngine] playEffect:soundId];

float seconds = [engine bufferDurationInSeconds:soundId];

Cada vez que uso bufferDurationInSeconds, devuelve un valor flotante de -1 a segundos variables. Revisé la implementación, y devuelve un -1 cuando la identificación no es válida, ¡pero yo soy 100% la identificación es válida!

¿Puede alguien ayudarme con este problema o sugerirme otra forma de detectar el final de un efecto de sonido?

Respuestas a la pregunta(1)

Su respuesta a la pregunta