O que temos hoje de áudio analógico no Raspberry Pi

O futuro do áudio analógico no Rasperry Pi

6Khz driver antigo

6Khz driver experimental

10Khz driver antigo

10Khz driver experimental

Como ativar o driver experimental no Raspberry Pi

amixer cset numid=3 1





Conclusão

É de conhecimento de alguns que a saída de áudio analógico doé longe de ser ideal. Suas limitações vem desde a criação do primeiro Raspberry Pi e teve algumas melhoras na parte de hardware com a vinda do Raspberry Pi B+ O áudio do Raspberry Pi não tem um bom DAC (Conversor analógico digital) , ele é gerado via dois canais PWM (um deles compartilhado com o PWM do gpio), seu driver principal roda internamente via firmware na GPU (SIM!). Na placa os sinais gerados passam por um filtro que inclui também um passa baixa de 18Khz. Em algumas análises que fizemos com um osciloscópio é possível ver como o sinal é extremamente ruidoso antes de passar pelo filtro.Na imagem abaixo temos um sinal de 1Khz sendo capturado no antigo Raspberry Pi Modelo B rev. 2.0 (com firmware desatualizado). O sinal vermelho foi capturado antes do filtro e o azul após o filtro. Mesmo após o filtro é possível ver que a onda está longe de ser perfeita.Abaixo o mesmo teste em um Raspberry Pi 2 Modelo B. É notável tanto antes quanto depois do filtro que a onda gerada é bem melhor que o modelo antigo. Após o modelo B+ foi incluído um buffer CMOS com um regulador dedicado para resolver os problemas de interferência vindos de outros componentes ligados à mesma alimentação.Há uma certa quantidade de harmônicas/ruídos/etc, dificuldade em gerar boas senoides em maiores frequências, mas isso pode estar para mudar.Um driver experimental reimplementado por um dos engenheiros do Raspberry Pi promete melhorar relativamente a qualidade de áudio analógico (o áudio via cabo HDMI é transmitido por vias digitais e nada tem a ver com esse driver).O driver original baseado em PWM de 11 bits e 48Khz foi alterado para 7 bits com modulação Sigma-Delta de segunda ordem à 781.25kHz. Segundo informações o "noise floor" se aproxima da qualidade de DACs utilizados em CD players.Embora eu não seja especialista em áudio, posso demonstrar que a alteração causou uma grande diferença que é facilmente notável em um osciloscópio.Na imagem abaixo é possível ver uma frequência de 6Khz gerada pelo Raspberry Pi com driver antigo (onda vermelha) comparada em paralelo com o driver novo (onda azul).A diferença é claramente notável, com o driver novo é possível gerar senoides com maior perfeição.Abaixo a mesma comparação em um sinal de 10KhzEm 10Khz há uma dificuldade ainda maior para se manter a onda senoidal (vermelha), com o driver experimental a diferença é novamente enorme.Ao gerar FFTs também é possível notar diferenças.O driver como dito é. Sendo necessário inclusive desativar um certo ajuste de atualização da RAM.Primeiramente é necessário atualizar o firmware para o último disponível, isso pode ser feito com o seguinte comando:No arquivoadicione as seguintes linhas:Reinicie o sistema.Segundo informado, seria necessário selecionar manualmente o driver para aqueles sem o cabo HDMI conectado utilizando. No meu caso não foi necessário esse comando (talvez algum update recente no firmware tenha corrigido). De todo modo é notável pelas diferenças nos gráficos que ele realmente estava ativo.O engenheiro que está fazendo as alterações deu mais algumas informações técnicas de melhoras.- O THD +N agora é de -50dB contra -20dB anteriormente- Quantisation noise floor de ~-93dB contra ~-60dB anteriormenteUm dos relatos são de vídeos de youtube causando problemas. Outro usuário revelou que o driver para de funcionar ocasionalmente. Eu mesmo tive alguns problemas de latência do áudio que ao reiniciar voltavam ao normal.A diferença real ao ouvir o som é. Embora eu não tenha percebido inicialmente por causa do fone, ao trocar para um que o som fica mais alto é perceptível o ruído de fundo com o driver antigo e como ele praticamente some no driver experimental.Ainda há problemas no driver sendo resolvidos e os esforços continuam para sua melhora. O pouco que foi visto ja é suficiente para saber o que vem por aí.A atualização funciona em quase todos os modelos, inclusive no novo Raspberry Pi 3 Modelo B . O Raspberry Pi Zero não tem saída de áudio analógico.Meus parabéns ao engenheiro que se apresenta com nickMais informações podem ser obtidas no post original de referência. Uma análise mais técnica sobre o áudio do Raspberry Pi pode ser vista aqui Referência: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=136445