Arquivos históricos do BR-Linux.org apresenta:

DAW - Digital Audio Workstation no Linux

O André Magoo (André Alves Pereira) ensina no tutorial abaixo como configurar sua estação de trabalho Linux para uso como estação de trabalho com áudio digital (em inglês Digital Audio Workstation - DAW).

Parece trabalhoso, mas aparentemente os músicos profissionais estão dispostos a grandes esforços para obter condições perfeitas de seu equipamento de áudio ;-)

DAW - Digital Audio Workstation no Linux

André Magoo (André Alves Pereira)
andre.pereira@ig.com.br


Este documento tem por finalidade mostrar como configurar sua estação de trabalho Linux para uso como estação de trabalho com áudio digital (em inglês Digital Audio Workstation - DAW). Estarei usando com distribuição o Slackware 9 pela sua simplicidade e versatilidade (não confunda simplicidade com facilidade...) porém creio que com poucas ou até nenhuma adaptação este documento possa ser aplicado a qualquer outra distribuição. Nada do que está aqui foi criado por mim, estou apenas juntando em um único documento informações que garimpei no último ano pela internet. Espero que seja útil para alguém... Estou também acreditando que você seja pelo menos um usuário intermediário, não entrando em detalhes de como coisas básicas devem ser feitas, tais com o criar diretórios, por exemplo.

Abaixo segue uma lista dos softwares que serão utilizados no processo:

a) Kernel 2.4.21 com os patche de baixa latência de Andrew Morton;
b) ALSA - Advanced Linux Sound Architecture;
c) JACK - Jack Audio Connection Kit;
d) LADSPA - Linux Audio Developer's Simple Plugin API;
e) Qjackconnect - Audio patchbay para o JACK;
f) Kaconnect - MIDI Patchbay para ALSA;

Por enquanto é só... mais tarde talvez coloque mais algo ;-)

