Trilha 16 · Imagens, áudio e vídeo

Síntese de Fourier

O teorema que une física, música e processamento de sinais: qualquer onda periódica pode ser decomposta em — ou construída a partir de — uma soma de senoides.

① Intuição

Toda onda é soma de senoides

Em 1822, o matemático Joseph Fourier provou algo surpreendente: qualquer função periódica — não importa quão estranha ou irregular — pode ser escrita como uma soma de senoides com frequências múltiplas inteiras de uma frequência base. Essas senoides componentes são chamadas harmônicos.

A frequência fundamental (1º harmônico) determina o tom percebido. Os harmônicos adicionais determinam o timbre — o que diferencia um violino de uma flauta tocando a mesma nota. Isso explica por que músicos ouvem "riqueza" ou "pureza" no som: mais harmônicos = timbre mais complexo.

FFT — a operação mais importante do DSP: a inversa da síntese é a análise. Dado um sinal, a Transformada de Fourier encontra quais frequências ele contém. A FFT (Fast Fourier Transform) é um algoritmo que faz isso em O(N log N) em vez de O(N²). É usada em compressão de áudio (MP3), processamento de imagem (JPEG), radar, tomografia, criptografia — provavelmente o algoritmo mais aplicado da história da computação.
② Visualização interativa

Construa uma onda com harmônicos

Arraste o slider para adicionar harmônicos e veja a soma (azul) se aproximar da onda alvo (cinza). Com harmônicos suficientes, a aproximação fica quase perfeita.

SOMA DE 1 HARMÔNICO — alvo (cinza) vs. aproximação (azul)
Número de harmônicos
1
1ª harmônico · 1.273
Teorema de Fourier: qualquer onda periódica pode ser decomposta em uma soma de senoides com frequências múltiplas inteiras da frequência fundamental. Com harmônicos infinitos, a aproximação se torna perfeita.
③ Explicação técnica

Fórmulas da Série de Fourier

// Série de Fourier: qualquer onda periódica = soma de senoides

// Onda quadrada de frequência f:
// f(t) = (4/π) * [ sin(f·t) + sin(3f·t)/3 + sin(5f·t)/5 + ... ]
function squareWave(t, freq, harmonics) {
  let sum = 0;
  for (let k = 1; k <= harmonics; k++) {
    const n = 2*k - 1;                     // 1, 3, 5, 7...
    sum += Math.sin(2*Math.PI * n*freq * t) / n;
  }
  return (4 / Math.PI) * sum;
}

// Dente-de-serra de frequência f:
// f(t) = (2/π) * [ sin(f·t) - sin(2f·t)/2 + sin(3f·t)/3 - ... ]
function sawtoothWave(t, freq, harmonics) {
  let sum = 0;
  for (let k = 1; k <= harmonics; k++) {
    const sign = k % 2 === 0 ? -1 : 1;
    sum += sign * Math.sin(2*Math.PI * k*freq * t) / k;
  }
  return (2 / Math.PI) * sum;
}

A Transformada de Fourier Discreta (análise)

// Transformada de Fourier Discreta (DFT) — a inversa
// Dado um sinal no tempo, encontra suas componentes de frequência

function dft(signal) {
  const N = signal.length;
  const spectrum = [];

  for (let k = 0; k < N/2; k++) {   // só metade (Nyquist)
    let re = 0, im = 0;
    for (let n = 0; n < N; n++) {
      const angle = 2 * Math.PI * k * n / N;
      re += signal[n] * Math.cos(angle);
      im -= signal[n] * Math.sin(angle);
    }
    spectrum.push(Math.sqrt(re*re + im*im) / N);
  }
  return spectrum; // amplitude de cada frequência
}

// FFT (Fast Fourier Transform): O(N log N) vs O(N²) da DFT ingênua
// Web Audio API: AnalyserNode.getFloatFrequencyData() usa FFT internamente
// Applica janela (Hann, Blackman) para reduzir vazamento espectral
Fenômeno de Gibbs: mesmo com infinitos harmônicos, há um overshoot de ~9% nas descontinuidades de ondas quadradas e dente-de-serra. Não é falta de harmônicos — é uma propriedade matemática da série de Fourier em pontos de descontinuidade. Em áudio, isso contribui para o som "áspero" dessas formas de onda.
④ Projeto para programar

Espectrograma em tempo real

Mini projeto: use AnalyserNode do Web Audio API para capturar o espectro de frequências do microfone em tempo real. Renderize como gráfico de barras no Canvas: cada barra representa a amplitude de uma faixa de frequência.

Projeto principal: implemente uma DFT manual em JavaScript (sem bibliotecas): receba um array de amostras PCM, calcule as N/2 componentes espectrais. Visualize como um espectrograma "waterfall" — cada coluna é um frame de FFT, o eixo Y é frequência, cor é amplitude.

Desafio extra: implemente a síntese FM (frequency modulation): use um oscilador "modulador" para modular a frequência de um oscilador "portador". Com modIndex alto, o resultado tem harmônicos ricos que se aproximam de sons de piano e campainha. Compare o espectro FM com o espectro aditivo equivalente.

⑤ Exercícios rápidos

Teste sua intuição

O que afirma o Teorema de Fourier aplicado a sinais periódicos?
O que determina o timbre (qualidade do som) de um instrumento musical?
Qual a relação entre FFT e DFT?
⑥ Aplicações no mundo real

Onde você encontra isso

🎛️

Equalização e filtros

Equalizadores trabalham no domínio de frequência: um filtro passa-baixa deixa passar frequências abaixo de um cutoff e elimina as acima. Implementado digitalmente como FIR ou IIR filter — matematicamente, uma convolução no domínio do tempo equivale a uma multiplicação no domínio de frequência (Teorema da Convolução).

🖼️

JPEG e compressão de imagem

JPEG usa a Transformada Discreta de Cosseno (DCT — variante da FFT) em blocos 8×8 de pixels. As frequências baixas (estrutura geral) são preservadas com alta precisão; as altas (detalhes finos) são descartadas ou quantizadas grosseiramente. O olho humano é muito mais sensível às frequências baixas.

📡

Radar e comunicações

Radar envia pulsos eletromagnéticos e analisa o eco via FFT para encontrar velocidade (Doppler) e distância dos objetos. Redes Wi-Fi e 5G usam OFDM (Orthogonal Frequency Division Multiplexing) — cada subportadora é uma senoide de Fourier, permitindo transmissão eficiente em canais com múltiplos percursos.

← Anterior: Amostragem e PCM Próxima: Compressão de imagem →