Truques de Áudio — ou melhor, quando os Dispositivos Agregados falham...
Como enviar áudio simultaneamente para a saída analógica (Line Out) e para a saída óptica digital (S/PDIF) com controle de volume por software no Mac OS X quando o Dispositivo Agregado nativo do Configuração Áudio e MIDI falha, combinando Soundflower (16ch) e AU Lab.
- Autor Principal
- @Dies Publicado em 2008-11-28
- Coleção
- Arquitetura Base OSx86 10.X e Bootloaders
- Histórico no Arquivo
- 212,798 leituras históricas · 5 notas técnicas selecionadas (de 6 postagens) · 2008-11-28 – 2011-11-13
- Colaboradores Creditados (5)
- @Dies (2)@Ianxxx@fahrvergnuugen@mr_murder@zorro23
- Referência de Hardware
- Mac USB Audio DACs ↗ SATA III & NVMe SSDs ↗ USB 3.2 Boot Flash Drives ↗
Não sei se isto é específico do meu hardware/configuração ou se outras pessoas passam pela mesma situação, mas imaginei que explicar a lógica por trás da solução poderia ajudar quem estiver tentando fazer a mesma coisa.
Pelo menos para mim, foi bem difícil encontrar informações sobre isso e, quando finalmente achei uma pista, estava bastante desatualizada. Eu até gostaria de citar o tópico original aqui, mas infelizmente não consegui encontrá-lo novamente...
Para mim, uma das maiores limitações do OS X rodando em hardware não-padrão (Hackintosh) era que, enquanto outros sistemas operacionais enviam áudio automaticamente para todas as saídas conectadas ao mesmo tempo sem esforço, o OS X lida com o roteamento de áudio de forma bem diferente. A arquitetura CoreAudio pode ser excelente quando todos os componentes esperados por um Mac real estão presentes, mas no meu caso não estava sendo nada amigável.
Após aplicar o patch na AppleHDA, meu som onboard foi reconhecido e todas as portas funcionavam individualmente: fone de ouvido, saída de linha (Line Out), S/PDIF óptico e microfone. Ótimo! Só que eu precisava que o som saísse simultaneamente pela saída analógica (Line Out) e pela saída digital (S/PDIF). Tudo o que li dizia que bastava criar um Dispositivo Agregado (Aggregate Device) no utilitário Configuração Áudio e MIDI e que "funcionaria direto".
Na prática, o que aconteceu comigo foi:
a) Não funcionou de jeito nenhum: o som saía apenas por uma única saída — sempre a primeira listada dentro do Dispositivo Agregado.
b) Como o OS X desativa o controle de volume por software na saída digital S/PDIF, mesmo que o Dispositivo Agregado funcionasse, eu ficaria sem controle de volume pelo teclado/sistema.
A solução definitiva no meu caso foi combinar o Soundflower ↗ com o aplicativo AU Lab, que faz parte do pacote Xcode da Apple (em /Developer/Applications/Audio/AU Lab). A instalação do Soundflower adiciona dois dispositivos virtuais de áudio no sistema (um de 2 canais e outro de 16 canais), e o AU Lab entra em cena para fazer a ponte e o roteamento em tempo real.
Após instalar o Soundflower e reiniciar, abri o utilitário Configuração Áudio e MIDI (Audio MIDI Setup) e criei um Dispositivo Agregado chamado "Surround Sound" reunindo minha saída digital (S/PDIF), a saída de linha (Line Out) e o dispositivo virtual Soundflower (16ch). Em seguida, abri o AU Lab: na primeira janela de criação de documento, adicionei as saídas correspondentes à saída de linha e ao S/PDIF.
Na seção de entrada, selecionei apenas uma entrada.
Na aba de canais de entrada (Input Channels), selecionei o Soundflower (16ch).
Na aba de canais de saída (Output Channels), selecionei o Dispositivo Agregado "Surround Sound" criado anteriormente e cliquei em Done.
O resultado final no mixer do AU Lab ficou como mostrado na imagem:
Os barramentos Bus 1 e Bus 2 adicionados funcionam como um pré-amplificador, deixando o som mais forte e cristalino, enquanto a saída extra não utilizada evita um ruído de microfonia/feedback que ocorria ocasionalmente sem ela.
Pode não ser a solução mais elegante do mundo — e tecnicamente é estéreo espelhado e não surround discreto —, mas funciona perfeitamente para o meu uso: tenho som saindo em todas as 7 caixas e no subwoofer simultaneamente, além de controle total de volume via software! Basta salvar o documento do AU Lab e adicioná-lo aos Itens de Início da conta para que abra oculto automaticamente no login.
Espero que esta dica seja útil para mais alguém!
Notas de Campo e Relatos da Comunidade
5 respostas técnicas selecionadas a partir de 6 postagens originais
Funcionou perfeitamente, muito obrigado!
Descobri um jeito de não precisar minimizar a janela manualmente toda vez que o sistema inicia:
abra o arquivo .au no TextMate, role até o final e altere:
<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>
para:
<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>
Pena que ele exibe um aviso de erro ao encerrar sem fechar o documento antes, mas não dá para ter tudo.
Uma abordagem mais elegante seria um programa chamado Upmix, da mesma desenvolvedora do Soundflower; infelizmente, além de ser pago, custa quase 500 dólares.
Edit: Desculpe, Ianxxx, acabei cortando sem querer a primeira parte do seu post ao editar; você poderia adicioná-la novamente? Peço desculpas.
Sem problemas :-) Ian
Fiz meu cadastro no fórum só para agradecer por este post! Passei 2 dias inteiros tentando descobrir como fazer meu Mac enviar som para duas placas de áudio simultaneamente. Não dá para acreditar como algo tão simples pode ser tão trabalhoso no OS X.
Ótimo guia (Y), obrigado! Tomara que surja uma solução mais "limpa" no futuro... a VoodooHDA parece bem promissora.
@Diesa) Não funcionou de jeito nenhum: o som saía apenas por uma única saída — sempre a primeira listada dentro do Dispositivo Agregado.
Isso acontece ao reproduzir áudio estéreo comum: o OS X não possui uma função integrada de "preenchimento de caixas" (speaker fill), então o som é enviado apenas para os canais discretos especificados na mídia original. Você chegou a testar um vídeo com áudio AC3 5.1 com o Perian configurado para saída multicanal? Além disso, o DVD Player da Apple só solta 5.1 via S/PDIF (saída digital); para multicanal analógico é preciso usar o VLC.
@Diesb) Como o OS X desativa o controle de volume por software na saída digital S/PDIF, mesmo que o Dispositivo Agregado funcionasse, eu ficaria sem controle de volume pelo teclado/sistema.
Não é normal que uma saída S/PDIF não tenha controle de volume via software? Afinal, o sinal não está sendo processado por software, mas apenas repassado digitalmente (pass-through).
Eu uso 3 saídas de linha (Line-Out) combinadas em um Dispositivo Agregado para som 5.1 analógico no ALC888 e também fico sem controle de volume — é uma limitação dos próprios Dispositivos Agregados do OS X.
Mas descobri um pequeno truque que qualquer pessoa com esse problema pode usar para recuperar o controle de volume por software:
1) Certifique-se de deixar cada saída individual no volume máximo nas Preferências do Sistema -> Som.
2) Crie o Dispositivo Agregado normalmente e atribua as caixas no utilitário Configuração Áudio e MIDI.
3) Usando o Soundflowerbed, mapeie os 6 canais do Dispositivo Agregado para os primeiros 6 canais do Soundflower (16ch).
4) Selecione o Soundflower (16ch) como saída padrão do sistema e configure os alto-falantes para saída multicanal no Configuração Áudio e MIDI.
5) Pronto: controle de volume via software funcionando no seu sistema 5.1!
Espero que ajude alguém...
@mr_murderNão é normal que uma saída S/PDIF não tenha controle de volume via software? Afinal, o sinal não está sendo processado por software, mas apenas repassado digitalmente (pass-through).
Do ponto de vista estritamente técnico, você tem toda razão — parte-se do princípio de que o receiver ou amplificador externo que recebe o sinal digital cuidará do controle de volume.
PORÉM, todos os outros grandes sistemas operacionais (Linux, Windows) normalmente oferecem controle de volume por software para todas as saídas disponíveis, pelo menos na minha experiência.
Atraso de som (delay) em dispositivos selecionados
Agora no Lion ficou muito fácil criar um Dispositivo de Saída Múltipla (Multi-Output Device) no Configuração Áudio e MIDI para soltar áudio em várias saídas ao mesmo tempo.
Tenho um Hackintosh com a saída de linha analógica padrão conectada a um amplificador estéreo e também uma saída HDMI ligada a uma TV LCD da LG (usando os alto-falantes embutidos da TV).
O problema é que existe um atraso (delay) perceptível no som que sai pela TV LCD em relação ao amplificador analógico.
Estou procurando uma solução que permita aplicar um pequeno atraso compensatório na saída analógica (Line-Out) e zero atraso na saída digital (HDMI), para que o som saia perfeitamente sincronizado nos dois conjuntos de caixas.
Alguém tem alguma ideia?
Fontes e Registro de Autoria (5 membros creditados · Tópico #1645)
| Usuário | Contribuição no Dossiê | Postagens | Período Ativo |
|---|---|---|---|
| @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 |