a) Kernel (http://www.kernel.org)

Vamos começar pelo kernel. Baixe-o (http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.bz2) e também o patch de baixa latência (http://www.zip.com.au/~akpm/linux/2.4.21-low-latency.patch.gz). Copie os dois arquivos para /usr/src e siga os passo abaixo:

$ cd /usr/src
$ tar jxvf linux-2.4.21.tar.bz2
<várias mensagens>
$ gunzip 2.4.21-low-latency.patch.gz
<várias mensagens>
$ rm linux
$ ln -s linux-2.4.21 linux
$ cd linux
$ cp /boot/config-ide-2.4.20 .config
$ patch -p1 < ../2.4.21-low-latency.patch
<várias mensagens>
$ make menuconfig

Agora vamos fazer alguns acertos na configuração do kernel antes de compilá-lo. Vá em Processor type and features, marque Low latency scheduling e Control low latency with sysctl. Acerte também a opção Processor family para o seu tipo de processador (Athlon/Duron/K7 no meu caso...). Pressione escape até voltar a tela principal e vá agora na opção Sound. Desmarque todas as opções com excessão de Sound card support. Isso é necessário porque não usaremos mais o OSS como API de som e sim o ALSA que deverá ser compilado e instalado mais tarde. Pressione a tecla escape até que ele pergunte se que salvar a configuração do kernel, responda yes. Edite o arquivo Makefile e altere a seguinte linha:

EXTRAVERSION =

Para:

EXTRAVERSION = -ll

Edite o arquivo /usr/src/linux/include/linux/capabilities.h e altere a linha:

#define CAP_INIT_EFF_SET to_cap_t(~0&~CAP_TO_MASK(CAP_SETPCAP))

para:

#define CAP_INIT_EFF_SET to_cap_t( ~0 )

E também a linha:

#define CAP_INIT_INH_SET to_cap_t(0)

para:

#define CAP_INIT_INH_SET to_cap_t( ~0 )

Estas alterações são necessárias para que se possa ter acesso as funções de tempo-real do kernel como usuário comum. Mais informações em http://www.tml.hut.fi/~tilmonen/givertcap/

Grave as alterações e saia. Novamente no prompt execute os seguintes comandos:

$ make dep
<várias mensagens>
$ make bzImage
<várias mensagens>

Isso deve criar o núcleo básico do kernel. Vamos copiá-lo para o local correto:

$ cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.21-ll

Vamos agora compilar os módulos:

$ make modules
<várias mensagens>

Módulos criados. Instalando:

$ make módules_install
<várias mensagens>

Agora vamos criar uma entrada no lilo para este novo kernel. Edite o arquivo /etc/lilo.conf e adicione as seguintes linhas no final:

image = /boot/vmlinuz-2.4.21-ll
root = /dev/hdxx
label = Linux-21-ll
read-only

Onde hdxx é a partição onde sua partição root está. Agora o básico:

$ lilo
<algumas mensagens>

Pronto seu novo kernel já esta pronto. Reincie a máquina e escolha a nova entrada que foi adicionada ao lilo para carregá-lo. Uma observação... se você tinha adicionado módulos extras ao seu kernel terá que faze-lo denovo, por exemplo, drivers de vídeo da Nvidia terão que ser reinstalados. No entanto deve ser algo simples, basta seguir os mesmos passos que você havia seguido anteriormente para instalá-los.

b) ALSA (http://www.alsa-project.org)

Kernel resolvido vamos agora para o ALSA. Baixe os pacotes mais atualizados em http://www.alsa-project.org que no momento que escrevi este domumento são:

ftp://ftp.alsa-project.org/pub/driver/alsa-driver-0.9.6.tar.bz2
ftp://ftp.alsa-project.org/pub/lib/alsa-lib-0.9.6.tar.bz2
ftp://ftp.alsa-project.org/pub/utils/alsa-utils-0.9.6.tar.bz2
ftp://ftp.alsa-project.org/pub/tools/alsa-tools-0.9.6.tar.bz2
ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-0.9.6.tar.bz2

Na verdade os dois últimos provavelmente não serão necessários. Mas se tiver disponibilidade de banda, baixe-os e deixe por aí, um dia pode precisar dele :-)

Continuando. Descompacte o primeiro pacote e entre no diretório criado:

$ tar jxvf alsa-driver-0.9.6.tar.bz2
<várias mensagens>
$ cd alsa-driver-0.9.6

Compilando:

./configure -with-oss=yes -with-sequencer=yes -enable-optimize
<várias mensagens>
make
<várias mensagens>
make install
<várias mensagens>

Compilado e instalado. Em caso de dúvidas quanto as opções usadas no ./configure use ./configure -help para uma explanação sobre elas. Para configurar, siga com os comandos:

$ cd utils
$ ./alsaconf

Este é um script de configuração do ALSA . Sempre funcionou perfeitamente, mas em caso de problemas entre em contato comigo. Vamos agora para o segundo pacote:

$ cd ../..
$ tar jxvf alsa-lib-0.9.6.tar.bz2
$ cd alsa-lib-0.9.6
$ ./configure -prefix=/usr -enable-optimize
<várias mensagens>
$ make
<várias mensagens>
$ make install
<várias mensagens>

Tudo pronto. Proximo pacote:

$ cd ..
$ tar jxvf alsa-utils-0.9.6.tar.bz2
$ cd alsa-utils-0.9.6
$ ./configure -prefix=/usr -enable-optimize
<várias mensagens>
$ make
<várias mensagens>
$ make install
<várias mensagens>

Feito. Para evitar complicações, reinicie o computador para fazer uma carga limpa do sistema com os novos módulos. Após a carga vá no prompt e digite:

$ alsamixer

Deve aparecer um mixer para você acertar o volume de sua placa de som, que por padrão vem muda. Feitos os ajustes saia do programa com ctrl+c e grave as alterações feitas com:

$ alsactl store

Algumas observações. Algumas placas profissionais de áudio (tais como Echo LAYLA, Gina, Mia, Midiman 1010, 1010LT, entre outras) podem precisar de procedimentos especiais para instalação e configuração de seus módulos. Em caso de dúvida dê uma olhada em (http://www.alsa-project.org/alsa-doc/) onde tem uma tabela das placas suportadas e links para instruções de como é feita a instalação das mesmas. Atenção! Para placas comuns isto não é necessário (tais como SBLive, Audigy, VIA86xxx, etc). Feita a configuração do ALSA.

c) JACK (http://jackit.sourceforge.net)

Na verdade todas aquelas modifições feitas no kernel foram para que este cara funcione direito. O JACK é um servidor de baixa-latência e banda larga que permite a comunicação entre aplicações de áudio que é o coração de nossa DAW. Só para comparação ele seria comparado ao ReWire da Steinberg (Windows/Mac) com a vantagem que permite a comunicação entre processos totalmente independentes, não possui limitação de números de canais (o ReWire só vai até 64...) e, melhor de tudo, é livre ;-)

Antes de instalar o JACK precisamos de uma biblioteca, a libcap. Baixe-a:

http://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.4/libcap-1.10.tar.bz2

E o de sempre:

$ tar jxvf libcap-1.10.tar.bz2
$ cd libcap-1.10
$ make
$ make Install

Edite o arquivo /etc/fstab e adcione as seguintes linhas:

shmfs /dev/shm shm defaults 0 0
none /mnt/ramfs tmpfs defaults 0 0

Não esqueça de cria o diretório /mnt/ramfs... Depois:

mount -a

Bem vamos lá. Voce pode baixar a ultima versão (http://prdownloads.sourceforge.net/jackit/jack-audio-connection-kit-0.75.0.tar.gz) e usá-la, porém recomendo o uso da versão CVS (devido ao fato das aplicações linux estarem em estágio desenvolvimento muito ativo podem haver melhoramentos significativos de um dia para o outro. Podem também ocorrer grandes acidentes de um dia para o outro, portanto deixem aquela querida senhora for a disso por favor :-)) logo vou começar usando a versão CVS como referência, mesmo porque a partir de determinado ponto o procedimento é o mesmo para as duas versões. Baixe o programa:

$ cvs -d :pserver:anonymous@cvs.jackit.sourceforge.net:/cvsroot/jackit login
<enter para password>
$ cvs -d :pserver:anonymous@cvs.jackit.sourceforge.net:/cvsroot/jackit -z3 co jack
<várias mensagens>

Agora vamos compilá-lo:

$ cd jack/
$ ./autogen.sh

Bom, a partir daqui o procedimento é o mesmo para as duas versões:

$ ./configure -prefix=/usr -enable-capabilities -enable-optimize --with-default-tmpdir=/mnt/ramfs
<várias mensagens>
$ make
$ make install

Pronto para o uso. Inicie o serviço com:

jackstart -a -R -d alsa -d hw:0 -p 512 -r 48000

Feito. Para maiores informações leia:

http://jackit.sourceforge.net/docs/faq.php
http://www.djcj.org/LAU/jack/

d) LADSPA (http://www.ladspa.org)

Esta é a API usada para desenvolvimento de plugins para aplicações de áudio. Seria um equivalente do VST da Steinberg ou DirectX do Windows. Sua vantagem está na sua implementação é muito simples pois sua SDK compões-se de apenas um arquivo header (ladspa.h) dez plugins de exemplo e três programas utilitários. Para uma melhor apresentação, leia:

http://linux.oreillynet.com/pub/a/linux/2001/02/02/ladspa.html

Baixe o SDK em http://www.ladspa.org/download/ladspa_sdk_1.12.tgz e execute os comandos abaixo:

$ tar zxvf ladspa_sdk_1.12.tgz
$ cd ladspa_sdk/src
$ make
$ make install

Edite o arquivos /etc/profile e acrescente a seguinte linha:

export LADSPA_PATH=/usr/local/lib/ladspa/

Pronto. Esta é só a API. Para usá-la são necessários plugins e programas hosts (que aceitem os ditos plugins). Mais a frente darei exemplos destes programas. Quanto aos plugins abaixo segue uma lista de excelentes opções (outras nem tanto :-)):

Hum... Sempre instalo-o... deve ter algo de bom :-)
http://www.ladspa.org/download/cmt_lib_1.15.tgz

