Revista Do Linux  
EDIÇÃO DO MÊS
 Produto
 Atualidades
 Slackware
 Entrevista
 CD do mês
 Capa
 Open Source
 Corporativo
 Programação
 Zope
 Digitalização

 

Feito em Casa
Usando as ferramentas do Linux é possível digitalizar o conteúdo de antigos LPs de vinil ou de fitas cassete, com resultados bastante favoráveis

Muitos de nós ainda temos guardados discos de vinil, ou fitas cassete, recheados de músicas queridas, mas ainda é muito cedo para decretar a morte deles. Até porque nenhum dos formatos propostos para fita digital "pegou" (exceto talvez pelo DAT, nos meios profissionais), e o cassete analógico segue imbatível em seu nicho. Já o caso dos LPs é mais sério.

Um grande problema da maioria das mídias analógicas é a inexorável degradação. Fitas enrolam e mofam. Discos são facilmente arranhados e sofrem desgaste mensurável a cada reprodução.

Assim a solução é digitalizar para estender a vida do conteúdo em, pelo menos, uma vida útil da mídia digital, que costuma ser longa. Além disso, a mídia digital permite, em geral, uma reprodutibilidade perfeita.

Segue um roteiro "amador" de digitalização, utilizado pelo autor para digitalizar LPs e fitas, com resultados bastante satisfatórios.

1. Conversão analógico/digital

É o estágio mais importante. A qualidade do som digitalizado vai depender da sua placa de som, e indiretamente do seu computador como um todo.

Os aspectos que afetam a qualidade da digitalização são:

Taxa de amostragem

A maioria das placas de som determina a taxa de amostragens dividindo um número grande inteiro (L) por outro inteiro (s’), sendo que apenas s’ é configurável por software; imagino que L seja a freqüência do clock da placa de som). Por esse motivo, não é possível obter qualquer taxa de amostragem, mas apenas aquelas resultantes da divisão (L/s’).

Por exemplo, no computador que utilizei para digitalização, não consegui digitalizar a 44100Hz, que é a freqüência padrão para CDs e MP3. O mais próximo que cheguei foi 44191Hz. Foi preciso uma conversão de taxa (resampling).

No meu caso particular, ao invés de usar 44191Hz, utilizei a taxa mais alta oferecida pelo computador (46790Hz).

Préfiltragem

O sinal analógico deve passar por um filtro passa-baixas, com freqüência de corte em (s/2) Hz, antes de ser oferecido ao conversor analógico-digital (ADC). A falta desse filtro provoca uma distorção bem específica no sinal digitalizado, conhecida como "aliasing".

A grande maioria das placas de som atuais tem esse filtro embutido. Se você suspeita que sua placa de som não faz essa filtragem, talvez você possa construir ou adquirir um filtro - ou simplesmente ignorar o "aliasing", se o conteúdo de alta freqüência do seu sinal analógico for pequeno.

Linearidade da amostragem

Um conversor analógico-digital (ADC) comum contém um conversor digital-analógico (DAC) e um comparador de tensão. No processo de amostragem, diversos valores digitais são estimados. Esses valores são injetados no DAC, cuja saída é analógica. O comparador verifica se a saída do DAC é igual ao sinal de entrada. Se for, o valor estimado é correto. Se não, um novo "chute" é efetuado, e o ciclo se repete.

O conversor DAC é um circuito simples. Porém, se algum dos componentes do DAC tiver um valor ligeiramente diferente do esperado, a saída não será linear. Ora, se um ADC contém um DAC, qualquer não-linearidade do DAC embutido resultará numa falha.

Todo circuito ADC/DAC tem falhas de linearidade, e as falhas tendem a ser maiores em dispositivos de baixo preço, tais como placas de som. Infelizmente, não há muito o que fazer a respeito, a não ser confiar no equipamento, ou comprar uma placa melhor.

Ruídos

Existem diversos pontos onde o conteúdo original pode ser contaminado por ruídos, ou sofrer alguma forma de "filtragem" indesejada. Os pontos mais óbvios estão no lado analógico: cabeçotes sujos, agulhas com poeira, cabos sem blindagem... Enfim, são problemas de fácil resolução, ou que dependem da qualidade do seu aparelho de som.

Outro tipo de ruído, mais irritante e difícil de mitigar, é o "ruído digital" que sua placa de som pode captar de circuitos adjacentes. Quase toda placa de som introduz um pouco de ruído na reprodução. (Para testar isso, coloque o volume ao máximo; você deverá ouvir uns assobios que mudam de tom.) O ruído na reprodução geralmente é pequeno. O que preocupa é o ruído na gravação, pois ficará enterrado para sempre no conteúdo digitalizado. Felizmente, mesmo placas de som "on-board" têm conseguido blindar o sinal de entrada de forma satisfatória, como eu mesmo pude constatar na prática.

