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.
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.
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.
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
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.
Teste sua intuição
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.