Speak simulator. Muito bom!
http://quitte.de/dsp/unmatched.html

Preamp para guitarra baseado no Fender 5F4. Se usado com o Speak Simulator o resultado é incrível!
http://quitte.de/dsp/preamp.html

Excelente coleção de plugins:
http://plugin.org.uk/

Tem um chorus legalzinho...
http://alsamodular.sourceforge.net/MCP-plugins-1.2.tar.bz2

Desculpe puxar a sardinha pro meu lado. É que sou guitarrista então estou mais apto a opinar a este respeito, porém neste conjunto existem plugins excelentes para qualquer uso... Constantemente estão aparecendo coisas novas na net. Pesquise frequentemente e você terá felizes surpresas!

e) Qjackconnect (http://www.suse.de/~mana/jack.html)

Este programa é um patchbay (painel de conexões) de áudio para o JACK. Baixe o programa e execute os comandos abaixo:

$ tar jxvf qjackconnect-0.0.3b.tar.bz2
$ cd qjackconnect-0.0.3b
$ make -f make_qjackconnect
$ cp qjackconnect /usr/bin/

f) Kaconnect (http://www.suse.de/~mana/kalsatools.html)

Este é um patchbay MIDI para ALSA. Na verdade é uma GUI para o aconnect. Baixe-o:

ftp://ftp.suse.com/pub/people/mana/kalsatools-current/kaconnect-1.1.1.tar.bz2

Vamos nós outra vez...

$ tar jxvf kaconnect-1.1.1.tar.bz2
$ cd kaconnect-1.1.1
$ make -f make_kaconnect
$ cp kaconnect /usr/bin/

Feito isso seu Linux está agora pronto para funcionar como estação de trabalho para áudio digital. Seguidos estes procedimentos você conseguirá latências muito baixas (no meu Athlon XP1800+ com 384Mb de RAM os xruns ocorrem com tempos máximos de 0,6ms!). Agora só faltam os programas propriamente dito, então abaixo vai uma lista com algumas sugestões que eu costumo usar. Se houver interesse da comunidade posso escrever outro documento para mostrar com instalá-los :^)

