La fuente OpenAL continúa reproduciéndose luego de detenerse y borrarse.

Nuestra aplicación de ipad reproduce un montón de fonts OpenAL en paralelo, una para cada toque continuo. Las fonts se crean y comienzan en toques, se mueven y se detienen en toques seleccionados o tocan cancelled.

Las cosas parecen funcionar bien, excepto por un error en el que a veces parece que una fuente continúa tocando después de que el toque termina. Esto parece ocurrir solo cuando se generan muchos events táctiles.

He verificado que cuando esto sucede, todas mis fonts de AL se han detenido con alSourceStop y se han destruido con alDeleteSources. OpenAL no informa ningún error. Sin embargo, el sonido no se detiene.

Estoy empezando a pensar que esto podría ser un error en la implementación de iOS de OpenAL. ¿Alguien ha visto algo así?

Estoy teniendo el mismo problema de OpenAL con las nuevas funciones de reverberación habilitadas en un iPad 2 y iOS 5. Puedo confirmar de forma absoluta que los commands de reproducción / parada para el mismo sonido están sincronizados y el problema ocurre incluso si no lo haces reutilizar las fonts. Retrasar la parada no ayuda, ni monitorear la transición de estado en un hilo engendrado con GCD. No tengo idea de cómo proceder, pero pensé que pasaría mis observaciones al depurar este problema.

Los toques [Movido | Finalizado] se disparan cuando uno o más dedos se mueven o terminan tocando. iOS tiene Tenía un límite duro de 5 dedos, más que eso y los events parecen ser un poco torcidos. Si está chocando con este límite, es posible que necesite repensar su implementación.

Como no proporciona detalles de implementación, es difícil asumir qué error puede tener su código. No sé cómo estás verifica que se hayan detenido todas tus fonts de AL. Tal vez debería boost una variable global cuando inicia una fuente y la disminuye cuando detiene una fuente, luego inspecciona la variable y se asegura de que sea 0 (en mi opinión, es probable que vea que es> 0). El límite máximo de fuente para iOS es 32, pero usted dijo que no recibió un error de openAL … así que es probable que no lo haga.

puede encontrar útil la siguiente solución. He estado experimentando el mismo problema con mi aplicación, y hasta ahora, la mejor solución que he encontrado es simplemente crear una fuente abierta de "silencio" (una fuente con un buffer de silencio, es decir, llena de ceros) y jugar Siempre después de que detengo un sonido.

Esto parece solucionar el problema de los sonidos que siguen reproduciéndose incluso después de un command de parada, aunque introduce un pequeño "clic" de vez en cuando. En cualquier caso, encontré un pequeño 'clic' más tolerable que tener el sonido continuar cuando se supone que debe detenerse …

Espero que esto ayude a alguien!