Como configurar um Debian Studio: Como usar mais de uma interface de áudio no Linux

Agora você já tem um Debian Studio!

Nas postagens anteriores mostramos como compilar um kernel RT no Debian 12, as configurações necessárias para o sistema de áudio ter prioridade máxima e a instalação e configuração do JACK. Nesta postagem irei abordar algo muito útil, que trata-se da utilização, simultânea, de mais de uma interface de áudio no Linux.

Acontece que há alguns anos tive um pequeno problema ao tentar usar duas interfaces, simultaneamente, no Linux por meio do JACK. Mas após algumas pesquisas consegui realizar os procedimentos necessários para tal. Como já havia postado essas informações em outro local, estou repostando aqui para complementar nossa série de postagens sobre a configuração de um Studio no Debian 12.

Abaixo seguem uma breve descrição do problema ocorrido e a melhor solução encontrada naquele momento. Não quero afirmar que está é a única solução viável, porém foi a melhor solução encontrada naquela situação, pode ser que atualmente outras soluções também estejam disponíveis.

Relatando o caso

Eu tenho um teclado Midi UMX 250 da Behringer, que é um controlador midi, e com ele veio uma interface de áudio USB, a UCA222. Ambos foram reconhecidos pelo sistema assim que os conectei, mas o Jackd, por default, só permite o uso de uma interface de áudio.

Sendo assim, eu tinha que escolher entre a placa interna do Notebook ou a USB. Só que eu queria usar as duas placas, pois assim poderia gravar em dois canais diferentes ao mesmo tempo.

Procurei muito, quase que não acho a solução, pensava até em desistir, mas encontrei uma solução simples que funcionou muito bem. Até encontrei outras formas de fazer o que queria, mas o Alsa não é tão simples de ser configurado para tal.

Tentei o PulseAudio e nele consegui botar as duas placas para rodar juntas, mas ele com o Jackd, não é muito viável. Então encontrei uma solução que funcionou perfeitamente comigo, só falta testar mais para ver se realmente esta é a melhor opção.

ALSA_IN E ALSA_OUT

A solução para o uso de mais de uma interface de áudio é encontrada em dois comandos, são eles o ‘alsa_in’ e o ‘alsa_out’, estes comandos fazem com que possamos usar mais de uma interface de áudio no Jackd.

Isto é importante porque existem vários equipamentos de áudio que possuem uma interface própria, como microfones, teclados midi, etc; e certamente o Jackd não possibilitará o uso de mais de uma interface, para isso, esses comandos são essenciais.

Eu testei no Jackd e funcionou muito bem, já fiz até uma gravação teste e o resultado foi satisfatório. Vale lembrar que existem outras formas de conseguir obter tal resultado, mas não consegui realizar as configurações necessárias com os outros procedimentos, este sim funcionou.

Identificando placas de áudio no Linux

Antes de tudo, você deve ter o Alsa e o Jackd instalados e devidamente configurados no seu sistema, como também um kernel RT para trabalhar com áudio profissionalmente no Linux.

Com a placa USB conectada no PC, rode os seguintes comandos:

aplay -l
arecord -l

Estes comandos irão mostrar todos os dispositivos disponíveis para reprodução e captura, respectivamente. Assim você poderá saber o nome e número das placas de som que você tem.

Os comandos retornarão algo deste tipo, só que com mais informações: 

card 0: Intel [HDA Intel]……
card 1: default [USB Audio CODEC ]………..

Outro comando que podemos usar para identificarmos as placas de áudio em nosso sistema é:

cat /proc/asound/cards

Que nos retornaria algo como:

 0 [Intel        ]: HDA-Intel  HDA Intel
HDA Intel at 0xf8700000 irq 22

Bom, o resultado é praticamente o mesmo, pois ambos nos fornecerão as informações necessárias para identificarmos nossas interfaces. Neste caso o que me é útil é o número “0” ou o nome Intel.

Obs.: Apesar de, no meu ‘card 1’ aparecer ‘default’, esta placa não é a minha default, e sim a Intel. Não sei bem porque isto acontece, mas isso não atrapalhou em nada.

Sintaxe

Com os números ou nomes, podemos criar a linha de comando que será usada, comigo funcionou apenas com os números. No meu caso, o número “1”, tentei colocar o nome “USB Audio CODEC”, mas não obtive sucesso.

A sintaxe do comando é relativamente simples: ‘alsa_out’ ou ‘_in’ [opções]. A sintaxe que usei para as saídas (out) e entradas (in) foram:

alsa_out -j “UCA222-Playback” -dhw:1 -c 2 -r44100 -q 1 &
alsa_in -j “UCA222-Capture” -dhw:1 -c 4 -r44100 -q 1 & 

Outras Opções

Vejamos agora algumas opções, básicas, dos comandos ‘Alsa_in’ e ‘Alsa_out’:

  • j: Nome do client Jack. Coloque aqui o nome da placa e sua função (‘in’ ou ‘out’), ou qualquer nome para identificar a placa;
  • -d : Dispositivo Alsa. No meu caso o dispositivo foi: ‘hw:1’. É aqui que vai o número da placa, dos comandos ‘aplay-l’ e ‘record -l’, que pode ser: ‘card 0 = hw:0’, ‘card 1= hw:1’, etc;
  • -c: Quantidade de canais da placa. É importante frisar que deve ser colocado o número real de canais disponíveis na placa, no meu caso são dois;
  • -r : Sample rate. Taxa de amostragem, a mais usada é de 44100 (padrão de CD);
  • -q : Definir a qualidade do ‘resampler’.

Existem outras opções disponíveis para estes comandos, ainda vou testar as demais, para que você as possa ler de um ‘man alsa_in’, sem aspas.

Como usar tudo isso?

Primeiramente, temos de rodar o ‘jackd’ normalmente, e depois rodamos ambos os comandos com suas opções. A melhor maneira de usar tudo isto é por meio de um Shell Script.

Eu criei um pequeno Shell Script que faz o trabalho, isto é, lançar o ‘jackd’ e em seguida ambos os comandos, desta forma fica mais fácil de rodar tais aplicações.

Eis o script, ele é bem simples, mas funcional. No script você pode optar tanto pelo ‘patchage’ quanto pelo ‘qjackctl’. Fica a seu critério, basta apenas comentar a linha de um e descomentar a do outro.

OBS: Este script foi criado com as minhas configurações, caso você for fazer uso do mesmo, faça uma adaptação com as suas configurações para que assim, ele lhe seja útil.

#!/bin/bash
#Script para lançar o Servidor de Áudio Jackd com mais de uma interface de áudio.
# #Criado em 31-01-12 por S. Saulo.
killall jackd sleep 2
killall patchage sleep 2
killall qjackctl sleelp 2
/usr/bin/jackd -v -R -P89 -dalsa -dhw:0 -r44100 -p512 -n2 -s -Xseq &
sleep 3
#Permite usar as saídas (out) da placa USB.
alsa_out -j “UCA222-Playback” -dhw:1 -c 2 -r44100 -q 1 &
sleep 3
#Permite usar as entradas (in) da placa USB.
alsa_in -j “UCA222-Capture” -dhw:1 -c 2 -r44100 -q 1 & sleep 3
patchage & sleep 3
#qjackctl &
#sleep 3

Agora você já tem um Debian Studio!