JACK é um servidor profissional de baixa latência para configuração e conexão entre a placa de som e os softwares. Com ele é possível utilizar e conectar diversos softwares simultaneamente com bastante versatilidade e estabilidade.









Servidor de Transporte de Áudio


Este software faz a camada de transporte logo acima do módulo da placa de som ( ALSA ou OSS no linux), sincronizando os processos entre softwares de produção sonora que rodam simultaneamente, podendo conectá-los entre si.

O Jack também é importante para rodar softwares de produção sonora com prioridade máxima do sistema, possibilitando processos em tempo real (como monitorar um retorno de microfone ou interpretar as notas de um teclado musical, no exato momento que o músico está agindo).

O Jack surgiu de uma necessidade que os desenvolvedores de aplicações áudio no linux perceberam buscando um processo que pudesse "colar" as aplicações, mantendo a baixa latência e a qualidade das taxas de amostra. Alguns softwares estão profundamente relacionados com o uso do Jack, como o Ardour, onde o uso do Jack como "ponte" entre entradas e saídas dos canais passa a ser parte do conceito de sua utilização.

Para aqueles que conhecem softwares proprietários de áudio, o Jack poderia ser comparado a algo como Rewire da Propellerheads, porém como estamos trabalhando com licenças abertas, o potêncial é muito maior. A grande maioria dos softwares profissionais de áudio no linux possibilita uma saída via Jack, tomando vantagem de sua priorização de processos e também podendo rotear controles MIDI entre estes softwares.



Qjackctl






Interface gráfica para o servidor jack (qjackctl).



Os usuários de distibuições mais conhecidas de linux como Ubuntu e Debian, já devem ter se deparado com uma interface gráfica para os processos do jack, chamada Qjackctl. O Qjackctl facilita muito a manipulação dos processos do jack, (que também pode ser utilizado via terminal com o comando jackd).



Com a interface gráfica tudo fica mais ilustrativo pois podemos visualizar as aplicações sendo roteadas por "cabos" entre suas entradas e saídas. Logo de cara percebemos duas abas que diferenciam as duas vias de transporte de dados importantíssimas no mundo da produção atual: Áudio e MIDI. Faleremos dos processos MIDI no jack um pouco mais adiante, se você ainda não conhece este protocolo sugiro que de uma olhada no tutorial de MIDI aqui do Estúdio Livre.



Instalando


No Debian/Ubuntu


sudo apt-get install jack qjackctl

No Gentoo


emerge jack-audio-connection-kit qjackctl



PAINEL DO QJACKCTL


Examinando o Painel principal do Qjackctl, podemos ter uma ideia de alguns parâmetros que o jack esta gerenciando.

Botões Lado Esquerdo:




Start:


Botão de inicialização do Jack, é preciso que nenhum outro processo sonoro esteja rodando. Os processos gerenciados pelo jack devem ser todos inicializados pelo mesmo usuário.

Messages:


Console de Mensagens. Este é o lugar onde você pode identificar todos os processos que o jack inicializa ou termina, também é onde você pode verificar mensagens de erro eventuais, para tentar identificar problemas que podem ter ocorrido.






Connect:


Esta é a janela mais usada normalmente. Aqui voce pode monitorar as conexões entre entradas e saídas dos softwares, nos processos de áudio e MIDI. Perceba que quando você inicializa o jack algumas entradas e saídas físicas de áudio e MIDI já estarão disponíveis.





Em áudio, sempre que inicializamos você terá no mínimo a entrada e saída chamada alsa_pcm. Isto ocorre porque por padrão o qjackctl vai inicializar sobre o seu driver ALSA. Qualquer entrada de microfone, ou saída de instrumento musical deve ser roteada por estas entradas e saídas.

Perceba que se você inicializar qualquer software que utilize o jack, ele vai aparecer como nova entrada e/ou saída.




Outra vantagem do menu Connect é o gerenciamento dos processos MIDI, perceba que ao inicializar o jack você ja terá disponível todo o hardware MIDI conectado a sua máquina que foi detectado como módulo pelo seu sistema operacional. Se você não sabe bem quais os processos MIDI do seu sistema dê uma olhada na configuração de módulos da sua máquina (uma pequena explicação sobre checagem de módulos de som no seu sistema encontra-se no tutorial sobre ALSA. )



