2010-02-06 13 views
1

Envisager aurioTouch exemple d'application fourni par Apple. Je voulais simuler un long traitement de l'audio enregistré et modifié l'échantillon en introduisant un retard de 0,1 seconde dans la méthode de rappel de rendu: PerformThru. Cela entraîne une distorsion de l'audio et du bruit statique à travers les haut-parleurs ou les écouteurs de l'iPhone. Le bruit est entendu même lorsque le bouton de sourdine de l'application est activé, ce qui produit essentiellement un silence dans le bus de sortie AudioUnit.Son déformé lors de l'utilisation d'E/S distantes AudioUnit

Quelqu'un peut-il donner une explication détaillée de ce qui se passe au niveau bas lorsque la fonction de rappel de l'hôte (dans notre exemple PerformThru) ne revient pas en temps opportun? Pourquoi une fonction de rappel mal performante fait-elle du bruit à l'iPhone? Je comprends que le code dans la fonction de rappel doit être hautement optimisé. Je voudrais quand même savoir s'il est possible d'empêcher le bruit de se produire.

Est-il possible de modifier l'échantillon aurioTouch pour que l'AudioUnit ne fasse que l'enregistrement et coupe complètement la lecture?

Répondre

2

Si vous souhaitez introduire un délai, vous devez le faire via la mise en mémoire tampon, et non simplement en retardant le rappel. Par exemple. Pour 0,1 s et une fréquence d'échantillonnage de 44,1 kHz, vous devez tamponner 4410 échantillons supplémentaires. Initialement, vous passeriez 4410 0 et ensuite commencer à passer vos échantillons tamponnés (retardés).