ALSA é a sigla para "Advanced Linux Sound Architecture" que numa tradução literal significa arquitetura avançada para som em linux. ALSA é um projeto que desenvolve drivers (módulos) para as placas de som funcionarem em software livre.

Para que o seu computador possa lidar com os processamentos de áudio que os softwares e sistema operacional gerenciam é necessário que você tenha um periférico chamado "placa de som" (soundcard) trabalhando em conjunto com sua placa mãe (motherboard). É comum hoje em dia placas-mãe fabricadas com a este dispositivo integrado (on board).

Placa de som "onboard"



Placa de som "PCI"



Placa de som "USB"




No entanto se você deseja uma placa de som para uso profissional, você deverá tomar algumas decisões. Você pode querer por exemplo várias entradas e saídas de áudio independentes, entradas e saídas MIDI ou mesmo entradas e saídas óticas para sincronizar os processos de sua placa com outros dispositivos de estúdio, como mesas e gravadores digitais. Mesmo que você não precise de tantos recursos existe uma preocupação em comum para qualquer usuário de softwares de áudio: é preciso existir um módulo (também chamdo de "device driver") que faça a interface de sua placa com o kernel linux.

Há alguns anos vem se firmando como padrão de módulo para dispositivos de áudio o padrão ALSA. Este padrão surge como uma alternativa mais "profissional" para o linux que inicialmente usava um padrão de módulos chamado OSS. Ainda hoje os drivers OSS são usados por alguns softwares e módulos OSS são mantidos por questão de compatibilidade, porém se você vai fazer um uso do linux para produção sonora é importante que exista um módulo ALSA para sua placa de som.

A maior das vantagens do ALSA frente ao OSS é sobretudo de que existem muito mais placas suportadas por módulos ALSA do que OSS, e obviamente algumas destas placas tem avançados recursos de entrada e saída e algoritmos de taxas de amostra que não faziam parte do foco de desenvolvimento dos módulos OSS. Outras vantagens de design dos módulos ALSA é a capacidade de lidar com sintetizadores MIDI integrados em hardware como nas soundblaster e outras placas com "wavetables" de bancos de timbres, o bom uso de mixers internos das placas de som, a implementação de processos 'full-duplex"(processos que permitem gravar e ouvir playback simultaneamente com baixa latência ) e o bom uso de sistemas rodando em multiprocessadores (como os Duo core por exemplo).

Por questões de compatibilidade também, é mantido pelo módulo ALSA um emulador das principais funcionalidades do OSS. Para isso é preciso que seu kernel tenha suporte aos módulos snd-pcm-oss, snd-mixer-oss, e snd-seq-oss. Mais adiante trataremos de reconhecer alguns módulos ALSA básicos que o sistema deve carregar. A maioria das distribuições voltadas para usuários multimídia ou desktop trazem hoje algum sistema de detecção destes módulos.


Para entender um pouco melhor processamento de áudio em sua máquina consulte o tutorial de áudio digital básico.






USANDO O ALSAMIXER




Antes de qualquer complicação na compreensão do seu sistema ALSA, vamos deixar aqui claro que atualmente se você não esta usando alguma placa de som obscura provavelmente de uso profissional, esta placa provavelmente deve ter sido detectada por sua distribuição linux. No entanto se você ainda não esta conseguindo escutar alguma saída sonora, verifique antes de tudo se os volumes estão abertos. O mesmo para a captura do microfone. Normalmente toda distribuição vem com uma pacote para a configuração das entradas e saídas de sua placa de som chamado alsamixer. O alsamixer é um programa que roda em terminal e pode ser navegado com a tecla tab (mudar de playback, captura), barra de espaço (ativar, desativar, mutar) e as setas. Porém eu recomendaria que você instale a versão desktop dele, o "gnome-alsamixer", para facilitar sua vida com o uso do mouse.