Testar a presença de quaisquer ruídos na gravação é simples: basta gravar um arquivo digital sem estar tocando nenhuma música. Já a análise quantitativa desse ruído pode não ser muito fácil, se for feita "de ouvido". Vale então olhar diretamente nas amostras numéricas do arquivo (usando o KHexdit ou outro editor).

Saturação

Todo circuito linear tem uma faixa de operação. Por exemplo, um amplificador de ganho 100. Se a fonte de alimentação do amplificador oferece 12 volts, então a maior tensão possível na saída será 12 volts. E a maior tensão de entrada a que o amplificador reagirá linearmente será (12/100) = 0.12 volts.

Obviamente, um sinal de entrada muito forte sairá "achatado". É uma espécie de distorção denominada saturação ou clipagem.

No caso dos circuitos analógicos, a saturação tende a ser "amaciada", pois muitos circuitos tendem a apresentar uma resposta progressivamente não linear antes de chegar ao ponto de saturação. Amplificadores valvulados ou FET são exemplos bem conhecidos.

Já outros circuitos têm saturação bem definida, e que será muito bem percebida pelos ouvintes. É o caso dos amplificadores transistorizados.

A clipagem é fatal no caso da conversão ADC, justamente por ser um processo digital e exato. O resultado será um som extremamente irritante aos ouvidos.

Moral da história: não deixe o sinal de entrada oferecido ao ADC saturar. Como é quase certo que você fará algum tipo de filtragem digital após a gravação, é aconselhável deixar uma "folga" adicional, não deixando o sinal passar da metade da tensão máxima.

Número de bits por amostra

Normalmente será 16 bits, pois:
  • você vai querer a melhor qualidade possível;
  • quase nenhuma placa de som oferece mais que isso;
  • a posterior gravação do conteúdo em CD exige resolução de 16 bits.

No entanto, é possível gerar MP3 a partir de conteúdos de 8 bits. Se o conteúdo for de baixa qualidade e/ou você realmente deseja que os MP3 finais sejam pequenos, é uma opção.

A relação sinal/ruído de um sinal digital é 6 vezes o número de bits por amostra. Digitalizar um sinal ruidoso com poucos bits só vai piorar a qualidade do sinal.

