PulseAudio e Multicanais
De Enciclopédia do leleobhz
Conteúdo |
[editar] PulseAudio e Multicanais
[editar] Introdução
- Tenho um escritório em casa onde não trabalho sozinho, e por alguma ironia do destino eu sequestrei as caixas de som dos 2 computadores e soquei na minha Intel HDA. Tinha um mixer separado pras caixas ligadas no canal trazeiro (LineOut) e para as dianteiras (Front). Perfeito, som fodástico sempre que precisava. Mas nem sempre as outras pessoas querem ouvir o que eu quero, dai dá briga. E o apaziguador da peleja é o PulseAudio.
[editar] Notas
- O PulseAudio no gutsy NÂO vem com o modulo remap, que é o responsavel por separar os canais em novos dispositivos. Criei um backport dele baseado na versão do hardy, que não tem esse problema e está a disposição no meu repositório.
[editar] Instalação
- Em um sistema com Hardy ou com os backports para Gutsy:
- Shell - root
aptitude -y install ~npulseaudio pavucontrol paman padevchooser
[editar] Configuração
- Básicamente se trata de mudar algumas configurações do padrão. Destaque para a configuração do módulo remap e da mixagem automática, que deve ser desabilitada. Não colocarei toda a configuração como o de costume, mas sim somente o que deve ser mudado.
- /etc/asound
pcm.pulse { type pulse } ctl.pulse { type pulse }
- /etc/pulse/daemon.conf
disable-remixing = yes
- /etc/pulse/default.pa
# Aqui será informada qual a placa de som a ser usada. Ver nos anexos os detalhes desta configuração. load-module module-alsa-sink device=hw:0 sink_name=IntelHDA_Out channels=4 channel_map=front-left,front-right,rear-left,rear-right # Cada linha dessa cria um dispositivo virtual novo. O primeiro está ajustado para ter dois canais, que mapear-se-ão de acordo com o que está # no channel_map (Mastermap diz quais canais da placa real serao usados, e channelmap diz quais serao os novos canais). O Sinkname deve # também ser ajustado para um nome diferente, sem espaços, e descritivo. load-module module-remap-sink sink_name=front_stereo master=IntelHDA_Out channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right load-module module-remap-sink sink_name=rear_stereo master=IntelHDA_Out channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right
- /etc/default/pulseaudio
PULSEAUDIO_SYSTEM_START=1 DISALLOW_MODULE_LOADING=0
- Agora é só iniciar o serviço:
- Shell - root
sudo invoke-rc.d pulseaudio restart
[editar] Começo de brincadeira
- Toda a configuração é feita no pavucontrol, ou PulseAudio Volume Control. Normalmente ele está no menu Multimedia, mas pdoe ser aberto via linha de comando também.
- Na aba Playback tem os programas que estão usando o PulseAudio, e o controle de volume individual. No menu mostrado na tela abaixo, acessavel clicando com o botão direito na aplicação, é possivel escolher para onde o audio vai. A ordem e a mesma que está no default.pa, sendo que a primeira opção sempre envia para a placa diretamente.
- Na aba Output Devices, estão os mixers ordenados por placa, permitindo também ajustar o volume por placa ou "subdivisão" dela. No mesmo processo do anterior, se você acessar o menu auxiliar, poderá selecionar qual delas será a padrão (quando uma nova aplicação abrir). Sem mistérios.
- Eu ativei também o PulseAudio para ouvir via tcp, pois assim quando o pessoal quiser ouvir música, é so abrir o player local e tocar. Bastam mais linhas
- /etc/pulse/default.pa
# Deixei assim porque estou em rede local. A linha comentada faz com que somente se escute em uma dada rede (Neste caso 192.168.0.0) #load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16 #load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16 load-module module-esound-protocol-tcp auth-anonymous=1 load-module module-native-protocol-tcp auth-anonymous=1 load-module module-zeroconf-publish
- ~/.pulse/client.conf - No cliente
default-server = IPDAMAQUINA
- Basta reiniciar o pulseaudio e pronto.
[editar] Anexos
[editar] Canais
- Você pode usar quantos canais quiser. O Pulseaudio reconhece a lista em ordem, ou seja, o canal 0 deve ser o primeiro a ser listado. Para descobrir a sequência, usa-se o utilitário speaker-test (e o único parametro que muda é o -c, que contem o número de canais que deseja ser usado).
- Shell - root
speaker-test -c4 -Dhw:0 -t wav -l1
- Um exemplo:
- Saida de comando
leleobhz@zorg:~/PROGRAMAS/LINUX$ speaker-test -c4 -Dhw:0 -t wav -l1 speaker-test 1.0.14 Dispositivo de reprodução é hw:0 Parâmetros do stream são 48000Hz, S16_LE, 4 canais Arquivo(s) WAV Taxa alterada para 48000Hz (requisitada 48000Hz) Tamanho do buffer tem um intervalo de 32 à 8192 Tamanho do período tem um intervalo de 16 à 4096 Usando tamanho máximo de buffer 8192 Períodos = 4 period_size definido = 2048 buffer_size definido = 8192 0 - Da Esquerda 1 - Da Direita 3 - Direita Posterior 2 - Esquerda Posterior Tempo por peíodo = 5,718131
- Está claro que o primeiro canal é o frontal da esquerda, o segundo é o frontal da direita e por ai vai. Cada placa tem seu mapeamento, e fica facil saber quem é quem porque sai um som falando que caixa é. Basta definir a sequência na configuração do PulseAudio (se 0 e frontal da esqueda, então o primeiro item no channel-map tem que ser front-left).


