Pour un tempo constant sur iPhone, existe-t-il une meilleure solution que les sons du système?

StackOverflow https://stackoverflow.com/questions/1642582

Question

Je travaille sur une application de métronome depuis un certain temps maintenant. Après l'application exemple du métronome Apple'e, j'ai utilisé une minuterie sur un fil d'arrière-plan (priorité élevée) pour reproduire les sons du système. Mes résultats sont corrects mais loin d'être parfaits. Certains problèmes auxquels je suis confronté sont:

  • l'application ne conserve pas vraiment le temps, même si cela ressemble
  • Je ne peux pas faire grand chose sur le fil principal tant que le fil sonore est en cours d'exécution car il devient vraiment lent
  • Si j'appuie sur le bouton de verrouillage ou sur les boutons de volume de l'appareil, le tempo se dégonfle.
  • les sons du système ne fonctionnent pas lorsque le téléphone est silencieux

J'ai acheté un métronome sur l'App Store hier et j'ai constaté que cette application ne présentait aucun des problèmes ci-dessus. Il n’utilisait pas les sons du système car la mise en sourdine de l’iPhone n’arrêtait pas la lecture.

Maintenant, je me demande si quelqu'un peut me guider vers un cadre meilleur et plus robuste pour cette tâche?

Était-ce utile?

La solution

Les bibliothèques audio OSX sont appelées "Core Audio". Il existe différentes manières d’interagir avec le matériel audio et les infrastructures Core Audio. Il existe OpenAL (comme mentionné dans un autre commentaire) qui est une approche standard multi-plateformes de l'audio, un peu comme OpenGL pour les graphiques. Il existe également Audio Unit, une interface basée sur des rappels directement sur le matériel audio, qui vous permet de fournir du son PCM brut en temps réel. Les unités audio sont extrêmement limitées dans le temps, donc si vous recherchez un rythme métronomique, Audio unités peut le faire pour vous. Il existe également une couche au-dessus des unités audio appelée AudioQueue, qui vous permet de planifier un flux audio pour une lecture en temps réel. Un des avantages d’AudioQueue est qu’il peut automatiquement décoder les formats compressés tels que MP3 ou AAC.

Rechercher dans " Présentation générale de Core Audio " dans la documentation pour en savoir plus sur les divers cadres audio pour iPhone.

Autres conseils

Vous pouvez utiliser OpenAL pour travailler avec le son. Il utilise une API de bas niveau et fonctionne rapidement. Aussi, vous devriez lire AudioSessionProgrammingGuide de Apple. Vous y trouverez de nombreuses réponses à vos questions éventuelles.

Je vais allumer une flamme ici, alors si vous n'aimez pas ce commentaire, allez-y. Mais avez-vous examiné la documentation fournie par Apple pour vous?

La documentation le " Mise en route de l’audio " Cette page répertorie plusieurs façons de lire de l’audio. L’une indique explicitement "Pour reproduire les sons avec la plus faible latence des E / S, ou pour fournir une entrée et une sortie audio simultanées, ..." (Je suis probablement en train de violer une NDA ici quoi que ce soit)

Foncez au moins sur la documentation avant de poser une question ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top