Existem vários programas para gravação digital em Linux e uma consulta ao Freshmeat (www.freshmeat.net mostra isso.

O princípio de funcionamento de qualquer gravador é relativamente simples: consiste em abrir e ler o arquivo /dev/dsp. Portanto, até mesmo um comando tão simples como



# cat /dev/dsp > meusom.au

é capaz de gravar sons. Note que faltou configurar a taxa de amostragem, e isso só pode ser feito com chamadas ioctl(), dentro de um programa C. Outro problema, menos óbvio, é que o comando acima lerá o dispositivo milhares de vezes por segundo, o que não é nada eficiente. Um leitor decente usará técnicas mais elaboradas, oferecidas pelo driver do Linux.

Eu utilizei o KRecord, que não é o melhor de todos, mas cumpre o seu papel. Para quem for utilizá-lo, observar as seguintes dicas:

- O KRecord é um pouco sensível à atividade do computador, e pode perder um ou mais décimos de segundo da música se algum processo pesado rodar concomitantemente. Use-o com uma prioridade mais alta:



# nice -20 krecord

- Use buffers de arquivo (file buffers). A digitalização de um único lado de um LP pode passar dos 300MB. É claro, se você tiver 512MB de RAM poderá usar buffers em memória impunemente.

- Utilize o monitor de volume no modo Linear/Max. (O default é exatamente o oposto: Log/Power). Isso lhe permitirá fiscalizar em tempo real os picos de volume. Porém, evite o monitor de espectro de freqüência - pelo menos na versão 1.2 do KRecord, este recurso deixava o programa instável.

- Utilizar a entrada "line-in" ou auxiliar da placa de som. Não utilizar a entrada para microfone, que geralmente é monofônica e muito mais sensível.

- Se o seu aparelho de som tiver saída auxiliar (AUX), utilize-a para alimentar o computador. Em último caso, utilize a saída para alto-falantes, mas com volume bem baixo.

- A saída de um toca-discos costuma ser muito fraca. Veja se consegue compensar isso no mixer do computador. Se não conseguir, ou se o ruído de fundo ficar muito forte, talvez seja necessário um pré-amplificador.

Para regular o volume de entrada do sinal, usei tanto o KMixer (do KDE) quanto o aumix (modo texto). Seja qual for o seu mixer, você vai precisar atuar sobre três regulagens:

- O volume da fonte de sinal para reprodução imediata, ou seja, o som emitido pelo alto-falante do computador. Este controle não atua sobre o sinal oferecido ao ADC, e não evita a saturação.

- a fonte de sinal para digitalização. Embora todos os sinais de entrada sejam reproduzidos concomitantemente no alto-falante do computador, apenas um é oferecido ao ADC. O sinal "line-in" ou "auxiliar" deve ser configurado como fonte de sinal.

- O volume da fonte de sinal para digitalização. Este controle regula o nível do sinal oferecido ao ADC, e portanto é nele que devemos atuar para evitar a saturação. Para fiscalizar o nível real do sinal é aconselhável usar um gravador, como o KRecord.

2. Adição de ruído de máscara (masking noise)

O som digital costuma ser amostrado linearmente. Existem esquemas logarítmicos, porém visam a diminuição do volume de dados, e não a qualidade de reprodução.

Para sons cujo volume é realmente baixo, um número realmente pequeno de bits é exercitado a cada amostra. Com isso, a diferença entre os níveis de sinal adjacentes torna-se grande, a ponto de ser perceptível por alguns audiófilos.

Para atenuar esse problema, os fabricantes de CDs têm adotado a tática de adicionar um "ruído de 1/2 bit" ao sinal. Isso não elimina o ruído digital, simplesmente espalha o ruído por todo o espectro, tornando-o mais suave e talvez inaudível.

Suponha que a diferença de tensão entre dois níveis de sinal adjacentes seja 0 e 1. Um sinal analógico 0.4999 será sempre digitalizado como 0; já um sinal 0.5001 será sempre digitalizado como 1. Essa "certeza" é que acaba gerando uma onda quadrada.

No exemplo acima, adicionar um valor aleatório, com probabilidade linear entre -0.5 e +0.5 traz uma "incerteza" no arredondamento, ou seja, um sinal 0.5000 tem igual probabilidade de ser digitalizado entre 0 e 1. Um sinal 0.6000 tem 60% de chance de ser 1 e 40% de chance de ser 0... e assim por diante. Num exemplo extremo (apenas 1 bit de resolução), e se o ruído for perfeitamente aleatório, o resultado será uma codificação digital PWM, muito melhor.

Isso é possível se o sinal aleatório é analógico, ou se podemos fazer uma pré-digitalização com mais bits por amostra. Nenhuma das duas soluções nos é acessível. Precisamos introduzir o ruído no sinal pré-digitalizado; não é o ideal, mas é melhor do que nada.

A solução do SOX é adicionar ou reduzir um nível de sinal em 50% das amostras, deixando os outros 50% intocados.

Como foi dito, as gravadoras adicionam esse "ruído" aos CDs e devemos fazer o mesmo com os sinais que nós mesmos digitalizamos.

O "canivete suíço" para manipulação de som no Linux é o SOX. Para adicionar o 1/2 bit de ruído a um conteúdo recém-digitalizado, utilize o comando.


# sox digital.wav digitalmask.wav mask

Por último, note que esse recurso serve apenas para mitigar o rúido digital, e nada mais. O ruído presente na mídia analógica não será diminuído.

3. Conversão para taxa de amostragem 44100Hz

Se sua placa de som não aceita digitalizar em exatos 44100 Hz, será necessário fazer uma conversão de taxa (resampling).

A simples interpolação linear até funciona, porém introduz ruído. E, no caso da conversão para uma taxa menor, o espectro superior das freqüências do sinal original aparecerá distorcido por "aliasing" no sinal final. Para remover parte do ruído e evitar o "aliasing", a conversão de taxa precisa ser um pouco mais elaborada.

Para fazer a conversão de taxa no Linux, novamente usaremos o SOX:



# sox digitalmask.wav -r 44100 digitalmaskfinal.wav resample

O SOX oferece três modos de conversão: resample (recomendável), rate (simples interpolação linear), e polyphase, muito mais elaborado do que os outros dois, porém muito mais demorado e com resultados semelhantes ao resample.

4. Gravação em CD

Uma vez preparados os arquivos de som conforme prescrito, não poderia ser mais fácil gravá-los em CD.

Se utilizarmos o CDRecord:


# cdrecord -v speed=2 dev=0,0,0 -pad -audio arquivo1.wav arquivo2.wav [...]

5. Conversão para MP3

Também é relativamente fácil. Pessoalmente, recomendo o conversor gratuito LAME, que é distribuído como um patch para o gerador de referência ISO ("LAME ain’t an MP3 encoder").

O LAME gera arquivos "aceitáveis" a 128Kbps. Pessoalmente, uso 160Kbps, que é suficiente para quase todos os conteúdos. Para músicas ao vivo e/ou com aplausos, taxas de 192Kbps ou acima são aconselháveis.

De todos os geradores MP3 gratuitos que testei, o LAME é o melhor.

O melhor gerador para a taxa de 128Kbps é o do instituto Fraunhofer. Infelizmente, é um produto comercial. O LAME praticamente iguala essa qualidade a 160Kbps.

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade