2011-02-14 13 views
6

Obtuve una asignación en el trabajo para crear un sistema que pueda dirigir el sonido a diferentes canales de salida de nuestra tarjeta de sonido. Estamos utilizando M-Audio ProFire 610, que tiene 8 canales de salida y se conecta a través de FireWire. También estamos usando un Mac Mini como servidor de host y voy a trabajar en Xcode.Salida de sonido a través de M-Audio ProFire 610

Este es el diagrama de lo que estoy construyendo:

diagram http://img121.imageshack.us/img121/7865/diagramy.png

Al principio pensé que Java será suficiente para este proyecto, sin embargo más tarde descubrí que Java no es capaz de empujar el sonido de Aparte de los canales de salida predeterminados de la tarjeta de sonido, decidí cambiar a C++. El problema es que soy un desarrollador web y no tengo ninguna experiencia en este idioma, por eso busco ayuda de desarrolladores más experimentados.

Encontré un Core Audio Primer para ios4 pero no estoy seguro de cuánto puedo usar para mi proyecto. Me parece un poco confuso, también.

¿Qué pasos debo seguir para completar esta tarea? ¿Qué marcos debo usar? ¿Algún ejemplo de código? Estoy buscando ayuda, sugerencias, consejos, y todo lo que me ayude a completar este proyecto.

+1

+1 para una pregunta cuidadosa que muestre que ha intentado responder usted mismo. –

Respuesta

3

las API primarios son en CoreAudio/AudioHardware.h

mayoría de las muestras/apoyo código proporcionado por Apple está en C++. sin embargo, las API son totalmente C (no sé si eso te ayuda o no).

querrá acceder a la capa de abstracción de hardware (HAL aka), más detalles en este documento:

http://developer.apple.com/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioOverview.pdf

de (una cantidad bastante significativa de) muestras adicionales/uso, consulte $DEVELOPER_DIR/Extras/CoreAudio/

+0

Ahora que he trabajado con C++ durante un par de días, finalmente puedo entender qué está pasando en los archivos de muestra de Core Audio. Parece una biblioteca realmente poderosa. Gracias por su respuesta, fue muy útil. –

+0

@rkrv. de nada, me alegro de que haya sido útil. ¡buena suerte con tu proyecto! – justin

4

Si solo está buscando un paso de audio, es posible que desee ver algo que ya se ha creado, como Jack, que crea un dispositivo de audio de software que se ve y funciona como uno real (puede configurarlo como salida predeterminada para su aplicación) y luego le permite enrutar cada canal en cualquier lugar que desee (incluso a otras aplicaciones).

Si quiere/necesita hacer su propia, definitivamente vaya con C++, para lo cual hay muchos muchos tutoriales (aprendí de cplusplus.com). CoreAudio es la interfaz C/C++ de bajo nivel como mencionó Justin, pero es realmente difícil de aprender y usar. Una API mucho más simple es proporcionada por PortAudio, para lo cual he trabajado un poco en la implementación de Mac. Mire los tutoriales allí, haga algo similar para entrada y salida predeterminadas, y luego para hacer la asignación de canales use PaMacCore_SetupChannelMap, que se describe here. Deberá llamarlo dos veces, una vez para el flujo de entrada y una vez para el flujo de salida. ¡Únase a la lista de correo de PortAudio si necesita más consejos! ¡Buena suerte!

+0

PortAudio parece muy prometedor. De hecho, es más simple que Core Audio y la documentación parece ser más completa. Revisaré sus tutoriales y espero poder usar esta API para mi proyecto.La pregunta que hice fue solo una pequeña parte de todo el sistema que estoy creando, así que creo que usaré PortAudio en lugar de Jack, lo cual me parece un poco confuso. Además, siempre es más divertido trabajar en su propia implementación de API, ¿verdad? Muchas gracias por su consejo, fue extremadamente útil. –

Cuestiones relacionadas