Enviada: Dom Abr 01, 2007 7:29 pm Assunto: Resolvendo problema em SoundBlaster Live! 7.1 24-bit
Olá pessoal.
Após MUITO tempo quebrando a cabeça e entrando em todo quanto é tipo de fórum sobre o tema, finalmente consegui fazer funcionar a minha placa de som SoundBlaster Live! 7.1 24-bit no Fedora Core 6. Vou descrever de forma resumida as coisas que aprendi durante o processo porque é possível que alguém com problema similar possa se beneficiar!
Um pouco de background...
Tenho duas placas de som no meu computador. Uma é a supracitada SoundBlabla. Outra é uma placa onboard em minha placa mãe Asus.
Durante a instalação do FC6, os testes de som funcionaram perfeitamente para as duas placas de som. Fiquei satisfeito com isto e nem pensei mais no assunto.
Depois da instalação, quando instalei o Skype percebi que eu conseguia escutar som mas não conseguia gravar (naquela chamada de teste padrão). Achei que deveria ser algum problema no controle de volume, então fiquei mexendo naquele controle que aparece na barra de ferramentas, ao lado do relógio. Mexi em qualquer coisa e NADA funcionou.
Até que encontrei em um fórum alguém mencionando o utilitário "alsamixer".
Para executá-lo, basta entrar no terminal e executar:
Código:
alsamixer
Se você possui várias placas de som, pode executar o alsamixer com a opção -cX onde x é o número de sua placa. Por exemplo:
Código:
alsamixer -c1
Isto permitirá o controle de volume para a placa especificada.
Dentro do alsamixer, apertando "TAB" cheguei até a aba "Capture" e pressionando a barra de espaço selecionei o microfone como entrada de captura. Pelas evidências apresentadas para mim, aquela interface para controle de volume do gnome (ao lado do reloginho) não funciona muito bem, o alsamixer é mais recomendado.
Mas beleza, mudei isto e o skype passou a funcionar, usando minha placa de som onboard.
Mas minha placa de som principal parou de funcionar!
Neste instante começou uma jornada épica por milhares (não, nem tanto) de sites para tentar descobrir qual era o problema. No final, vocês verão que a solução foi extremamente simples e me senti extremamente estúpido. Mas aprendi algumas formas interessantes de diagnosticar se o alsa estava funcionando corretamente. Para isto devo agradecer ao wiki do alsa (http://alsa.opensrc.org/FAQ).
Em primeiro lugar, verifiquemos se os módulos do ALSA estão carregados. Para isto, basta executar (como su -)
Os dois primeiros elementos da minha lista representam os drivers de minhas placas de som. A última coluna indica quais são os dependências. Ou seja, o módulo snd_ac97_codec depende dos módulos snd_ca0106 e snd_intel8x0. By the way, o snd_ca0106 é o driver padrão para as placas SoundBlaster Live e similares.
É possível verificar se as placas de som foram identificadas corretamente através do comando:
Código:
cat /proc/asound/cards
O resultado no meu computador foi
Código:
0 [CA0106 ]: CA0106 - CA0106
Live! 7.1 24bit [SB0410] at 0xcc00 irq 20
1 [CK8 ]: NFORCE - NVidia CK8
NVidia CK8 with CMI9761A+ at 0xfebff000, irq 18
Ok isto é um indício de que minhas placas foram identificadas corretamente.
O ALSA funciona criando "devices", que são "pipelines" que identificam cada um dos canais existentes em cada placa de som. É possível verificar quais são todos os canais disponíveis usando o comando:
Código:
cat /proc/asound/devices
No meu computador o resultado foi:
Código:
2: : timer
3: : sequencer
4: [ 1- 2]: digital audio playback
5: [ 1- 1]: digital audio capture
6: [ 1- 0]: digital audio playback
7: [ 1- 0]: digital audio capture
8: [ 1] : control
9: [ 0- 0]: raw midi
10: [ 0- 3]: digital audio playback
11: [ 0- 3]: digital audio capture
12: [ 0- 2]: digital audio playback
13: [ 0- 2]: digital audio capture
14: [ 0- 1]: digital audio playback
15: [ 0- 1]: digital audio capture
16: [ 0- 0]: digital audio playback
17: [ 0- 0]: digital audio capture
18: [ 0] : control
Os termos entre colchetes [] representam respectivamente a placa de som ao qual o device está associado e o segundo termo é um número representativo para cada um dos devices desta placa. Podemos ver que a placa 0 (no caso a minha SoundBlaster Live, como visto no arquivo /proc/asound/cards) possui quatro canais de playback digitais e quatro canais de capture digitais. Cada canal é um dos canais de saída da placa de som.
O importante do conteúdo destes arquivos é que, se todos eles possuirem informações coerentes, então os drivers do ALSA estão funcionando bem. Então, se houver algum problema, provavelmente é de configuração.
No alsamixer, existem controles para cada um destes canais.
No entanto uma coisa que me confundia é... como saber qual canal corresponde a qual conector físico na minha placa de som? Como eu não sabia disto, eu entrava no alsamixer e definia todos os controles no volume máximo, esperando que algum deles acabasse afetando minha placa e magicamente fazendo o som aparecer.
Para descobrir isto tive que verificar no manual da minha placa (que está disponível no site da Creative, como um arquivo no formato ".chm". Este é um formato de arquivo do windows e pode ser aberto com o programa xCHM [yum install -y xchm]). Lá eu vi que o conector verde-claro da placa é uma saída analógica chamada "frontal".
Ahá, no alsamixer há três saídas analógicas: Analog F, Analog R e Analog S. A Analog F é o controle utilizado para as caixas frontais. As R e S são para as caixas traseiras (Rear) e laterais (Side), no caso em que eu tivesse um sistema completo de surround system (o que infelizmente não é o caso). Beleza, então eu reduzi os volumes das caixas R e S para zero.
Só que... hm... ainda há quatro saídas, com o nome estranho IEC958. Navegando na net, descobri que este nome é um padrão de transferência digital de áudio (para ser utilizado com equipamento profissional, não me pergunte). E foi aí que descobri o pulo do gato... Nas minhas tentativas frenéticas e desenfreadas para descobrir QUAL controle afetava a placa de som, eu havia colocado todas estas saídas no volume máximo...
... mas ...
o que devia ser feito era colocar as saídas digitais em MUTE! Para isto selecionei a coluna IEC958 e pressionei mute...
Para testar o funcionamento fui ao System >> Administration >> Soundcard Detection...
E VOILÁ!!!! FUNCIONOU!!!
Fiquei muitas horas para descobrir que o problema era facilmente resolvido emudecendo as saídas digitais. Mas consegui, e o importante é que pude entender alguns aspectos sobre o funcionamento do Alsa. Espero que este textículo (que espero também que não tenha ficado extremamente chato de ler) possa ajudar a algum outro incauto newbie a resolver seu problema de som.