2011-05-31 17 views
5

Actualmente estoy usando la API de servicios de cola de audio de Mac OS X para la grabación de audio y análisis de sonido. Funciona bien usando la entrada de micrófono predeterminada.¿Seleccionar el micrófono de entrada para Mac Audio Queue Services?

Si hay más de un micrófono conectado a la Mac (USB, conector de auriculares, etc.), ¿hay alguna manera de enumerar y seleccionar mediante programación qué micrófono se utilizará para la entrada de audio dentro de una aplicación? (por ejemplo, no tiene que enviar al usuario al panel de preferencias del sistema, lo que puede afectar a otras aplicaciones de audio de los usuarios). De ser así, qué API se deben usar para seleccionar la entrada del micrófono.

Respuesta

3

Para enumerar los dispositivos de entrada disponibles, por favor ver mi respuesta a AudioObjectGetPropertyData to get a list of input devices.

Una vez que haya determinado el dispositivo de entrada que desea utilizar, puede establecer la propiedad kAudioQueueProperty_CurrentDevice en el UID del dispositivo.

+0

No he podido verificar esta respuesta con otra entrada de micrófono en mi Mac, pero se ve bien. – hotpaw2

0

Si configura la cola de audio para leer desde el dispositivo de entrada predeterminado, se leerá desde el micrófono que está seleccionado como predeterminado en la ficha Preferencias del sistema-> Soubd-> Input.

+0

Ver la pregunta actualizada. Las preferencias del sistema tienen un efecto global, no solo para mi aplicación de audio. – hotpaw2

1

Me temo, no, porque AQ está codificado para usar la entrada predeterminada (según mi mejor conocimiento). AQ es bastante limitado y solo iOS ofrece más control a través de AutoSessions. Sin embargo, puede utilizar AUHAL para grabar desde un dispositivo arbitrario:

http://developer.apple.com/library/mac/#technotes/tn2091/_index.html

No necesitará lista 4 desde arriba porque lo utilizará el AudioDeviceID para el dispositivo que haya elegido (presumiblemente obteniendo la lista de dispositivos usando AudioObjectGetPropertyDataSize y eligiendo el que desee).

Fwiw: si decide que es demasiado, se puede suponer que todavía utilizan AudioHardwareSetProperty para establecer kAudioHardwarePropertyDefaultInputDevice a partir del código - no es lo que quería, pero sin duda menos trabajo ...

+0

gracias por el enlace, excelente documentación para AudioUnit –

Cuestiones relacionadas