O dispositivo MIDI through é um loop interno do sistema. Se o seu sistema tem suporte a entrada MIDI por entrada game-port (porta de joystick) também vai enxergar este outro dispositivo chamado MPU-401 (que pode servir para conectar teclados musicais baratos tipo os YAMAHA PSR e os CASIOTONE), no caso deste screenshot ainda temos uma segunda placa de som, soundblaster (EMU10K), que também tem gerenciamento próprio. Se voce tiver qualquer dispositivo MIDI USB, também deverá ser reconhecido aqui imediatamente (a não ser em casos que precise usar um firmware como por exemplo o OXYGEN8, mas assim que o módulo for reconhecido o dispositivo aparece aqui).



Assim que você inicializar qualquer software com entrada e/ou saída MIDI ele também estará disponível aqui para conexões.


Stop:


Paralisa a operação do jack. Se você mudar as configurações de paramêtros do jack é preciso parar e iniciar de novo. No caso das conexões isso não é necessário.

Status:


Esta janela mostra as configurações padrão desta sessão do jack. É como se fosse o console um pouco mais detalhado.

PatchBay:


Esta é uma opção interessante do qjackctl. Serve para você salvar configurações de conexões que você esta fazendo entre os softwares. É útil de você esta usando vários canais, roteados para vários softwares diferentes, passando por filtros de efeitos e etc, facilitando da próxima vez que você reiniciar o processo. No entanto é necessário que todos os softwares usados no patchbay estejam abertos.



O Console:




Do lado esquerdo em A temos o estado do processo jack ("Started" se o jack está rodando), abaixo em B temos o atual estado de XRUNS (conceito explicado mais adiante) e abaixo deste em C temos o estado do transporte de sincronismo que o jack pode gerenciar. Voce pode perceber que logo abaixo do console (em G ) temos botões de play, stop, volta, avança. Esta é uma funcionalidade muito interessante do jack que permite que voce sincronize os eventos em timeline dos softwares que o jack está gerenciando. Desta maneira por exemplo você pode dar o play no Ardour e ele vai sincronizar com sequenciadores como Hydrogen e Rosegarden, para isso geralmente basta você configurar nas preferências do software para que ele use o jack como base de sincronismo.

Em E temos referências deste sincronismo, que podem ser BPM atual, compasso atual e tempo corrido.

No item D vemos o atual uso de CPU e se o processo está rodando em tempo real (RT). No item F temos o atual samplerate do transporte de áudio.


Botões Lado Direito:




Quit:


Fecha o Qjackctl Imediatamente. Todas as conexões serão perdidas a não ser que tenham sido salvas num Patchbay.


Setup:


Janela bastante importante, para configuração dos parâmetros que o jack vai rodar.
A aba Settings trata dos paramêtros diretamentamente relacionados com a performace de áudio do sistema.



a) Realtime

Você geralmente vai querer deixar esta opção ativada. Ela faz com que os processos do jack tenham prioridade máxima no seu sistema. No entanto par aque você realmente tenha o desempenho desta capacidade é preciso que voce configure o seu kernel para lidar com processos em realtime com este tipo de chamada. Existe um tutorial do Ubuntu Studio bastante ilustrativo para esta função. Se você esta usando alguma distribuição customizada para áudio pode ser que esta opção ja tenha vindo no seu kernel, consulte a comunidade da sua distribuição. Se você está tendo muitos XRUNS (ver definição mais abaixo) essa pode ser uma necessidade. Experimente também rodar o processo do jack como root em último caso (mas não faça isso sempre, pois isso é uma falha de segurança).

b) Memory Lock

Estas opções estão relacionadas com a maneira com que o jack deixa memória livre para outros programas, o processo de realtime. Isso pode ajudar na performance em realtime algumas vezes, quando por exemplo a tela não atualiza sincronizada com o áudio (pois o jack estaria se atravessando em alguns acesso a memória dos processos gráficos).

c) Soft Mode