- Jack-rack (http://pkl.net/~node/jack-rack.html)

Rack de efeitos que utiliza JACK e LADSPA, é o que eu uso atualmente com minha guitarra. O resultado é realmente impressionante, acreditem!

- Ardour (http://ardour.sourceforge.net/)

Software de áudio multipistas. Impressionante! Dê uma lida na página de características dele (http://ardour.sourceforge.net/features.html). Detalhe, não são características pretendidas, é o que ele já faz!

- ZynAddSubFX (http://zynaddsubfx.sourceforge.net/)

Software de síntese de áudio. A qualidade é muito boa e também é bonito ;-)

- Rosegarden-4 (http://www.all-day-breakfast.com/rosegarden/)

Software Sequenciador de áudio e MIDI, editor de partituras. Acho que ainda falta algo, mais tá chegando lá...

- Muse (http://muse.seh.de/)

O mesmo que o anterior...

- Sweep (http://www.metadecks.org/software/sweep/)

Software para edição de áudio com suporte à LADSPA. Realmente bom.

Segue algora alguns links de onde tirei as informações que coloquei neste documento:

http://www.kernel.org
http://www.alsa-project.org
http://linux-sound.org/
http://jackit.sourceforge.net/
http://www.linuxdj.com/audio/lad/resourceslatency.php3
http://www.zip.com.au/~akpm/linux/schedlat.html
http://www.linuxdj.com/audio/lad/

Espero não ter esquecido ninguém... Bom, qualquer coisa estamos aí!

André Magoo (André Alves Pereira)
andre.pereira@ig.com.br

Postado por brain em agosto 13, 2003 10:45 PM

Comentários para "DAW - Digital Audio Workstation no Linux"

» Postado por: Rafael Goulart em agosto 14, 2003 08:30 AM, 200.217.64.:

 

» Postado por: André Magoo em agosto 14, 2003 11:41 AM, 200.141.126:

 

» Postado por: Jean Silva em agosto 14, 2003 05:36 PM, 200.153.241:

 

» Postado por: adell em agosto 14, 2003 06:39 PM, 200.203.227:

 

» Postado por: Luciano Giordana em agosto 14, 2003 07:23 PM, 200.246.46.:

 

» Postado por: Da Styler em agosto 20, 2003 04:31 PM, 200.253.253:

 

» Postado por: André Magoo em agosto 22, 2003 12:29 PM, 200.149.187:

 

» Postado por: Leiza Franco em novembro 20, 2003 04:34 PM, 200.171.58.:

 

» Postado por: Aline M. Marques em novembro 20, 2003 04:46 PM, 200.171.58.:

 

» Postado por: Bebeto_maya em janeiro 23, 2004 05:07 AM, 200.97.186.:

 

» Postado por: epichin em janeiro 30, 2004 12:59 PM, 200.216.117:

 

» Postado por: Dorival Junior em fevereiro 22, 2004 12:07 PM, 200.195.71.:

 

» Postado por: Tamiris em agosto 22, 2004 10:27 AM, 200.175.37.:

 

» Postado por: dani em outubro 8, 2004 12:13 PM, 62.81.151.1:

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.