Áudio no Linux: explicando e tentando entender
Para ser absolutamente sincero com vocês, preciso confessar que eu parei de tentar entender já há muitos anos. Os subsistemas se sucedem, entrelaçam, retornam das trevas e muitas vezes expõem suas bordas afiadas a quem tenta instalar um aplicativo que quer emitir som mas não veio pré-configurado para os subsistemas ungidos pela distribuição em uso.
Mas sempre há quem queira entender, e certamente haverá quem consiga, assim como há quem nunca tropeçou nas escolhas entre ALSA, OSS, PulseAudio, JACK, Gstreamer, Phonon e outros serviços que, cada um no seu escopo, são empregados para no final das contas fazer vibrar as caixinhas ligadas à placa de som.
Para eles, e também para quem ainda não desistiu completamente, este artigo do TechRadar vem bem a calhar, pois descreve os componentes e os relacionamentos entre eles. (via lwn.net)
Não li a materia ainda, mas já opino sobre audio no Linux: É uma terrível zona. Primeiro o povo não sabe a diferença entre pulseaudio e alsa (E sequer sabem que debaixo dos panos o trabalho é do alsa), e sequer sabem que o OSS4 é muito menos tosco que o ALSA que é menos tosco que o OSS original (Lembrem que a opensound abriu o código do OSS em 3 licenças e o desenvolvimento anda muito bom – Inclusive com latencias menores do que o ALSA, com vmix nativo no kernel (Ou seja, pode tocar com até 32 aplicações simultaneamente gerenciado pelo módulo no kernel), um mixer muito melhor que o alsamixer e incrivel qualidade de audio (Isso comprovei com minha Audigy2).
Ai depois vem a confusão sobre o que é Phonon, Jack, GST, e cia ltda, que até em quem é mais velho se confunde as vezes. Eu uso OSS + Pulseaudio pro skype (E só).
OSS é o que há.
Um dos motivos gostar do meu Mac.
Um dos motivos gostar do meu Mac.
==========================================================
Olhe mamãe.
Um troll!!
Incrível que o autor desse artigo do TechRadar nem sabe da existência do OSSv4, o que se pode comprovar pelos trechos:
“However, OSS isn’t really dead, thanks to a compatibility layer in ALSA designed to enable older, OSS-only applications to run.”
“It was designed to tackle many of the shortcomings of OSS (and most other sound drivers at the time), the most notable of which was that only one application could access the hardware at a time.”
Mas alguém já percebeu e comentou lá:
“OSSv4 is available under the GPLv2, BSD and CDDL 1.0 licenses.”
Eu desisti do Pulseaudio faz uns dias. Disseram-me que estava maduro “e tal e coisa”, mas com o tempo vi aplicativos “emudecendo” do nada. Quer saber? ‘apt-get remove –purge pulseaudio’ :)
Usei-o entre o Alpha 2 e o RC do “já sabem quem”.
Nossa, não esperava que tantos aqui gostassem do OSS4 como eu gosto. Costumo usar o HG para testar o suporte a audigy 2 e no meu note uso a versão estavel. Uma curiosidade é o suporte a dispositivos USB. Tenho uma caixa usb da phillips que sai assim:
[leleobhz@astra ~]$ ossinfo
Version info: OSS 4.2 (b 2002/200912150204) (0x00040100) GPL
Platform: Linux/i686 2.6.33-ARCH #1 SMP PREEMPT Mon Apr 26 20:00:20 CEST 2010 (astra)
Number of audio devices: 2
Number of audio engines: 7
Number of MIDI devices: 0
Number of mixer devices: 2
Device objects
0: osscore0 OSS core services
1: oss_ich0 Intel ICH6 (266E) interrupts=11602 (11602)
2: oss_usb0 USB audio core services
3: usb0d8c0103-0 C-Media USB audio
4: usb0d8c0103-1 C-Media USB audio
MIDI devices (/dev/midi*)
Mixer devices
0: ICH AC97 Mixer (0x43585430) (Mixer 0 of device object 1)
1: C-Media USB audio (Mixer 0 of device object 3)
Audio devices
Intel ICH6 (266E) /dev/oss/oss_ich0/pcm0 (device index 0)
C-Media USB audio play /dev/oss/usb0d8c0103-1/pcm0 (device index 1)
Nodes
/dev/dsp -> /dev/oss/oss_ich0/pcm0
/dev/dsp_in -> /dev/oss/oss_ich0/pcm0
/dev/dsp_out -> /dev/oss/oss_ich0/pcm0
/dev/dsp_ac3 -> /dev/oss/oss_ich0/pcm0
/dev/dsp_mmap -> /dev/oss/oss_ich0/pcm0
/dev/dsp_multich -> /dev/oss/oss_ich0/pcm0
[leleobhz@astra ~]$ ossmix -d 1
Selected mixer 1/C-Media USB audio
Known controls are:
output.mute ON|OFF (currently OFF)
output.loud ON|OFF (currently ON)
output.vol [:] (currently 255:255)
[leleobhz@astra ~]$
Fantástico! Ele gosta da minha caixinha USB e de quebra o som é muito mais puro e alto (Sem o loudness pq não gosto) do que o ALSA (Alias, sou somente eu que acho que o OSS toca “mais”?)
Acho toda essa saroba bem de boa. E me dou muito bem com alsa.
Terminei de ler o artigo e voltei aqui pra comentar, e por surpresa, vi que outros também repararam o “acontecido”. Quando ele disse isso aqui¹, pensei que ele falaria que o OSS continua sendo desenvolvido, tá em versão 4 e tudo e tal. Logo no início percebi que o teor do artigo era sobre o Alsa, então já não esperava que ele dissesse o quanto o OSS é mais maduro que este. Só não esperava ter ficado no vácuo…
¹:
@Leonardo
Não, eu também acho o som do OSS mais limpo (bem mais limpo) que o do Alsa. Aliado ao Pulse Audio, o Alsa consegue deixar o Linux tão estável quanto qualquer Windows 95…
Por incrível que possa parecer para alguns, dificilmente tive problemas de áudio no Linux (uso desde 2005).
No Mandriva 2007, vez ou outra, eu tinha que dar um kill artsd, porque ele teimava em bloquear o áudio, mas mesmo assim era bastante raro ocorrer.
Nas versões posteriores do Mandriva, este problema foi sanado.
Vou provar…
Internetenimento
Bem, o audio nunca foi o ponto forte do linux, de uns anos pra cá tem melhorado quanto a facilidade com o usuário, mas … a arquitetura é uma gambi mesmo
Eu também acho o som no Linux complicadíssimo depois do PulseAúdio. Uso Linux há 10 anos e somente há uns 2 anos com o Mandriva 2009, KDE 4 e PulseAudio é que virou uma gororoba que nada resolve. Já li milhoes de páginas e dicas e foruns e nada resolve. Estou aguardando Mandriva 2010 Spring ou Ubuntu 10.04 pra ver se algo muda pra melhor!
Vez por outra meu PC fica mudo e trnho que reiniciar pra voltar o som … realmente parece Windows 95 … credo !
@viana
Meu falecido Fedora 9 era assim também. Aí, num surto de raiva, removi o Alsa, Pulse e tudo o que tinha direito e instalei o OSS. Nunca mais me deu problema [de áudio. Afinal era o Fedora...]
Quando mudei meu desktop pra CentOS, também não tive mais problemas com o som, novamente usando Alsa. Mas aí era uma versão mais antiga, mais estável, num kernel também mais antigo (2.6.18) e não precisei instalar o OSS. Mesmo assim é uma ótima solução.
Meu som nunca dá problema até… precisar do Skype.
Cara, é um terror descobrir quando o Skype não funciona o mic.
Só eu que não tenho praticamente problema nenhum com áudio no linux ? No Mandriva Linux, desde que o pulseaudio foi incorporado, não tenho tido problemas.
O maior problema que sempre vi nos forums foi com o skype, que é um programa proprietário, ou com hardware de terceira categoria.
Mesmo antes, desde 1998, no tempo que ainda usava a velha e boa SoundBlaster AWE, o som já funcionava sem problemas.
O problema é que essas placas antigas faziam a mixagem de som por hardware, mas daí vieram as placas de som vagabundas e onboard que não fazem isso. Por isso essa complicação toda do pulseaudio e outros sistemas de som.
Esse artigo do Carlos Morimoto explica de forma bem didática essa sopa de letrinhas dos programas de áudio no linux
http://www.gdhpress.com.br/blog/servidores-de-som/
Ou seja, o que eu quero dizer é que não tenho problema nenhum com som nos programas livres de áudio e vídeo.
O problema é sempre relacionado com programas proprietários (ou seja, o desenvolvedor é que não sabe programar em ambiente linux) ou com placas de som cujo driver alsa não está totalmente maduro ou não é suportada (o problema é do fabricante e da pessoa que comprou um hardware não apropriado para usar linux.
E se o OSS não é o padrão hoje nas distribuições linux é por culpa única e exclusiva da trapalhada da empresa 4Front Technologies, que desenvolve o OSS
http://en.wikipedia.org/wiki/Open_Sound_System#Free.2C_proprietary.2C_free
Não sei como está o desenvolvimento do OSS, se a 4Front aceita bem contribuições de desenvolvedores externos, mas pelo menos para Linux, ela já perdeu o bonde. Não vejo motivos para trocar o alsa hoje em dia pelo OSS. Além disso, o pulseaudio + alsa tem recursos a mais que o OSS puro pelo que eu sei e o pulseaudio é multiplataforma.
Só tive problemas com o som na época que eu usava o Kurumin 2.13, que vinha com o OSS antigo. Mas era só clicar no “ícone mágico” (que não era ícone, e sim um item do menu) de ativar drivers ALSA e o som passava a funcionar sem problemas.
O som também não funcionava quando eu instalava o Debian 3.1 e 4.0 apenas o modo texto e depois instalava o X Window System e depois o KDE, mas quando eu instalava na maneira tradicional, selecionando o perfil desktop na instalação, aí o som funcionava sem problemas. Não considero isso como um problema de som, pois devia ser apenas algum pacote faltando. No Debian 5.0, instalei o sistema apenas da maneira tradicional, a não ser uma instalação que fiz numa máquina virtual no KVM/Qemu, onde nem instalei o ambiente gráfico, pois a intenção dessa VM é fazer testes diversos que não envolvem tocar sons.
o OSS suporta vários sistemas oepracionais, mas com exceção do BeOS, todos são derivados do Unix. O pulseaudio ainda acrescenta windows e MacOS X
Ah, outro programa que costuma dar problemas com o pulseaudio em certas distribuições é o Flash, que também é proprietário e os desenvolvedores já são conhecidos como incompetentes na programação de modo geral e mais ainda no linux
http://www.webcitation.org/5kcZukzEL
Minha opinião é a seguinte, o Hannu tinha liberdade para contribuir ou não para o kernel, ele era voluntário. Se uma empresa o contratou e o chefe dele quis que ele mantivesse uma versão com alguns recursos a mais em código fechado, infelizmente ele tinha que sustentar a família dele. Naquela época o patrocínio do desenvolvimento do Linux por empresas não era tão forte.
Nem por isso o pessoal do kernel deveria ter pego aversão total ao OSS como pegou. Eles pegaram aversão a todo o código que o Hannu tinha desenvolvido e jogaram no lixo:
“Now instead of just rewriting OSS at the core, or using a wrapper (which understandably doesn’t fix the underlying mixer problem), or updating the existing open source OSS at its base, some developers for some absurd reason decided they needed a whole new system and API to go with it.” [1]
Não lembro onde eu li, mas o ALSA era inicialmente um driver para uma única marca de placa de áudio, e a API era extremamente “tunada” para essa placa. Então muita coisa da API não fazia muito sentido para outras placas.
Acho que teria evitado muita confusão se o pessoal do Linux tivesse melhorado o código do OSS que estava disponível sob GPL na época, ou mesmo se tivesse reescrito mas mantendo a API, assim como os outros sistemas operacionais de código aberto fizeram.
Hoje temos OpenSolaris e FreeBSD suportando a API do OSSv4 (a implementação do FreeBSD é própria, a do OpenSolaris é baseada no OSS da 4front), e NetBSD e OpenBSD um pouco atrás usando a API antiga (OSSv3).
O Linux? A maioria das distribuições desktop usa ALSA + PulseAudio. Não tiro o mérito, muita gente usa e funciona. Eu já tive problemas com essa combinação em 3 máquinas diferentes. Mas mesmo que funcione para você, é inegável a complexidade por baixo do tapete dessa solução.
[1] http://insanecoding.blogspot.com/2007/05/sorry-state-of-sound-in-linux.html
DF, O PulseAudio funciona sob OSS também, não é só sob ALSA, e ele cumpre muito bem seu papel original – áudio sobre rede. Mas aplicações que desejam ser portáveis entre sistemas operacionais diferentes deveriam ser escritas usando bibliotecas feitas para isso, como portaudio, gstreamer, phonon, etc.
Só não existe OSS para Windows ainda porque ninguém portou ainda. Se eu desenvolvesse para Windows, escreveria. Faria sucesso nos “fóruns de Windows” e entre técnicos que infelizmente precisam lidar com máquinas Windows um driver genérico de pouco mais de 1MB que funcionasse com qualquer placa de áudio.
Fazem muitos anos que não tenho problema algum com som no Linux inclusive usando Skype. Pelo menos para mim essa é uma das coisas que eu espero que simplesmente funcione e que eu não tenha que fazer nada alem de ajustar o volume.
Pulseaudio é em si uma tecnologia muito bacana, mas não faz o básico que é tocar o local, som e linux são coisas que ainda não se misturam bem, só perdia para o X.
Juro que, por dentro, eu ainda rezo toda a vez que eu atualiza alguns dos dois
Desde o Mandriva 2009.1 não tenho mais problemas com o som, o Skype era a excessão, mas quando saiu o 2.1 beta acabou o problema tb e os poucos bugs que restaram se foram no 2.1 beta2.
O Alsa + Pulseaudio no Mandriva 2010 estão redondos… agora eu consigo usar meu headset bluetooth com Skype, Linphone e qualquer outro apenas usando aplicações gráficas para configurar e isso pra mim é priceless(TM).
Quanto ao Phonom, estou esperando sua evolução ainda!
ps. Blueman + Pulseaudio Applet rules!
Torço pra chegar um dia que essa discussão seja transparente aos usuários de Linux.
E pra que nunca mais tenha de ler algo como essa pérola:
“O problema é sempre relacionado com programas proprietários (ou seja, o desenvolvedor é que não sabe programar em ambiente linux) ”
Em Mac OS e em Windows o desenvolvedor não precisa se preocupar com isso porque o SO consegue abstrair essa tarefa. Mas acredito que chegaremos lá, seja graças ao Phonon, ao pulseaudio ou a qualquer outra tecnologia que ainda vai ser inventada…
Sou desenvolvedor. Faço programas livres. E tenho muitos problemas com o som no Linux. :-( É triste, mais é verdade. A existência de tantos servidores de som, bibliotecas e módulos que cuidam disso é muito ruim.
Nem sempre dá para usar aquela biblioteca super-alto-nível com suporte à todo o tipo de som. Nem todos os programas ficam em repositórios cujas dependências são resolvidas via APT. Às vezes precisa-se criar um programa para uma distro específica, o qual você quer distribuir por meio de um .DEB que instale com dois cliques. Sem que apareça a mensagem “Desculpe, mas este pacote depende de XXXXX”.
E o que você faz!?!?! Você tem que usar na raça bibliotecas de baixo nível. Lá vai um #include . Depois de muito tempo juntando isso com um um libvorbis da vida… Than-than!! O som funciona! Mas… E se agora tiver que mandar um .DEB para uma distro que só suporta o OSS? FAIL.
Torço muito para que isso melhore. Facilitaria muito a criar programas mais portáveis sem que tenha-se que usar coisas tão baixo-nível como a biblioteca do ALSA e também sem encher o código com detestáveis #ifdefs da vida.
Eu sempre esqueço que a sintaxe HTNL não gosta de coisas como “#include <alsa/asoundlib.h>”. Mais uma mensagem minha em que esqueci disso…
Uso Linux desde 2007 e só estou tendo problemas com áudio recentemente, depois de ter instalado o Enlightenment (mas eu esperava os problemas de usar essa tecnologia instável). O problema:
O som sempre inicia mudo e eu tenho que ajustar para 100% toda vez que entro no sistema.
Mas, voltando para o artigo, achei bem interessante. Eu tinha um pouco de repulsa pelo sistema de áudio Jack, mas depois de ler o artigo minha opinião está começando a mudar e talvez eu passe a acompanhar o seu desenvolvimento.
Bem eu sinto falta de uns ‘controlezinhos’ que eu tinha até mesmo no gnome-volume-manager antigamente e o Skype, que na realidade não dá problemas, simplesmente ele joga o volume do microfone no mínimo quando abre:
Pelo menos aqui, basta abrir tanto o controlador do pulse quanto o Skype (quando abrir o skype o volume vai para o mínimo) e colocar o volume no lugar de volta.
De fato, está faltando um conector ou algo mais ‘padrão’ para que os desenvolvedores possam a começar a trabalhar em aplicações mais independentes dessa ou daquela tecnologia.
Até que para o usuário padrão que usa gerenciador de pacotes para nstalar as coisas, o problema com som não é tão grave. Ele só aparece em alguns programas proprietários ou em alguns tipos de programas instáveis ou não-oficiais. E também na necessidade de ter no sistema um monte de bibliotecas redundantes.
A dificuldade maior de tudo isso fica com o desenvolvedor, que precisa se perguntar quel o sistema de som que está instalado no computador do usuário. Quando impor dependências não é um problema (no caso de programas oficiais suportados pela distro, que terão dependências instaladas automaticamente), também não tem problema. Mas existem casos específicos que nos quais surgem dificuldades para nos assombrar.
Padronização…
O pecado ou a virtude?
Isso que me pergunto quando vejo esse tipo de coisa…
É uma dúvida que eu tenho e me martela a cabeça de vez em quando…
Pro KDE a proposta do Phonon é deixar isso transparente, mesmo que internamente ele tenha de fazer um gambiarra. Espero que um dia ele consiga chegar nesse nível.
Deveriam fazer como o X, colocar apenas 1 servidor de audio (OSS4 é meu voto).
Tantos serviços de audio atrapalham o usuario, especialmente o usuario final.
[]´s