2010-07-24 51 views
7

¿Cuáles son las diferentes maneras para cambiar la velocidad de reproducción de audio en el iPhone, al utilizar Audio Units? ¿Cuáles son las ventajas/desventajas de cada solución?iPhone: Cambiar la velocidad de reproducción de Audio Units

Tengo una unidad mezcladora y una unidad IO. ¿Debo agregar otra unidad (por ej., Unidad de conversión)? ¿Qué parámetros de la unidad de audio debo configurar, en qué bus (de entrada o salida) en qué unidad (es) de audio?

Mi configuración actual:

 -------------------------    ------------------------- 
     |  mixer unit  | -----------> |  IO unit  | 
     -------------------------    ------------------------- 

Respuesta

8

Todas las soluciones a continuación se alterar el terreno de juego de su audio (junto con la velocidad de reproducción). Para corregir el tono de su audio después de que se haya cambiado la velocidad de reproducción, necesitará usar una biblioteca de audio de terceros (como SoundTouch, que tiene una licencia LGPL, para que pueda usarla en su aplicación, sin por lo que es de código abierto, o DiracLE o el smbPitchShift gratuito). Hay una unidad de audio (AUPitch), que puede cambiar el tono de su audio, pero es no disponible para iPhone; solo para Mac

Todas las soluciones a continuación se ponen a prueba, y el trabajo ...

Solución # 1[La mejor solución]

unidad mezcladora 3D: En lugar de un Multicanal La unidad mezcladora usa una unidad mezcladora 3D y establece k3DMixerParam_PlaybackRate en el ámbito de entrada.

Ventajas: k3DMixerParam_PlaybackRate se pueden ajustar en tiempo real, mientras está jugando de audio, sin que suene cualquier saturación u otros efectos secundarios. También es fácil de implementar una vez que tienes unidades de audio en funcionamiento.

Desventajas: Afecta el tono de su audio, pero la diferencia en el tono no se nota realmente si solo necesita alterar la velocidad de reproducción en +/- 8%.

Solución # 2

Cambio de frecuencia de muestreo: Cambiar la frecuencia de muestreo en el bus de salida de la unidad mezcladora. Cambiar la frecuencia de muestreo funciona de manera muy similar a agregar y eliminar muestras.

Ventajas: Funciona bien si quiere multiplicar la velocidad de reproducción por una fracción de un entero (1.2x por ejemplo).

Desventajas: El cambio de la frecuencia de muestreo de la salida del mezclador no se puede establecer sobre la marcha; solo cuando se inicializa la unidad mezcladora. Afecta el tono de tu audio, pero la diferencia en el tono no se nota realmente si solo necesitas modificar la velocidad de reproducción en +/- 8%.

audioDescriptionMixerOutput.mSampleRate = 1.2*kGraphSampleRate; 

Solución # 3

Agregar/eliminar muestras: el paso de sólo cada segundo tercio de la muestra,, ... audio a la entrada de la unidad de audio (unidad de mezcla de mi caso) en su función de devolución de llamada.

Ventajas: Funciona bien si desea acelerar o ralentizar la reproducción de audio en 2x, 3x, 4x, etc. También es fácil de implementar.

Desventajas: Solo puede multiplicar la velocidad de reproducción por un factor entero. Por ejemplo, acelerar la reproducción de audio por 1.2x no es posible agregando o eliminando muestras. Afecta el tono de tu audio.

+0

¿Puedo obtener algún código de ejemplo para esto? – Tornado

Cuestiones relacionadas