Como capturar audio de duas placas de som ao mesmo tempo?

Ola amigos tudo bem

Como faço pra que o linux me permita gravar o audio de duas ou tres placas de som ao mesmo tempo???

Eu montei um computador com duas placas de áudio conectadas nas entradas PCI, alem do audio onboard. Então tem 3 placas de som funcionando.

Quero gravar o audio capturado das placas ao mesmo tempo em algum programa multipista. Eu ja faço isso normalmente no Windows com o antigo CoolEdit, com o Adobe Audition e até com o OBS. Basta eu indicar que cada pista pegue o audio de cada placa.

Mas o ubuntu esta me limitando a capturar audio de apenas uma placa, nao deixa capturar das placas ao mesmo tempo.

Na configuração do ubuntu eu vejo todas as placas e posso escolher a saída e entrada padrão do sistema, da mesma forma como é no Windows, e todas estão funcionando.
Mass nos softwares de gravação, eu quero gravar o som de todas as placas ao mesmo tempo e não apenas da placa padrão.

Usei o Audacity e ele não permite gravar as trilhas ao mesmo tempo e só da pra gravar de apenas uma fonte de áudio. Apesar disso ele é o mais pratico!

Usei o Ardour e é a mesma coisa, so posso gravar de uma placa apenas, a diferença fica por conta do Jack que permite gravar com uma placa e ouvir com outra, mas isso não me ajuda em nada. Se o Jack tiver a opção de liberar pra gravar de todas as placas ja ajuda. Mas o Jack esta dando algum defeito no meu computador e não quer iniciar.

Usei o Traverso e ele tem os mesmos problemas dos anteriores.

Entao finalmente desisti de usar os programa do linux e resolvi instalar o CoolEdit usando o Wine. Porem ele só reconhece a placa que eu escolher como padrão do sistema. Quando eu entro na configuração dele nao aparece as outras placas.

Poxa no Windows isso é super simples. Tem varias placas instaladas, eu entro no programa e coloco o audio de cada placa em uma trilha e consigo gravar tudo ao mesmo tempo. Posso ate gravar so o lado direito em uma trilha e o lado esquerdo em outra trilha e fazer isso em todas as placas.

Como faço pra que o ubuntu me permita gravar com todas as placas ao mesmo tempo???

https://jackaudio.org/faq/multiple_devices.html

Valeu muito obrigado, deu certo! Ai fala sobre o tal do alsa_in e alsa_out. Achei um tutorial na internet pra usar no Mint e funcionou igual no Ubuntu.

Blz .

Quando puder adicione o procedimento aqui no site

A solução que encontrei foi essa:

1° identificar o numero da placa no sistema:
Tem essas 3 opções

aplay -l (essa identifica as saidas de som das placas)

arecord -l (essa identifica as entradas de som das placas)

cat /proc/asound/cards (essa apenas identifica as placas)

em qualquer um desses 3 vc vai ter o numero da placa (pode ser 0, 1, 2, 3, etc)

OBS: no meu computador, cada vez que reinicio a máquina os numeros mudam e as placas mudam de posição. Não sei se isso é normal e se vai ser assim em outros computadores. Mas toda vez que ligo o PC eu verifico os numeros novamente e atualizo o script.

2° Colocar o código com os numeros das placas. (tem que fazer um desse para cada placa):

alsa_out -j “nome da placa” -dhw:X -c 6 -r44100 -q 1 &
alsa_in -j “nome da placa” -dhw:X -c 4 -r44100 -q 1 &

-onde está o “nome da placa” vc deve colocar algum nome pra identificar a placa e deve estar entre parênteses
-onde está o X vc deve colocar o numero da placa
-depois da letra c deve te um numero com a quantidade de canais da placa (aqui eu tive um problema, minha placa tem só 2 canais de entrada, mas quando coloquei 2 só funcionou a entrada de microfone e só o lado esquerdo. então fui testando e coloquei 6 e funcionou. sei q não faz sentido, mas deu certo)
-onde tem o numero 44100 é o sample rate da placa. o padrão é esse numero, mas vc pode aumentar de acordo coma capacidade de sua placa. quanto maior esse numero mais qualidade e definição vai ter o som (pode ser 48000, 96000, 192000, depende da placa, vc tem que saber ou ir testando a qualidade).
-depois da letra q o padrão é 1 e pode ser até no máximo 4 (quanto maior esse numero mais qualidade)

OBS: se vc colocar valores muito altos de qualidade o som vai ficar cheio de chiados, então tem que ir testando até encontrar a configuração ideal para cada uma de suas placas.

3° Pra colocar pra funcionar eu vou replicar a configuração que fiz no meu computador, com as minhas placas mas quem fez esse script não fui eu, vou colocar o credito no final;

