2010-11-12 21 views
5

¿Puedo establecer cualquier frecuencia de muestreo que desee? ¿Cuáles son las restricciones?iOS: Unidades de audio: configuración de frecuencia de muestreo arbitraria

¿Qué hay de la velocidad de muestreo de hardware? Y una vez que se establece, ¿cuál es la restricción en las tasas de muestreo internas pasadas entre unidades?

Supongo que la velocidad real del hardware puede tener un desplazamiento de bits de 44.1KHz, y cualquier frecuencia de muestreo interna debe ser un desplazamiento de bits hacia abajo de este valor original (por ejemplo, 22.1KHz, 11.05KHz). ¿Está esto cerca?

Por lo que yo entiendo,
1. conjunto la frecuencia de muestreo de hardware de la sesión de audio.
2. El sistema se establecer una frecuencia de muestreo tan cerca como es capaz a la frecuencia de muestreo I especificado. 3.
entonces consultar la sesión de audio para la misma propiedad puse, que me dará la tasa real de la muestra que está utilizando

A nivel de unidades de audio, específicamente la unidad RemoteIO, documentación indica que los dos puntos en el que la unidad se conecta al hardware (es decir, el alcance de entrada del micrófono (entrada) de bus y el alcance de salida del bus altavoz (salida)), la tasa de muestra puede ser recuperados pero noconjunto.

Sin embargo, intento acceder a este valor mientras construyo la unidad de E/S remota, y devuelve cero. Supongo que tal vez necesito iniciar la unidad antes de que pueda obtener datos significativos de sus conexiones (el acto de iniciarlo probablemente crea las conexiones). Entonces la solución aquí parece ser obtener la frecuencia de muestreo de la sesión de audio y usar eso, según lo mencionado anteriormente.

NECESIDAD TAG: Audio-Unidad

+0

Relacionados, Enlace: http: // stackoverflow.com/questions/2170523/coreaudio-audiounitsetproperty-always-failed-to-set-sample-rate/4160933 # 4160933 –

+0

¿Qué plataforma de hardware y sistema operativo? –

Respuesta

1

Estoy asumiendo que estás en iOS ya que mencionas AudioSessions. Por lo tanto, querrá:

  1. Verificar el hardware de la entrada de audio. AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)

  2. Establecer la sesión de audio para "reproducir & modo de grabación". AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...) con kAudioSessionCategory_PlayAndRecord

  3. Activar la sesión. AudioSessionSetActive()

  4. Obtenga la frecuencia de muestreo preferida. AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)

A continuación, puede configurar su cadena de procesamiento de audio con la frecuencia de muestreo correcta.

En cuanto a la reproducción de audio, puede usar cualquier frecuencia de muestreo y la API debe convertirla a la tasa de muestreo de salida del hardware. Obviamente, si usa una frecuencia de muestreo muy alta, consumirá mucha memoria y tiempo de CPU.

+0

Esto no responde del todo la pregunta que estoy haciendo ... –

+0

¿De qué * preguntas * entonces? Si se trata de hardware, debe especificar qué hardware, ya que no son todos iguales. – lucius

+0

Ohmu pregunta cómo establecer una frecuencia de muestreo arbitraria. Él/ella no está preguntando cómo acceder a la frecuencia de muestreo del hardware. Tengo el mismo problema en este momento. Quiero que mi AudioUnit de RemoteIO funcione en 22050 para reducir los problemas de latencia con lo que está sucediendo en el software. –

Cuestiones relacionadas