Aqui está a seção relevante do meu ~/.asoundrc
. Eu tenho meus alto-falantes conectados a um dispositivo de áudio USB que aparece como hw:3
para ALSA. Na minha configuração pessoal, já existe um dispositivo hw3mix
, conforme descrito aqui , que mistura vários fluxos de clientes no hw:3
. Outras opções são possíveis, conforme mostrado nas linhas comentadas:
pcm.hw3highpass {
type ladspa
slave.pcm "plug:hw3mix";
# you can choose a different hardware device (no mixing) like this:
# slave.pcm "plughw:0,0";
# and you can even specify basic mixing in the same line:
# slave.pcm "plug:dmix:0"
# but note that the following doesn't work, we need 'plug' to
# convert to/from floating point
# slave.pcm "hw3mix";
path "/usr/lib/ladspa";
plugins [{
label hpf
input {
controls [ 1000 ]
}
}]
hint {
show on
description "Highpass filter for hw:3"
}
}
pcm.!default plug:hw3highpass
O filtro passa-alta é um plug-in LADSPA (rótulo hpf
). Outros plugins estão disponíveis que podem ser úteis em minha situação de vida, por exemplo, para adicionar um compressor .
O plugin plug
, que invoco duas vezes, é um plugin mágico que faz a conversão automática de formato. É necessário fazer interface com o LADSPA, que quer ponto flutuante. Você pode ver a cadeia de filtros e observar o fato de que a conversão de ponto flutuante está sendo feita, executando o comando aplay -v some.wav
. Sem um prefixo plug:
na definição% escravo hw3mix
você obtém uma mensagem de erro obscura "ALSA lib pcm_params.c: 2162: (snd1_pcm_hw_refine_slave) Slave PCM não utilizável". Sem plug:
no alias padrão na última linha, você recebe outra mensagem de erro obscura "aplay: set_params: 1292: tipo de acesso não disponível". Yay Linux!
Estou perguntando e respondendo a minha própria pergunta porque a documentação da ALSA era incompreensível, e outras soluções que encontrei na rede foram desnecessariamente complicadas - usando uma% numérica id
em vez de label
para a seção de plugins LADSPA; ou definir dois dispositivos nomeados extras para fazer a conversão de número inteiro flutuante < - & gt ;, em vez de usar o prefixo plug:
como mostrado aqui; ou não mencionar a possibilidade de aliasing diretamente para um dispositivo plug:...
como eu faço na última linha. Fiquei surpreso ao descobrir como a configuração é simples e como a ALSA / LADSPA é útil e poderosa, uma vez que se entende o básico.
Eu encontrei o tutorial do Volker Schatz "Um olhar atento sobre a ALSA" indispensável para descobrir algumas dessas coisas . Aparentemente, a ALSA evoluiu um pouco desde que seu tutorial foi escrito, pois ele diz que nunca fez o Dmix funcionar, e ele diz que aliases para dispositivos com argumentos não são permitidos (meu pcm.default
é um alias).