Áudio Profissional no GNU/Linux
O mais completo artigo em língua Portuguesa sobre áudio no GNU/Linux. Sei que a frase soa arrogante, mas meu objetivo é fazer jus à descrição.
Parte 2: Entendendo como funciona
Atualmente o áudio no GNU/Linux funciona da seguinte maneira: você tem as placas de áudio que são parte do hardware do sistema, esse hardware é manipulado por um software chamado ALSA.
ALSA foi projetado para utilizar alguns recursos que não foram, no momento da sua concepção, suportados pelo OSS:
Fonte:
Embora o ALSA tenha recursos muito bons e a capacidade de manipular mais placas que a maioria de nós poderíamos usar em um computador, chegando até a 8 placas de som no mesmo sistema, ele tem alguns probleminhas para a maioria dos usuários... Não é fácil controlar todas as suas funções, para isso precisamos de APIs que são aplicações que fazem a ligação entre o difícil conceito do ALSA para o simples mundo do PulseAudio e JACK.
As principais características do PulseAudio incluem:
Fonte:
Fonte:
Por muito tempo eu ignorei o JACK porque eu não via a diferença entre JACK e PulseAudio, até que eu comecei a trabalhar com gravações ao vivo, entre outras coisas essa é a chave para você entender a diferença do JACK e Pulse, embora Pulse seja bom para trabalhar com a maioria das aplicações que usamos no nosso dia a dia ele não oferece a baixa latência que o JACK oferece e a conexão entre programas de forma tão direta.
Um exemplo prático: você está usando um programa para gravar áudio de um vídeo da internet, enquanto você assiste o vídeo e grava, vai perceber que existe um atraso entre o que a pessoa fala e o que está sendo gravado. Esse atraso é o que chamamos de latência, não é um grande problema se você não precisa ouvir o que está sendo gravado, mas se, por exemplo, você está gravando a dublagem de um filme é essencial que a voz acompanhe o movimento da boca da pessoa. Para isso a latência tem que ser a mínima possível.
Isso sem contar as vantagens que o JACK nos dá como a possibilidade de adicionar efeitos na voz de um cantor em um evento ao vivo.
Advanced Linux Sound Architecture
Conhecido pela sigla ALSA, é um componente do kernel visando substituir o original OSS (Open Sound System) que no início do Linux foi responsável pelos drivers para placa de áudio, porém o OSS tinha algumas falhas que o ALSA veio para compensar e desde 2002 se tornou padrão para o GNU/Linux.ALSA foi projetado para utilizar alguns recursos que não foram, no momento da sua concepção, suportados pelo OSS:
- Síntese MIDI baseado em hardware. Você pode conectar o seu teclado (instrumento musical) e tocar as músicas direto em um software de gravação.
- Mixagem de hardware em múltiplos canais. Varias entradas de áudio são ao mesmo tempo redirecionadas para a saída de áudio.
- Operação full-duplex (entrada e saída de áudio simultâneos).
- Drivers para multiprocessadores e thread-safe (suporte para processadores com múltiplos núcleos antes mesmo do Windows ou Mac).
Fonte:
Embora o ALSA tenha recursos muito bons e a capacidade de manipular mais placas que a maioria de nós poderíamos usar em um computador, chegando até a 8 placas de som no mesmo sistema, ele tem alguns probleminhas para a maioria dos usuários... Não é fácil controlar todas as suas funções, para isso precisamos de APIs que são aplicações que fazem a ligação entre o difícil conceito do ALSA para o simples mundo do PulseAudio e JACK.
PulseAudio
O antigo PolypAudio é um projeto de servidor de som em rede multiplataforma. Isso quer dizer que ele serve como comunicação entre programas e placas de áudio e pode ser usado não somente na plataforma GNU/Linux como em outras também.As principais características do PulseAudio incluem:
- Controle de volume por aplicativo.
- Uma arquitetura de plugins expansível com suporte para módulos.
- Compatibilidade com muitas aplicações populares de áudio.
- Suporte para múltiplas fontes de áudio.
- Baixa latência operante e suporte à medição de latência.
- Um zero-cópia, é uma arquitetura de memória para a eficiência dos recursos do processador.
- Uma interface de linha de comando com capacidades de scripting.
- Um daemon de som com capacidades de reconfiguração por linha de comando.
- Conversão e capacidade de taxa de amostragem embutidas.
- A capacidade de combinar várias placas de som em uma.
- A capacidade de sincronizar múltiplos fluxos de reprodução.
Fonte:
JACK
JACK é um conector para programas de áudio. Ele permite conectar a entrada de um programa de áudio à saída de outro programa. Isto é bastante útil para a utilização de efeitos, gravação por meio de samplers ou reutilização de softwares para gravações. Além disto, o JACK possui uma gama de softwares que trabalham em função dele, como por exemplo:- JACK Rack - processador de efeitos.
- jackEQ - equalizador.
- JAMin - programa para masterização com FFT.
Fonte:
Por muito tempo eu ignorei o JACK porque eu não via a diferença entre JACK e PulseAudio, até que eu comecei a trabalhar com gravações ao vivo, entre outras coisas essa é a chave para você entender a diferença do JACK e Pulse, embora Pulse seja bom para trabalhar com a maioria das aplicações que usamos no nosso dia a dia ele não oferece a baixa latência que o JACK oferece e a conexão entre programas de forma tão direta.
Um exemplo prático: você está usando um programa para gravar áudio de um vídeo da internet, enquanto você assiste o vídeo e grava, vai perceber que existe um atraso entre o que a pessoa fala e o que está sendo gravado. Esse atraso é o que chamamos de latência, não é um grande problema se você não precisa ouvir o que está sendo gravado, mas se, por exemplo, você está gravando a dublagem de um filme é essencial que a voz acompanhe o movimento da boca da pessoa. Para isso a latência tem que ser a mínima possível.
Isso sem contar as vantagens que o JACK nos dá como a possibilidade de adicionar efeitos na voz de um cantor em um evento ao vivo.