Jusqu’à présent je n’ai jamais eu besoin d’utiliser du son dans les applications que j’ai faite.
Actuellement, je prépare un petit jeu de mémoire (bientôt le teaser + site web et apps en ligne) et j’ai eu besoin de gérer le son pour la musique de fond ainsi que pour les effets.
Cet article va juste permettre d’évoquer les best practises pour la gestion audio et le code pour pouvoir implementer cela.
Commençons par le choix du format

On a le choix entre du mp3, caff et de l’aiff.
Le caff (non compressé) est le format natif de l’iphone, l’aiff (compressé) est supporté de façon native et le mp3 ne se présente plus.

L’aiff et le caff sont rapides à charger car comme je l’ai dit plus haut ils sont nativement supporté par l’iPhone.

Quel format pour quel usage

Pour ma part j’utilise AVAudioPlayer pour la musique de fond et AudioToolbox pour tout ce qui concerne les effets

Un peu de code

Importer dans votre projet les frameworks AudioToolbox et AVFoundation

Dans le header de votre classe importer ces 2 frameworks et ajouter également le protocole AVAudioPlayerDelegate
On déclare un attribut pour la musique de fond.

Code pour la musique avec AVFoundation

Maintenant la méthode qui va charger un fichier de musique.

On récupère l’url du fichier à charger et on initialise une instance de AVAudioPlayer avec.

Ensuite déclare le delegate à self et le numberOfLoops à -1 soit le son sera joué en boucle

Ne pas oublier le prepareToPlay pour pre-chargé le son

Et évidemment les méthodes du delegate

Pour jouer la musique ou la mettre sur pause on utilise les méthodes de AVAudioPlayer

Évidemment c’est le minimum que je vous montre, un petit booléen pour connaître l’état de la musique (pause ou pas) vous sera très utile

Code pour les effets avec AudioToolbox

Pour jouer et mettre le son en pause on utilisera ces 2 fonctions :

Et pour faire un release sur le son

J’espère que ça vous sera utile et n’hésitez pas à commenter si vous avez des tips ou si ils manquent des informations