Trucos de audio: qué hacer cuando fallan los dispositivos agregados (salida simultánea analógica y S/PDIF)
Cómo enviar el sonido de Mac OS X simultáneamente por la salida de línea analógica y por la salida digital óptica S/PDIF con control de volumen por software utilizando Soundflower y AU Lab cuando los Dispositivos Agregados de Configuración Audio MIDI solo reproducen por el primer canal.
- Autor principal
- @Dies Publicado el 2008-11-28
- Colección
- Arquitectura Base OSx86 10.X y Arranque
- Registro histórico
- 212,798 lecturas históricas · 5 notas de campo seleccionadas (de 6 mensajes) · 2008-11-28 – 2011-11-13
- Voces acreditadas (5)
- @Dies (2)@Ianxxx@fahrvergnuugen@mr_murder@zorro23
- Referencia de hardware
- Mac USB Audio DACs ↗ SATA III & NVMe SSDs ↗ USB 3.2 Boot Flash Drives ↗
No sé si esto se debe específicamente a mi hardware o configuración, o si hay más gente en la misma situación, pero pensé que compartir el planteamiento y la solución podría ayudar a cualquiera que busque hacer lo mismo o algo parecido.
Al menos en mi caso, me costó muchísimo dar con información al respecto, y cuando por fin encontré una pista estaba bastante desactualizada. Me habría gustado enlazar aquí aquel hilo original, pero lamentablemente no he vuelto a encontrarlo...
Para mí, uno de los mayores inconvenientes de usar OS X en hardware de PC era que, mientras cualquier otro sistema operativo moderno no tiene el menor problema en enviar el audio simultáneamente a todas las salidas disponibles siempre que existan controladores, OS X gestiona el enrutamiento de audio de una forma muy distinta. Puede que Core Audio sea una arquitectura muy superior cuando se usa el hardware previsto por Apple, pero en este escenario concreto no me estaba poniendo las cosas nada fáciles.
Después de parchear AppleHDA, el sonido integrado de mi placa fue reconocido y todas las conexiones funcionaban bien por separado: auriculares, salida de línea (Line Out), salida digital S/PDIF y micrófono. Genial. Ahora solo necesitaba que el sonido saliera al mismo tiempo tanto por la salida de línea analógica como por la salida digital S/PDIF. En teoría no debía haber problema: todo lo que leí aseguraba que bastaba con crear un Dispositivo Agregado (Aggregate Device) en Configuración Audio MIDI y que "funcionaría a la primera".
En la práctica, mi resultado fue que:
a.) No funcionó en absoluto: hiciera lo que hiciera, el sonido solo salía por una única salida, concretamente por la primera que figuraba en la lista del dispositivo agregado.
b.) Dado que OS X desactiva el control de volumen por software en las salidas digitales S/PDIF, incluso aunque el dispositivo agregado hubiera funcionado me habría quedado sin control de volumen desde el teclado o la barra de menús.
La solución en mi caso consistió en combinar Soundflower ↗ con AU Lab (herramienta incluida en el paquete Xcode de Apple, dentro de /Developer/Applications/Audio/AU Lab). Al instalar Soundflower se añaden dos dispositivos virtuales de audio en el sistema (uno de 2 canales y otro de 16 canales), pero por sí solos no redirigen el sonido a ningún sitio hasta que los enlazas mediante AU Lab.
Tras instalar Soundflower y reiniciar, abrí Configuración Audio MIDI (Audio/MIDI Setup) y creé un Dispositivo Agregado llamado "Surround Sound" compuesto por mi salida digital S/PDIF, mi salida de línea analógica y el nuevo dispositivo virtual Soundflower (16ch). A continuación abrí AU Lab para enlazarlos: en la primera ventana de creación de documento añadí las salidas correspondientes a la salida de línea y a S/PDIF.
En la sección de entradas solo necesité definir una entrada.
En la pestaña siguiente está el quid de la cuestión: hice clic en los canales de entrada (Input Channels) y seleccioné los canales de Soundflower (16ch);
luego hice clic en los canales de salida (Output Channels), seleccioné el dispositivo agregado "Surround Sound" que había creado antes y pulsé Done (Aceptar),
quedando una ventana de mezcla como la de la captura adjunta.
Los buses 1 y 2 añadidos actúan además como preamplificador para que el sonido suene más potente y nítido, mientras que la salida adicional silenciada está ahí porque comprobé que sin ella a veces se producía un molesto acople de retroalimentación.
Puede que no sea la solución más elegante del mundo —y técnicamente no es sonido envolvente discreto 5.1/7.1, sino estéreo duplicado—, pero a mí me resuelve el papeleta por completo: tengo sonido saliendo simultáneamente por mis 7 altavoces y el subwoofer, y además conservo el control de volumen general por software desde Mac OS X. Basta con guardar el documento de AU Lab y añadirlo a los ítems de inicio de sesión para que se abra automáticamente al arrancar (solo hay que minimizarlo u ocultarlo con Cmd+H).
Espero que esta información le resulte útil a alguien más.
Notas de campo y pruebas de la comunidad
5 respuestas técnicas seleccionadas de 6 intervenciones originales
Funciona genial, muchas gracias.
Por cierto, descubrí un truco para no tener que minimizar la ventana de AU Lab en cada arranque:
abre el archivo de configuración .trak de AU Lab con TextMate (o cualquier editor de texto), baja hasta el final y cambia:
<key>Window Frame</key>
<string>{{388, 40}, {355, 577}}</string>
<key>Window Max</key>
<string>{2560, 1622}</string>
<key>Window Min</key>
<string>{360, 540}</string>
por:
<key>Window Frame</key>
<string>{{1, 1}, {1, 1}}</string>
<key>Window Max</key>
<string>{2560, 1622}</string>
<key>Window Min</key>
<string>{1, 1}</string>
Es una lástima que AU Lab muestre un aviso de cierre inesperado al apagar el equipo si no cierras antes el archivo, pero no se puede tener todo.
Una alternativa comercial más elegante sería un programa llamado Upmix, de la misma empresa que desarrolló Soundflower, pero lamentablemente es de pago y cuesta casi 500 dólares.
Edición: Disculpa, Ianxxx, sin querer recorté la primera parte de tu mensaje al moderarlo; ¿podrías volver a añadirla? Mil disculpas.
No pasa nada :-) Ian
Me he registrado en el foro únicamente para darte las gracias por publicar esto. Llevaba 2 días enteros volviéndome loco para conseguir que mi Mac sacara el sonido por dos tarjetas de audio a la vez. Aún no me puedo creer que algo tan básico sea tan complicado en OS X.
Gran guía (Y), gracias. Ojalá algún día tengamos una solución más "limpia" a nivel de controlador... VoodooHDA pinta bastante prometedor.
@Diesa.) No funcionó en absoluto: hiciera lo que hiciera, el sonido solo salía por una única salida, concretamente por la primera que figuraba en la lista del dispositivo agregado.
Eso ocurre al reproducir fuentes estéreo porque OS X no incluye una opción integrada de relleno de altavoces (speaker fill), sino que envía cada pista únicamente al canal discreto especificado en el archivo multimedia. ¿Probaste a reproducir un vídeo con pista AC3 5.1 configurando Perian en salida multicanal, o usando VLC en lugar del Reproductor de DVD de Apple?
@Diesb.) Dado que OS X desactiva el control de volumen por software en las salidas digitales S/PDIF, incluso aunque el dispositivo agregado hubiera funcionado me habría quedado sin control de volumen desde el teclado o la barra de menús.
Es normal que una salida S/PDIF no tenga control de volumen por software, ¿no? Porque la señal se envía directamente en digital sin procesarse en el mezclador del sistema.
Yo utilizo 3 salidas de línea analógicas combinadas en un Dispositivo Agregado para tener sonido envolvente 5.1 en mi códec ALC888 y también pierdo el control de volumen general (es una limitación propia de los dispositivos agregados en OS X).
Sin embargo, di con un pequeño truco que permite recuperar el control de volumen por software sin necesidad de usar AU Lab:
1) Asegúrate de subir al máximo el volumen de cada una de las salidas individuales en las Preferencias del Sistema -> Sonido.
2) Crea tu Dispositivo Agregado como de costumbre y asigna los altavoces en Configuración Audio MIDI.
3) Usando Soundflowerbed (incluido con Soundflower), asigna los 6 primeros canales de Soundflower (16ch) a los 6 canales de tu Dispositivo Agregado.
4) Selecciona Soundflower (16ch) como dispositivo de salida predeterminado del sistema y configura los altavoces en modo multicanal dentro de Configuración Audio MIDI.
5) ¡Listo! Ya tienes control de volumen por software desde el teclado para todo tu sistema 5.1.
Espero que esto le sirva a alguien...
@mr_murderEs normal que una salida S/PDIF no tenga control de volumen por software, ¿no? Porque la señal no se procesa por software, sino que se envía directamente en digital (pass-through).
Desde un punto de vista estrictamente técnico tienes razón, por supuesto: se asume que el amplificador o receptor externo que decodifica la señal digital se encarga de regular el volumen.
PERO en la práctica cualquier otro sistema operativo de escritorio (Linux o Windows) permite regular por software el nivel de señal antes de enviarla a la salida digital, al menos en mi experiencia.
Retraso de audio (latencia) entre distintos dispositivos de salida
Ahora en OS X Lion es muy sencillo crear un "Dispositivo de salida múltiple" (Multi-Output Device) directamente desde Configuración Audio MIDI para sacar sonido por varias salidas a la vez.
En mi Hackintosh tengo la salida de línea analógica estándar conectada a un amplificador estéreo y, al mismo tiempo, la salida HDMI conectada a un televisor LCD LG (que usa sus propios altavoces integrados).
El problema es que el televisor LCD introduce un retraso (latencia) apreciable en el sonido respecto al amplificador analógico, produciendo efecto eco.
Ando buscando alguna forma de aplicar un retardo de sincronización únicamente a la salida de línea analógica y dejar sin retardo la salida digital HDMI, para que ambos juegos de altavoces suenen exactamente al unísono.
¿Alguien tiene alguna idea de cómo lograrlo?
Fuentes y registro de autoría (5 usuarios acreditados · Hilo #1645)
| Usuario | Rol en la monografía | Mensajes | Periodo activo |
|---|---|---|---|
| @Dies | Autor principal | 2 | 2008-11-28 → 2009-04-27 |
| @Ianxxx | Colaborador | 1 | 2008-12-17 |
| @fahrvergnuugen | Colaborador | 1 | 2009-04-03 |
| @mr_murder | Colaborador | 1 | 2009-04-25 |
| @zorro23 | Colaborador | 1 | 2011-11-13 |