De olho na música

Por Monkey

No final dos anos 90, o Winamp fez bastante sucesso nas paradas musicais. Era um tocador fantástico E COM HISTÓRIA, cujos trocentos plugins e skins fizeram muito sucesso na época. Algo que lembro bem do Winamp (e de seu clone XMMS para Linux) era que ele tinha suporte a “visualizadores de música” (vamos chamar assim por enquanto). Sim, a explosão de dispositivos móveis ainda não havia ocorrido e áudio digital normalmente era privilégio dos desktops. O máximo que se tinha à mão eram os mp3 players (alguns até mp10, mp15, mp20…) cuja capacidade de processamento era pífia e não conseguiam oferecer um visualizador de música para quem procurasse. Bom, eles normalmente viviam nos bolsos dos usuários…

A visualização de música não é algo recente. Bons equalizadores gráficos de áudio analógico sempre tiveram um visualizador à mostra. O Pioneer GR777 (tenho um) é um bom exemplo disso e ele “mostrava” a “força” do áudio em reprodução em tempo real. É bonito o efeito e dá um charme especial ao aparelho.

Pioneer GR-777

Ocorre que a ferramenta matemática usada para calcular os tamanhos das barrinhas de luz no GR777 é a mesma que o Winamp (ou xmms) usa para mostrar os efeitos visuais: a Transformada Discreta de Fourier.

A Transformada Discreta de Fourier

Jean-Baptiste Joseph Fourier, inventor dessa ferramenta matemática, morreu em 1830, mas deixou uma contribuição sem precedentes para a engenharia e é graças a ela que você se comunica diariamente usando seus dispositivos eletrônicos.

Não tentarei explicar os princípios matemáticos da Transformada Discreta de Fourier (ou DFT – Discrete Fourier Transform). Para entendê-la a fundo é necessário alguma fundamentação que só os aventureiros de engenharia possuem, mas… uma noção perfunctória de seu funcionamento é possível oferecer, juntamente com o entendimento de como os efeitos visuais podem ser gerados.

Basicamente, o que Fourier descobriu: como decompor uma função qualquer (periódica e não periódica, inclusive) em uma soma de senos de freqüências diferentes deslocados no tempo. Em se tratando de um sinal de áudio, o efeito imediato da aplicação da DFT é que é possível encontrar as amplitudes exatas de cada um dos senos associadas com uma determinada freqüência que está no áudio.

Fourier descobriu um método para encontrar os sinais 1 e 2 a partir do sinal 3

A transformada calcula a partir do sinal de entrada as freqüências dos senos e seus respectivos deslocamentos no tempo e permite que isso seja, digamos, desenhado em um gráfico com barras (impulsos), cada uma com amplitude proporcional à amplitude do seno correspondente.

No caso da onda do gráfico 3, por exemplo, apenas dois impulsos seriam percebidos, como ilustra o gráfico seguinte, com um impulso correspondente à amplitude do primeiro seno e outro à do segundo.

Cada impulso corresponde à amplitude de um seno que compõe a onda completa

Por exemplo, o som da voz humana varia entre 80Hz e 250Hz. Traçando um gráfico com as amplitudes de cada senóide numa faixa de 20Hz a 20KHz (faixa perceptível para um ouvido humano) de uma amostra de áudio que contivesse voz humana, percebe-se-ia contribuições (impulsos) ocorrendo entre 80Hz e 250Hz.

Se fosse um violino tocando na amostra de áudio, os impulsos apareceriam em outra faixa. O interessante é que, se a voz humana figura junto com o violino na mesma amostra de áudio, surgem picos em diversas faixas diferentes, correspondentes a todas as amplitudes dos senos usados para compor a amostra de áudio completa.

Basta plotar as amplitudes das senóides de um sinal num eixo de freqüências para obter um efeito visual bacana. A esse conjunto de amplitudes é dado no nome de Espectro de Fourier e, portanto, tecnicamente, você não apreciaria um Visualizador de Música, e sim um Visualizador de Espectro (ou Analisador de Espectro).

Entretanto, o ouvido humano possui a propriedade de não perceber variações próximas de freqüências tão bem nas regiões de altas freqüências quanto nas baixas freqüências. Em outras palavras, você poderia perceber nitidamente uma diferença de 100Hz entre sons de 200Hz e 300Hz, mas não perceberia uma diferença entre sons de 11200Hz e 11300Hz.

Você pode experimentar um pouco a geração de sinais de áudio nesse link.

Por isso, nos analisadores de espectro, o eixo horizontal aparece na forma LOGARÍTMICA, para que o humano consiga perceber as variações adequadamente, ou por BANDAS (juntando grupos de amplitudes por faixas de freqüência). Uma vez calculada a DFT, toma-se o logaritmo do eixo horizontal e separa-se por faixas as amplitudes calculadas dos senos.

O Pioneer GR777 possui 10 Bandas por canal (Left/Right)

Logo, o que você visualiza são efeitos visuais produzidos pelo tratamento da saída da DFT. A implementação em software normalmente é feita tomando amostras de áudio com 512 elementos em ponto flutuante de precisão dupla (double), de sorte que a DFT possui a mesma quantidade de elementos (512, no caso), cujos impulsos podem ser agrupados em intervalos (bandas), conforme o tipo de efeito visual.

O desenvolvedor de um visualizador de música (ou de espectro) trabalha construindo seu plugin para o reprodutor de áudio tendo como referência um array de valores categorizados por bandas de freqüência. O plugin recebe constantemente a DFT calculada na forma de um array de valores e ao desenvolvedor cabe somente plotar o array recebido.

QMMP
AIMP

Os tocadores de música costumavam vir com muitos visualizadores bacanas. WinAmp e XMMS eram top nesse quesito. Hoje, porém, com a popularização dos serviços de streaming, os visualizadores estão meio esquecidos… Raramente os vejo.

Qual foi o melhor plugin de visualização que você lembra ter usado?

Author: Eric Mac Fadden