Faz com que o sistema ignore os XRUNS. Seu uso é desanconselhável a não ser que você esteja com uma taxa muito baixa de XRUN.


d) Monitor

Esta opção cria saídas e entradas virtuais de monitoramento para processos de áudio em tempo real que sua máquina esteja executando. Seria uma maneira de conseguir um retorno em tempo real com latência "zero". Para isso funcionar sua placa de som deve ter suporte para este recurso.

e) Force 16 bit

Por padrão o jack tenta inicializar com uma bitrate de 32 bits. O suporte a este tipo de amostra depende da sua placa de som e do módulo ALSA ou OSS que ela utiliza. Por outro lado, vale lembrar que os CDs de áudio comuns ainda trabalham com uma reprodução de áudio de 16 bits, portanto ainda é comum músicas serem masterizadas com essa taxa. Esta opção é uma das primeiras que você pode testar se estiver tendo problemas de desempenho no Jack.


f) H/W

Suporte para monitoramento de medidas fornecidas diretamente pelo seu hardware, se sua placa possui esta opção.

g) Verbose messages

Refina a saída de mensagens, passando a reportar eventos em tempo real.

h) Priority

Prioridade de tempo real do processo jack em seu sistema operacional. O valor ideal para esta opção é entre 70 e 80, já que a prioridade de uma tarefa de tempo real varia de 0 (menor prioridade) a 99 (maior prioridade).

i) Configuraçôes de buffer e amostra

Estas são configurações diretamente relacionadas com a velocidade da captura ( samplerate ).
Além da configuração da samplerate (que deve estar na mesma taxa utilizada pelos softwares) temos ainda algumas opções que equilibram basicamente a latência do sistema versus a memória e processamento exigidos.

Perceba que os menus acima e abaixo do menu "Samplerate" (os menus "Frames/Period" e "Period/Buffer") tratam respectivamente do tamanho padrão da "palavra de dados" usado a cada período de captura/execução e do período com que o sistema operacional vai trabalhar com os dados em alocação de meória ram. Frames/Period e Period/Buffer baixos são rápidos e requerem mais processamento dedicado e consequentemente baixam a Latência ( p - Latency).

Por outro lado, não será possivel trabalhar com latência tão baixa com processadores lentos e sample rates muito altos. Baixas latências sempre exigem processamento alto. Portanto, se você pode abrir mão de um pouco de latência este é um lugar onde você pode compensar um pouco a falta de memória e processamento de sua máquina.

As outras opções ("Word Lengh", "Wait" e "Channel") não são configuráveis pelo módulo ALSA, mas também tem relação com a manipulação e tamanho das amostras. Se você está usando um módulo OSS ou outros, pode testá-las, mas como normalmente você estará usando ALSA e não precisará se preocupar muito com elas.

j) Port Maximum

Define o máximo de portas que o jack vai poder lidar. Para aumentar o desempenho escolha o menor número de portas possível, o valor recomendado é 128.

k) Start Delay

Define um atraso desejado na inicialização dos processos.


l) Interface (áudio hardware)

Neste campo voce pode definir as placas de som usadas pelo seu sistema. Você pode definir Placas diferentes para entrada e saída de áudio. Este também é um campo interessante de lidar se você esta com baixo processamento, pois você pode definir que o processo de áudio em execução vai ser apenas de captura de dados ou de playback, isso pode ajudar muito se você tem uma máquina de baixo processamento. O padrão é duplex e deve ser usado sempre que voce precisar gravar e tocar simultaneamente algo.


m) Entradas e Saídas

Define o numero de entradas e saídas de suas placas de som que estarão disponíveis no jack. Deixando em zero estarão todas disponíveis.

n) Dither

Dither é um processo de "suavização" matemática que pode ser necessário no seu processamento de áudio quando existem conversões de taxas de amostragens diferentes ou mesmo quando existem conversões de volumes, aplicações de filtros de freqüencias. Se você esta sentindo algum tipo de distorção em algum processamento que o jack está transportando pode experimentar estes algoritmos, mas provavelmente você só vai perceber a diferença em equipamentos de alta-fidelidade.


o) Timeout