OBS: no inicio do script vai ter a placa por onde vc vai ouvir o som, então coloque o numero da placa que vai usar pra monitorar nessa parte e as outras onde tem os alsa_in e alsa_out

segue abaixo o script, altere ele conforme suas configurações (no meu caso tem tres placas, a on board é a 0, e é a que eu uso pra monitorar, e as outras são as placas 1 e 2 conectadas nas entradas pci do meu computador.
Pra cada placa vc tem que acrescentar uma linha no alsa_in e uma no alsa_out com as configurações

ah, onde está essa linha
/usr/bin/jackd -v -R -P89 -dalsa -dhw:0 -r48000 -p128 -n2 -s -Xseq &
troque o numero 0 apos -dhw: pelo numero da placa que vai usar pra monitorar o som.

agora sim o script abaixo:

#!/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 qjackctl sleelp 2
/usr/bin/jackd -v -R -P89 -dalsa -dhw:0 -r48000 -p128 -n2 -s -Xseq &
sleep 3
#Permite usar as saídas (out) da placa USB.
alsa_out -j “cmedia saida” -dhw:1 -c 6 -r48000 -q 3 &
alsa_out -j “ensoniq saida” -dhw:2 -c 6 -r48000 -q 3 &
sleep 3
#Permite usar as entradas (in) da placa USB.
alsa_in -j “cmedia entrada” -dhw:1 -c 6 -r48000 -q 3 &
alsa_in -j “ensoniq entrada” -dhw:2 -c 6 -r48000 -q 3 &
sleep 3
patchage & sleep 3
#qjackctl &
#sleep 3

4° vc deve editar o script com sua configuração e colar no terminal:

automaticamente ele vai rodar sozinho e não precisa abrir o Jack, mas se vc abrir vai ver que ele ja vai estar ligado e funcionando.

OBS:Não feche o script deixe ele minimizado, pq ele vai ficar controlando tudo o tempo todo.

no meu caso eu usei o Ardour, quando eu abro e vou fazer as configurações ja aparecem as placas com os nomes que eu coloquei. dai é só usar o programa.


eu peguei esse script nesse link ai -> https://sempreupdate.com.br/como-configurar-um-debian-studio-parte_60/
O autor é Emanuel Negromonte


agora voltando ao meu problema.
Isso realmente resolveu meu problema inicial, mas me criou outros problemas que são:
1- ter que editar o script toda vez que reinicio o computar.
2- o perigo de fechar o script ou ele travar no meio de uma gravação
3-ter que abrir o terminal e colocar o script pra rodar manualmente toda vez

então eu pergunto:
1-porque o numero das placas muda todas vez que o computador liga? tem como fixar?
2-o script é confiavel? será que isso não tem o perigo de travar do nada e me fazer perder o trabalho?
3-tem como deixar a configuração automática ou fixa, ou algum outro programa que faça isso?
4- será que o ubuntu, que é um sistema tão avançado, não consegue identifiar as placas e mostra-las nos programas sozinho como o windows faz, sem ter que fazer todo esse procedimento?

desde já agraço a ajuda e colaboração.
desculpe pelos erros de portugues mas não estou enxergando direito, tenho que cuidar dos olhos. :slight_smile:

Atualize o seu script para procurar o número correto da placa automaticamente. Para (no meu caso) procurar pelo numero da placa que no /proc/asound/cards é [HDMI eu uso essa linha:
grep '\[HDMI' /proc/asound/cards | awk 'NR=1 {print $1}'

Troque o [HDMI pelo das suas placas, talvez [Ensoniq e [CMEDIA. Salve o valor numa variável e use-a nos comandos. Exemplo

id_hdmi=grep '\[HDMI' /proc/asound/cards | awk 'NR=1 {print $1}'
id_cmedia=grep '\[CMEDIA' /proc/asound/cards | awk 'NR=1 {print $1}'
...
killall qjackctl sleelp 2
/usr/bin/jackd -v -R -P89 -dalsa -dhw:$id_hdmi -r48000 -p128 -n2 -s -Xseq &
sleep 3
...
alsa_out -j “cmedia saida” -dhw:$id_cmedia -c 6 -r48000 -q 3 &

Acho que pegou a manha!

Eu recomendaria o programa screen para iniciar o comando e poder fechar a janela. Esse comando garante que o comando continua rodando mesmo com o fim da conexão “tty”.
Outra opção é usar o CTRL+ALT+F3 para abrir um terminal virtual, logar lá, executar o comando e voltar para a interface gráfica. Aí garante que não vai fechar inadvertidamente a janela do terminal.

Uma vez que conseguiu detectar automaticamente os numeros das placas, você pode colocar o script para inicializar junto com a interface gráfica. Geralmente as interfaces tem uma opção de “autostart” ou “executar na inicialização”, aí vc adiciona uma entrada para executar seu script.