terça-feira, 24 de julho de 2012

Amostragem x Pedaleiras Digitais (V)

O quarto post da série "Amostragem x Pedaleiras Digitais" era para ser o último abordando a questão sobre conversão AD/DA. Entretanto, achei que mais algumas considerações poderiam ilustrar outros aspectos também interessantes deste tema.

Neste artigo gostaria de abordar o termo "oversampling", que é muito utilizado nas pedaleiras mais modernas.

No último post eu disse que algumas pedaleiras digitais eram ruins por causa do poder de processamento dos processadores mais antigos, limitando a complexidade dos seus algoritmos.

Isso não deixa de ser uma grande verdade, porém deixei de falar na ocasião de outro aspecto muito importante envolvido na conversão AD/DA, que é o projeto dos filtros (antialiasing e reconstrução).

Como um princípio básico da filosofia: "Natura non facit saltus" ou em portugês, "a natureza não dá saltos", não podemos construir um filtro ideal, que deixe passar tudo abaixo de uma determinada frequência e não deixe passar nada acima desta mesma frequência. O que acontece na prática é que temos que achar um meio termo, um ponto onde inevitavelmete teremos que atenuar algumas das frequências que desejamos, e deixar passar alguma coisa das frequências que não desejamos. Isso pode parecer térrivel e alguém pode pensar que então a coisa não tem como funcionar. Na verdade funciona, em engenharia nós trabalhamos sempre pensando no equilíbrio entre custo e qualidade (melhores projetos custam mais, porém em alguns casos abrimos mão para uma qualidade inferior, porém aceitável, em troca de um custo menor).

O que isso tem a ver com o nosso caso? Filtros de melhor qualidade vão atenuar menos o que queremos deixar passar, e atenuar mais o que não queremos deixar passar. Usando termos técnicos, o número de "pólos" é determinante no projeto destes filtros. Quanto mais pólos, melhor é o filtro, porém mais caro. Voltando às pedaleiras digitais, não espere um filtro muito bom pagando pouco.

Tomando nosso exemplo real onde a taxa de amostragem dos CDs é de 44KHz, precisamos de um filtro que barre tudo acima de 22KHz e deixe passar tudo abaixo dos 22KHz. Na prática um filtro que comece atenuar aos 15KHz já precisa ter uma complexidade razoável. Mas e se aumentássemos a frequencia de amostragem para 96KHz? Precisaríamos de um filtro que atenuasse tudo abaixo de 48KHz. Como nossa frequência de audição máxima é em torno dos 15KHz, temos uma faixa que vai dos 15KHz até os 48KHz de folga para projetarmos nosso filtro.  E se aumentássemos em 64x (os 96KHz) nossa frequência de amostragem? Poderíamos usar fitros bem mais simples então, já que a nossa folga aumenta, e muito.

Barateamos o filtro, mas precisamos de mais memória e de processadores mais velozes. Antes tinhámos 96 mil (sampling de 96KHz) amostras do sinal a cada segundo, ou seja, o processador precisa trabalhar fazendo várias contas em 96 mil números para tratar 1 segundo no nosso sinal. Com um oversampling de 64x, vamos precisar de 64 x 96 mil ou seja, algo em torno de 6 milhões. Nosso custo em processamento e armazenamento vai aumentar.

Bem, nem tanto. E se agora fizéssemos um filtro passa-baixas digital e depois jogássemos fora parte dessas amostras do sinal de forma a trabalharmos com as iniciais 96 mil amostras por segundo ? Nada mal né? Basta descartarmos (jogar fora mesmo) 63 de cada 64 amostras. Isso é o que chamamos de oversampling na conversão AD.

E a conversão DA? Idem, inserimos de volta 63 amostras entre cada amostra do nosso sinal processado. Como fazemos isso? Basta adicionar zeros e aplicarmos um filtro passa baixas digital. Isso deteriora o sinal? Não, só "espaçamos" de novo a banda do sinal de forma a baratearmos nosso filtro de reconstrução. Isso é o oversampling na conversão DA.

Bem, espero que a ausência de figuras não tenha complicado demais a explicação. Procurei dar apenas uma idéia geral do que seria o oversampling e sua vantagem nas pedaleiras digitais.

Um comentário: