Pregunta

Llevo bastante tiempo trabajando en una aplicación de metrónomo. Siguiendo la aplicación de metrónomo de muestra de Apple, he estado usando un temporizador en un hilo de fondo (de alta prioridad) para reproducir sonidos del sistema. Mis resultados están bien pero lejos de ser perfectos. Algunos problemas que enfrento son:

  • la aplicación realmente no mantiene la hora, aunque parece que sí
  • No puedo hacer mucho en el hilo principal mientras el hilo de sonido se está ejecutando, ya que se vuelve muy lento
  • Si presiono el botón de bloqueo o los botones de volumen en el dispositivo, el tempo se vuelve loco.
  • los sonidos del sistema no se reproducen cuando el teléfono está en silencio

Ayer compré un metrónomo en la tienda de aplicaciones y descubrí que esta aplicación no tenía ninguno de los problemas anteriores. No estaba usando sonidos del sistema ya que silenciar el iPhone no detuvo la reproducción.

Ahora, me pregunto si alguien puede guiarme hacia un marco mejor y más robusto para esta tarea.

¿Fue útil?

Solución

Las bibliotecas de audio OSX se denominan "Core Audio". Hay algunas formas diferentes de interactuar con el hardware de audio y los marcos de Core Audio. Hay OpenAL (como se menciona en otro comentario) que es un enfoque estándar multiplataforma para el audio al igual que OpenGL es para gráficos. También hay Audio Unit, que es una interfaz basada en la devolución de llamada directamente al hardware de audio que le permite suministrar audio PCM sin procesar en tiempo real. Las unidades de audio son extremadamente limitadas en el tiempo, por lo que si está buscando ritmo metronómico, las unidades de audio pueden hacerlo por usted. También hay una capa en la parte superior de las unidades de audio conocida como AudioQueue que le permite programar una transmisión de audio para reproducirla en tiempo real. Uno de los beneficios de AudioQueue es que puede decodificar automáticamente formatos comprimidos como MP3 o AAC.

Buscar en " Descripción general de Core Audio " en los documentos para obtener más información sobre los diversos marcos de audio para iPhone.

Otros consejos

Puede usar OpenAL para trabajar con sonido. Utiliza API de bajo nivel y funciona rápido. También debe leer la AudioSessionProgrammingGuide de Apple. Allí encontrará muchas respuestas a sus posibles preguntas.

Voy a encender una llama aquí, así que si no te gusta este comentario, hazlo. Pero, ¿miró realmente la documentación que Apple le proporciona?

La documentación del " Comenzando con el audio " La página enumera múltiples formas de reproducir audio, una declara explícitamente "Para reproducir sonidos con la latencia de E / S más baja, o para proporcionar entrada y salida de audio simultáneas, ..." (Probablemente estoy violando algunos NDA aquí lo que sea)

Al menos pico en los documentos antes de hacer una pregunta aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top