Esta opção seta o tempo de saída dos processos baseado num pequeno atraso de "sincronização" nesta saída. Você pode também fazer alguns testes de desempenho com esta opção para ver como seu sistema trabalha melhor com essa opção.



p) Latency

A medida do tempo de latência surge da necessidade de resposta de um evento sonoro, num tempo em que não cause atrasos com a atual execução de outro processo sonoro paralelo.

Exemplo: Gravar um microfone, ouvindo a própria voz processada por algum efeito, enquanto a base toca. Para isso é necessário que a latência esteja baixa, caso contrário a voz terá um atraso em relação a base pré gravada.

Options - Display - Misc

As demais abas "Options", "Display" e "Misc", tratam de operações menos problemáticas que geralmente serão usadas com sua configuração padrão.

A opção "Options" pode inicilizar scripts que auxiliem a execução do jack.
Por exemplo: na maioria dos casos é intessante que seu jack venha com a configuração para executar o script "artsshell -q terminate" no menu options como um dos comandos de inicialização. Mas isso já é padrão do Qjackctl.
Esta opção existe para matar o processo servidor de som de alguns aplicativos KDE.
Em "Options" tambem é possível configurar a freqüencia de captura dos XRUNS e configurar o Patchbay para salvar automaticamente as conexões de tempos e tempos.

As opões "Display" e "Misc" tratam de algumas configurações gráficas da interface e padrões de arquivos texto de configuração.

Se por algum motivo voce precisar sobreescrever as configurações setadas pelo menu ela geralmente estará no arquivo /home/.jackdrc , como configurado no menu "Misc".





About:


Dados sobre a versão do Qjackctl.






PROBLEMAS MAIS COMUNS


Bem, quando seu jack está devidamente configurado e você tem processador e memória ram suficiente para conectar todos os softwares que você precisa com ele atingimos a situação ideal e agora é só criar. Porém, existem alguns problemas que podem ocorrer atrapalhando o bom funcionamento do jack e dos processos de áudio em sua máquina. Os mais freqüentes são os chamados XRUNS e o efeito colateral de tentativas de correção deste: a alta latência.



O XRUN quando muito alto, passa a inviabilizar o procesamento de áudio na sua máquina, dando uma sonoridade "mastigada" no processamento, pois o que acontece na verdade é que seu sistema operacional e hardware não estão conseguindo lidar com os paramêtros que você exigiu do jack, e você perde desempenho.




o XRUN pode ser identificado quando os numeros logo ao lado de sua taxa de sample rate. Este numero não pode passar de zero, nem ficar vermelho. Porém pode acontecer de um ou outro XRUN aparecer, sem ser perceptível, o grande problema é quando o XRUN se torna contínuo, durante uma gravação ou um processamento importante de áudio. O melhor mesmo é evitá-lo a todo custo.

Na exploração dos intens "Settings" do nosso "Setup" acima, falamos de alguns paramêtros de configuração que podem ajudar-te evitar o XRUN. O problema colateral é que a maioria destas configurações implica em alguma perda de latência ou de definição da amostra. Se você precisa de um som de alta fidelidade ou de uma latência muito baixa (no caso do uso de softwares ao vivo por exemplo), você pode ter a necessidade de aumentar a memória ram, ou mesmo de um processador melhor. Mas em grande parte dos casos os efeitos colaterais serão irrelevantes para o seu uso.


APLICATIVOS JACK


Muitos softwares de áudio profissional vem preparados para terem entradas e saídas Áudio e MIDI no servidor Jack. No entanto é interessante destacar algumas ferramentas que potecializam seu uso, algumas vezes sendo projetadas exatamente para tirar seu proveito.

Jack-Rack


LADSPA é um padrão de plugins de efeito de áudio para linux que foi projetado para facilitar o design de efeitos sonoros de uma maneira que seja simples implementar em qualquer software de áudio. Esta interface resolve definitivamente o problema para qualquer software que tenha JACK, com uma espécie de "mixer" que encontra todos os plugins LADSPA instalados em sua máquina é possibilita utilizá-los até mesmo em tempo real (basta passar a entrada do microfone, "alsa_pcm", por dentro dos jack-rack e do jack-rack novamente para a saída "alsa_pcm"). E ainda é possível utiliar controles MIDI para mapear os controles do Jack-Rack?, transformando-o em um "pedal de efeitos" virtual pronto pra ser usado ao vivo. Essencial.







