Arquitetura avançada de som do Linux - Advanced Linux Sound Architecture
Autor (es) original (is) | Jaroslav Kysela |
---|---|
Desenvolvedor (s) | Equipe ALSA |
lançamento inicial | 1998 |
Versão estável | 1.2.5.1 / 14 de junho de 2021
|
Escrito em | C |
Sistema operacional | Linux |
Modelo | |
Licença | |
Local na rede Internet | alsa-project |
Advanced Linux Sound Architecture ( ALSA ) é uma estrutura de software e parte do kernel Linux que fornece uma interface de programação de aplicativo (API) para drivers de dispositivo de placa de som .
Alguns dos objetivos do projeto ALSA em seu início foram a configuração automática do hardware da placa de som e o manuseio elegante de vários dispositivos de som em um sistema. ALSA é lançado sob GPL-2.0-or-later e LGPL-2.1-or-later .
No Linux, servidores de som, como sndio , PulseAudio , JACK (edição e mixagem de áudio de baixa latência de nível profissional) e PipeWire , e APIs de nível superior (por exemplo , OpenAL , áudio SDL , etc.) funcionam com ALSA e seu som drivers de dispositivo do cartão. ALSA sucedeu a porta Linux mais antiga do Open Sound System (OSS).
História
O projeto para desenvolver ALSA foi liderado por Jaroslav Kysela, e foi baseado no driver de dispositivo Linux para a placa de som Gravis Ultrasound . Ele começou em 1998 e foi desenvolvido separadamente do kernel do Linux até ser introduzido na série de desenvolvimento 2.5 em 2002 (2.5.4–2.5.5).
Na versão 2.6, ele substituiu o sistema anterior, Open Sound System (OSS), por padrão (embora exista uma camada de compatibilidade com versões anteriores).
ALSA tem uma API maior e mais complexa do que o OSS, então pode ser mais difícil desenvolver um aplicativo que use ALSA como sua tecnologia de som. Embora o ALSA possa ser configurado para fornecer uma camada de emulação OSS, essa funcionalidade não está mais disponível ou não é instalada por padrão em muitas distribuições Linux.
Recursos
ALSA foi projetado com algumas características que não eram, na época de sua concepção, suportadas por OSS:
- Síntese MIDI baseada em hardware .
- Mixagem de hardware de vários canais.
- Operação full-duplex .
- Drivers de dispositivo multiprocessados e seguros para thread .
Além dos drivers de dispositivo de som, o ALSA agrupa uma biblioteca de espaço do usuário para desenvolvedores de aplicativos que desejam usar os recursos do driver por meio de uma interface de nível superior que a interface fornecida para interação direta com os drivers do kernel. Ao contrário da API do kernel, que tenta refletir os recursos do hardware diretamente, a biblioteca de espaço do usuário do ALSA apresenta uma abstração que permanece o mais padronizada possível em diferentes elementos de hardware subjacentes. Esse objetivo é alcançado em parte pelo uso de plug-ins de software ; por exemplo, muitas placas de som modernas ou chips de som embutidos não têm um controle de "volume principal". Em vez disso, para esses dispositivos, a biblioteca de espaço do usuário fornece um controle de volume de software usando o plug-in " softvol ", e o software de aplicativo comum não precisa se preocupar se tal controle é implementado por hardware subjacente ou emulação de software de tal hardware subjacente.
Formulários
Adicional à estrutura de software interno para o kernel do Linux, o projeto ALSA também fornece as ferramentas de linha de comando e utilitários alsactl
, amixer
, arecord/aplay
e alsamixer
, um ncurses baseados em TUI .
Há também GUIs programados por programadores de outros fabricantes , tais como o GNOME-Alsamixer (usando GTK ), Kmix, XFCE4-misturador, LXpanel, QasHctl, QasMixer, Pavucontrol, AconnectGUI, tapiir, polarbear, ALSAmixerGUI (usando FLTK ), ZynAddSubFX , Yoshimi e ainda mais.
Conceitos
Esta seção fornece uma visão geral dos conceitos básicos relativos ao ALSA.
Normalmente, o ALSA oferece suporte a até oito cartões , numerados de 0 a 7; cada placa é um dispositivo de kernel físico ou lógico com capacidade de entrada e saída. Além disso, cada cartão também pode ser endereçado por seu id , que é uma sequência explicativa como " Fone de ouvido " ou " ICH9 ".
Um cartão possui dispositivos , numerados a partir de 0; um dispositivo pode ser do tipo reprodução , o que significa que ele emite som do computador ou algum outro tipo, como captura , controle , cronômetro ou sequenciador ; o número do dispositivo 0 é usado por padrão quando nenhum dispositivo em particular é especificado.
Um dispositivo pode ter subdispositivos , numerados a partir de 0; um subdispositivo representa algum ponto final de som relevante para o dispositivo, como um par de alto-falantes. Se o subdispositivo não for especificado, ou se o subdispositivo número −1 for especificado, qualquer subdispositivo disponível será usado.
A interface de uma placa é uma descrição de um protocolo ALSA para acessar a placa; interfaces possíveis incluem: hw , plughw , default e plug: dmix . A interface hw fornece acesso direto ao dispositivo do kernel, mas não oferece suporte para mixagem de software ou adaptação de fluxo. O plughw e o padrão permitem a saída de som onde a interface hw produziria um erro.
Um aplicativo normalmente descreve a saída de som combinando todas as especificações acima mencionadas em uma string de dispositivo , que tem uma das seguintes formas (que diferenciam maiúsculas de minúsculas ):
- interface: cartão, dispositivo, subdispositivo
- interface: CARD = 1, DEV = 3, SUBDEV = 2 .
Um fluxo ALSA é um fluxo de dados que representa o som; o formato de fluxo mais comum é o PCM que deve ser produzido de forma a corresponder às características ou parâmetros do hardware, incluindo:
- taxa de amostragem : geralmente 44,1 kHz em aparelhos de som domésticos ou 48 kHz em sistemas de home theater, mas até 88,2 kHz, 96 kHz ou mesmo 192 kHz para produção ou reprodução de áudio de alta fidelidade.
- largura da amostra : medida em algum número de bits por amostra (como 8, 16, 24 ou 32 bits / amostra)
- codificação de amostra : como endianness
- número de canais : 1 para mono, 2 para estéreo ou 6 para AC-3 / IEC958
Implementações
A camada ALSA System on Chip (ASoC) visa fornecer melhor suporte para ALSA em sistemas embarcados que usam um design de sistema em chip (SoC).
Veja também
- Sistema de som aberto
- DSSI
- udev
- Kit de conexão de áudio JACK
- KMid
- LADSPA
- PulseAudio
- Alsamixer
- PipeWire
Referências
links externos
- Website oficial
-
Policial, Mark. "Alsa WIKI" . AlsaOpensrcOrg . Arquivado do original em 29 de março de 2002 . Retirado em 18 de julho de 2021 .
Algumas das razões pelas quais este site continua existindo são, ninguém do site oficial da ALSA jamais contribuiu com nada para este site (antes que o oficial existisse, este é anterior ao wiki oficial em alguns anos), ninguém o fez oficialmente ou sugeriu formalmente uma fusão, ninguém mais mostrou qualquer interesse sério em ajudar a fundi-los e, o mais importante, há um número significativo de referenciadores externos e acessos do Google que vêm diretamente para este site porque ele está aqui há muito tempo.
Modo de usuário | Aplicativos do usuário | bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ... | ||||
---|---|---|---|---|---|---|
Componentes do sistema |
Daemons : systemd , runit , udevd , polkitd , sshd , smbd ... |
Gerenciador de janelas : X11 , Wayland , SurfaceFlinger (Android) |
Gráficos : Mesa , AMD Catalyst , ... |
Outras bibliotecas: GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ... |
||
Biblioteca padrão C |
fopen , execv , malloc , memcpy , localtime , pthread_create ... (até 2000 sub-rotinas ) glibc objetivos para ser rápido, MUSL e uClibc sistemas de destino embutidos, biônicos escritos para Android , etc. Todos pretendem ser POSIX / SUS -compatível. |
|||||
Modo kernel | Kernel Linux |
stat , splice , dup , read , open , ioctl , write , mmap , close , exit , Etc. (cerca de 380 chamadas de sistema) O Linux kernel do sistema Call Interface (SIC, pretende ser POSIX / SUS -compatível) |
||||
Subsistema de agendamento de processos |
Subsistema IPC |
Subsistema de gerenciamento de memória |
Subsistema de arquivos virtuais |
Subsistema de rede |
||
Outros componentes: ALSA , DRI , evdev , LVM , mapeador de dispositivos , Linux Network Scheduler , Netfilter Linux Security Modules : SELinux , TOMOYO , AppArmor , Smack |
||||||
Hardware ( CPU , memória principal , dispositivos de armazenamento de dados , etc.) |