Neste mixer voce vai encontrar os volumes das saídas e entradas da sua placa. Alguns destes são roteamentos virtuais que sua placa possibilita, como por exemplo definir a entrada do CD de áudio como a captura padrão do sistema (gravando um CD de áudio como se fosse um microfone). Algumas placas "onboard" tem entradas diferentes chamadas line e mic (geralmente respectivamente azul e rosa), a diferença é que a entrada MIC tem um pequeno "pré-amplificador" (que pode ser potencializado com a opção "Mic Boost +20Db"), o importante é que você selecione a captura e o volume desta.

captura:



mic boost:



Outra dúvida comum é com o volume do microfone, quando você esta querendo usá-lo ao vivo com algum efeito, ou esta ouvindo como retorno de um gravação. Lembre-se que alguns softwares tem o seu próprio monitor da captura, portanto em alguns casos é melhor deixar o volume mudo (Mas selecionado gravar) para não ouvir a voz pré equalizada como retorno junto com a voz com os efeitos.

Volume do monitor mic e seleçao do mic como fonte de captura:



Algumas vezes também por estar usando umdriver genérico é possivel que seu mixer mostre algumas entradas físicas que seu computador não possui (no meu caso por exemplo ele mostra a entrada IEC958, uma entrada digital geralmente de padrão SPDIF que provavelmente uma placa com mais recursos mas com o mesmo chipset da minha possui. A melhor maneira de descobrir quais entradas e saídas estão ativadas em seu dispositivo e testando uma a uma, examinando as entradas e saídas físicas de sua placa e buscando informações específicas sobre esta.

BUSCA DE PLACAS COMPATÍVEIS (Alsa Soundcard Matrix)


Para saber se sua placa de som possui um módulo ALSA compatível é preciso fazer uma busca no site oficial do projeto ALSA. Você precisa saber o fabricante e o modelo de sua placa.

La voce vai encontrar uma busca por fabricante similar a esta:



Escolha o fabricante para mais detalhes






Esta busca direciona para o site da ALSA (em inglês), gerando uma tabela com as placas e seus módulos



O resultado da busca mostra as placas disponíveis com algumas siglas que informam se a placa está ou estará disponível e quais entradas e saídas estão funcionando no módulo (algumas vezes por não encontrarem colaboração dos fabricantes os desenvolvedores dos módulos não conseguem dispor toda a funcionalidade da placa).

Uma placa pode ainda nao estar disponível mas ter alguma previsibilidade de funcionamento, ou será informado a impossibilidade. Para isto existem as siglas:


X? Suporte indeterminado (sem previsão).

X+ Suporte Possível, mas ainda não foi escrito um módulo.

X- Não suportada porque o fabricante recusou-se a colaborar.



obtendo a saída da busca você vai perceber na linha do nome da placa as duas últimas colunas com as informações mais importantes



Na penúltima coluna você vai ter o nome do módulo ( no caso deste exemplo "echo3g"). Esta informação é importante para você fazer uma pesquisa de como esta o desempenho deste módulo e se ele está com algum bug conhecido. (Acesse o link https://bugtrack.alsa-project.org/alsa-bug/ para saber sobre atuais bugs conhecidos).

A última coluna também é bastante interessante para você saber se a placa está com todas as funcionalidades disponíveis e se sua placa ainda não tem alguma previsão de ter um módulo funcional.

Este exemplo ilustrado acima tem algumas siglas interessantes que vou explicar abaixo até para divulgar algumas funcionalidade que você pode buscar numa placa de som de uso profissional. Perceba que a sigla tem o nome do tipo de entrada saída sequido de i (in/entrada), o (out/saída) e io para ambos (funcionando o modo duplex? ). Imporante checar estas opções por que em alguns módulos pode haver problema com algum destes. E lembre-se de sempre antes de comprar uma placa, mesmo que ela apareça aqui como totalmente funcional, dar uma consultada na comunidade linux para saber algumas histórias sobre seu uso.





RCAi IEC-60958 RCA Input

RCAo IEC-60958 RCA Output

RCAio both



Entrada e saída tipo RCA (entradas analógicas comuns com conectores do tipo normalmente encontrados em videocassetes).





TOSi IEC-60958 TOSLINK Input

TOSo IEC-60958 TOSLINK Output

TOSio both


Entrada e saída TOSlink. Padrão bastante usado em comunicação por fibra ótica. Este tipo de entrada é interessante pois permite a comunicação com alguns pré amplificadores e mixers por via digital, podendo conseguir uma captura multitrack com mais qualidade e com possibilidade até mesmo de expansão de canais por esta trilha digital.






ADTi ADAT Input

ADTo ADAT Output

ADTio both




ADAT é um padrão muito comum em gravadores digitais muito usados em em estúdios profissionais nos anos 90, um pouco antes dos computadores tornarem-se ferramentas viáveis em qualquer estúdio. É muito interessante este recurso por questão de compatibilidade com acervo de gravações anteriores aos padrões de arquivos sonoros de sistemas operacionais e até mesmo como uma possibilidade de expansão de canais, conseguindo este equipamento por um bom preço numa loja de usados.


MIDIi MIDI Input

MIDIo MIDI Output

MIDIio both




Esta funcionalidade é essencial para poder utilizar controladores, mixers e outros dispositivos MIDI de maneira profissional. Provavelmente refere-se as entradas padrão DIN de 9 pinos. Hoje também é possível entradas MIDI por via usb, porém ALSA tem um módulo específico para isso (usb-audio). Aliás lembrando aqui também que alguns destes dispositivos usb necessitam de além do módulo ALSA, um firmware adicional, com instruções específicas do chip do fabeicante do seu dispositivo.


RECONHECENDO OS MÓDULOS DE SUA PLACA DE SOM


A maneira mais recomendável de tentar reconhecer sua placa de som é um aplicativo chamado alsaconf, que pode ser executado em qualquer terminal.




Se o módulo de sua placa de som foi configurado para fazer parte do seu kernel a detecção acontecerá sem problemas.

Algumas distribuições como o Ubuntu não vem com o aplicativo alsaconf e nem mesmo distribuem este software em seu repositório, provavelmente porque supõe que sua placa será reconhecida durante a instalação do sistema. Na maioria dos casos isto é verdade. No entanto isso pode ser um problema se você decidir instalar uma placa nova e não quiser reinstalar o sistema. Neste caso você deverá checar se o módulo existe no seu kernel e subir com o comando "modprobe nome-do-modulo" em um terminal.

Se o kernel nao estiver compilado com os módulos ALSA que sua placa precisa você tera que recompilar um novo kernel com esta opção.

Para reconhecer qual placa de áudio você esta usando rode o comando:


lspci -v | grep -i audio



veja o resultado na minha máquina


lspci -v | grep -i audio

00:1f.5 Multimedia audio controller:

Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio

Controller (rev 03)




É uma placa bastante comum em dispositivos onboard, com isso fazendo uma busca no banco de dados do projeto ALSA eu fico sabendo que ela usa os módulos da intel e codecs ac97. (aparece como ICH southbridge AC97 audio, com uma busca no fabricante Intel ).


Para estar certo que tenho os módulos ALSA compilados posso pedir informações sobre o módulo soundcore.


modinfo soundcore

filename: /lib/modules/2.6.12-3-multimedia-k7/kernel/sound/soundcore.ko

description: Core sound module

author: Alan Cox

license: GPL

alias: char-major-14-*

vermagic: 2.6.12-3-multimedia-k7 preempt K7 gcc-3.3

depends:




Para ser mais específico melhor listar quais os modulos ALSA eu tenho no meu sistema com comando "lsmod | grep snd"


lsmod | grep snd

snd_intel8x0 31260 0

snd_intel8x0m 17036 0

snd_ac97_codec 83744 2 snd_intel8x0,snd_intel8x0m

snd_ac97_bus 3328 1 snd_ac97_codec

snd_pcm 75780 3 snd_intel8x0,snd_intel8x0m,snd_ac97_codec

snd_page_alloc 10376 3 snd_intel8x0,snd_intel8x0m,snd_pcm

snd_seq_midi 9088 0

snd_rawmidi 21888 1 snd_seq_midi

snd_seq_midi_event 7936 1 snd_seq_midi



Minha outra máquina, que é um desktop tem uma placa de som similar e alguns módulos a mais:


lsmod | grep snd

snd_intel8x0 34240 0

snd_ac97_codec 81784 1 snd_intel8x0

snd_pcm_oss 52768 0

snd_mixer_oss 18944 1 snd_pcm_oss

snd_pcm 95300 3 snd_intel8x0,snd_ac97_codec,snd_pcm_oss

snd_page_alloc 9988 2 snd_intel8x0,snd_pcm

snd_seq_dummy 3844 0

snd_seq_oss 36160 0

snd_seq_midi 9120 0

snd_seq_midi_event 8320 2 snd_seq_oss,snd_seq_midi

snd_seq 55504 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event

snd_timer 25892 2 snd_pcm,snd_seq

snd_mpu401 6600 0

snd_mpu401_uart 8704 1 snd_mpu401

snd_rawmidi 26144 2 snd_seq_midi,snd_mpu401_uart

snd_seq_device 8716 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq,snd_rawmidi

snd 58660 12 snd_intel8x0,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,
snd_pcm,snd_seq_oss,snd_seq,snd_timer,snd_mpu401,
snd_mpu401_uart,snd_rawmidi,snd_seq_device

soundcore 10624 1 snd





Perceba que no lado esquerdo temos o nome do módulo, na sequnda coluna o número do processo que ele esta esxecutando na pilha do sistema operacional e na última coluna os módulos dos quais ele depende.

Alguns desses módulos dependentes foram carregados pelo módulo qual dependem, outras no caso desta segunda máquina são opções que foram compiladas a mais ou hardware que não existe na primeira máquina que é um laptop.

Alguns sistemas (como o Ubuntu Desktop) podem nao carregar por padrão o modulo snd_seq. Isso é mal porque você va ficar sem camada de transporte MIDI de uma funcionalidade chamada alsa-sequencer. Se você não tem esse módulo tente caregá-lo com o comando "modprobe snd_seq". Outro módulo MIDI imporante para Desktops é o "snd_mpu401", que gerencia a possibilidade de você utilizar a porta de joystick como uma entrada MIDI.

Perceba que no segundo caso eu tenho os módulos de emulação OSS como "snd_pcm_oss". Mais a frente mostrarei os menus de configuração de módulos na compilação de kernel, e já reforço que é importante deixar esta emulação ativada, pois no caso do laptop acima qe tentei compilar sem nenhum suporte a OSS, alguns softwares como o ekiga, o flash no firefox por exemplo ficaram sem som.

Voltando ao MIDI alsa-sequencer ele pode gerenciar entradas e saídas MIDI entre os softwares e hardwares que você esteja usando. É possivel fazer isso por modo texto com o comando "alsaconnect", no entanto isso fica bem mais simples com a interface gráfica "alsaconnectgui". Por outro lado, seria mais aconselhável você fazer estas conexões utilizando o servidor JACK. Verfique o tutorial do JACK para mais detalhes.



alsaconnectgui

Como já foi dito anteriormente você precisa também dar uma checada no site da ALSA o em alguma lista de discussão, se o seu hardwar não necessita de
um firmware adicional, com instruções específicas do chip do fabeicante do seu dispositivo. Aqui no Estúdio Livre temos um exemplo deste tipo de configuração com o teclado USB-MIDI Oxygen8.

Algumas informações mais avançadas sobre seus módulos ALSA e hardwares carregados podem ser obitidas no diretório "/proc/asound". Entre neste diretorio e de uma olhada em alguns arquivos.

Por exemplo: os arquivos cards e pcm mostam sua placas de som ativas e as entradas e saídas abertas.


cat cards

0 I82801DBICH4 : ICH4 - Intel 82801DB-ICH4

Intel 82801DB-ICH4 with unknown codec at 0xe0100c00, irq 5

1 Modem : ICH-MODEM - Intel 82801DB-ICH4 Modem

Intel 82801DB-ICH4 Modem at 0x2400, irq 5



cat pcm

00-04: Intel ICH - IEC958 : Intel 82801DB-ICH4 - IEC958 : playback 1

00-03: Intel ICH - ADC2 : Intel 82801DB-ICH4 - ADC2 : capture 1

00-02: Intel ICH - MIC2 ADC : Intel 82801DB-ICH4 - MIC2 ADC : capture 1

00-01: Intel ICH - MIC ADC : Intel 82801DB-ICH4 - MIC ADC : capture 1

00-00: Intel ICH : Intel 82801DB-ICH4 : playback 1 : capture 1

01-00: Intel ICH - Modem : Intel 82801DB-ICH4 Modem - Modem : playback 1 : capture 1



O arquivo "clients" no diretorio seq (que tem as informações sobre os sequencers MIDI ) informa as conexões MIDI ativas.


cat clients

Client info

cur clients : 2

peak clients : 3

max clients : 192


Client 0 : "System" Kernel

Port 0 : "Timer" (Rwe-)

Port 1 : "Announce" (R-e-)

Client 14 : "Midi Through" Kernel

Port 0 : "Midi Through Port-0" (RWe-)



COMPILANDO UM KERNEL COM SEUS MÓDULOS


Em casos em que seus módulos não estejam presentes no kernel, será necessário recompilar um novo kernel. Se você nunca compilou um novo kernel de uma olhada neste tutorial. As distribuições Ubuntu e Debian tem uma maneira um pouco mais facilitada de compilar, que também pode ser encontrada por aqui: link.

Se você é iniciante e esta inseguro deste processo de compilação de kernel, entre em contato com a comunidade e peça ajuda. O importante, dentro aqui do nosso assunto, é que você esteja atento para a configuração dos módulos ALSA quando for configurar sua compilação com o comando "make menuconfig".

Entre no menu Device Drivers.



Entre na Opção Sound.




Deixe Selecionado "Sound Card Support" e entre para configurar "Advanced Linux Sound Architeture". O item "Open Sound System" não precisa ser usado (OSS), você pode usar a emulação de driver OSS nos módulos ALSA.



Aqui vem a parte mais importante.Lembre-se de deixa ativados os sequencers e o suporte a emulação OSS, se você nao deixar a emulação OSS alguns softwares que ainda utilizam esta arquitetura podem ficar sem som. Deixe ativadas todas as opções e passe para a configuração da sua placa. Aquivem a parte mais importante. Você precisa ter detectado amarca e fabricante da sua placa, e vai encontra-la dentro do menu específico d tipo de barramento qu ela utiliza (PCI, ISA, PCMCIA ou USB). PCI é o barramento mais utilizado hoje, principalmente em Desktops. ISA é um slot mais antigo, que pode ser que você esteja utilizando se seu computador for por exemplo um Pentium III ou mais velho. PCMCIA é específico para Laptops. É aconselhável você deixar selecionados os dispositivos USB, pois como são geralmente portáteis, talvez algum destes acabe caindo na sua mão cedo ou tarde, ainda mas se você for trabalhar direto com músicos e estúdios.







USANDO ALSA COM JACK


Você certamente vai precisar quando usando alguns softwares profissionais de áudio utilizar os seus módulos ALSA rodando auxiliados pela camada de transporte do servidor JACK. Consulte o tutorial JACK para mais detalhes.









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


Esta página está em constante desenvolvimento. Se você tiver interesse, colabore com o desenvolvimento do Estúdio Livre

Links para referência:

http://www.alsa-project.org/
http://alsa.opensrc.org/
http://www.alsa-project.org/~valentyn/
http://linux-sound.org/
http://www.agnula.org/
http://www.djcj.org/LAU/guide/index.php



Última alteração: 31/10/2006 às 23:25, por: glerm