Jack Timemachine


Este é um gravador "mão-na-roda" que não pode faltar na sua coleção de programas. Basta conectar o Time Machine na saída que você está ouvindo na caixa de som e clicar no seu qadradão verde e ele vai gravar um arquivo com a data e hora da gravação no se diretório atual. Este programa é um salva vidas pra quando você está experimentando combinações de efeitos e softwares diferentes no JACK e derrepente encontra uma sonoridade interessante, podendo gravar rapidamente sem ter que abrir um software mais complicado de configurar, como o Ardour. Lembrando que o Time Machine por padrão grava num formato um pouco obsucuro chamado w64 (o Audacity consegue lidar com ele) no entanto você pode configurá-lo para operar com um wav comum abrindo o software com o comando "timemachine -f wav".








jack.udp (fluxo de áudio via rede)


Este software promete uma funcionalidade interessante: permite você transmitir um fluxo de áudio por dois JACKs em máquinas diferentes que estejam em rede. Muito legal para distribuir processos em uma performance ao vivo em rede local. No entanto se você pretende transmitir um fluxo para muitas máquinas na Internet é mais interessante que você utilize algum servidor dedicado para várias conexões como o Icecast (que também pode utilizar o JACK). O jack.udp é distribuído com um pacote chamado "jack tools" no Debian e Ubuntu (interessante das uma olhada em alguns programinhas deste pacote como por exemplo o jack_metro (metrônonomo). Experimente num terminal escrever jack e aperte "tab" para ver alguns deles. Lembre-se de usar o comando "man nome-do-programa" para ver alguma documentação disponível no manual unix).



Use o comando "jack.udp -r ENDEREÇO_DE_IP recv" para receber som.

Use o comando "jack.udp send" para mandar.


faça alguns testes de receber e servir fluxo de audio com os comandos ...


Freqtweak & Jamin


Estes softwares são alguns exemplos de suíte de efeitos para masterização e equalização em pós produção sonora. Possuem algumas ferramentas interessantes para esse serviço como equalizadores paramétricos e compressores.



Interface do software Freqtweak




Interface do software Jamin


Ardour & Rosegarden


Com estes dois softwares e bastante memória ram (mais de 1024) é possível fazer um trabalho de qualquer estúdio profissional utilizando estes dois excelentes editores em sincronismo. O Rosegarden trabalha com partituras, sequenciadores MIDI e consegue lidar com samplers e sintetizadores conectados no JACK, além de lidar com o padrão de sintetizadores linux DSSI. Já o Ardour é um editor preparado para lidar com projetos grandes de áudio e foi projetado para trabalhar com o JACK como "patchbay" de seus canais e grupos de mixagem. Se você não tem tanta memória ram, talvez consiga dar boa conta do recado utilizando apenas o Rosegarden, já que este também trabalha com manipulação de áudio (Já o Ardour não possui um sequenciador MIDI. No entanto o editor de áudio do Rosegarden é mais limitado, e se você vai trabalhar em projetos realmente elaborados utilizar os dois em sincronismo seria atualmente o ideal.





Xjadeo


Xjadeo é um software que promete sincronizar o transporte de timeline do JACK tocando algum sequenciador com a execução de algum video. Encontrei algumas limitações na maneira com que este software lida com alguns formatos de vídeo como ogg. No entanto é interessante acompanhar seu desenvolvimento e aguardar a maturação de seu código (ou contribuir com o projeto se você é programador).


http://linux-sound.org/jack.html


É essencial também você conhecer a página sobre aplicativos JACK de David Phillps. Volta e meia aparecem algumas novidades interessantes por lá, a melhor maneira de conhecer os softwares é instalando e testando mesmo, afinal os softwares são livres e essa é a grande vantagem.





tutorial produzido originalmente por glerm soares - organismo@gmail.com





Link: http://jackit.sourceforge.net/






Última alteração: 20/01/2009 às 18:43, por: qcyclop