Trilha 16 · Imagens, áudio e vídeo

Ondas sonoras e áudio digital

O que é frequência, amplitude, timbre — e como um computador representa som como uma sequência de números em vez de uma onda de ar.

① Intuição

Som é vibração, vibração é número

Som é variação de pressão no ar — o alto-falante empurra moléculas de ar para a frente e para trás, criando ondas que chegam ao tímpano. A frequência (Hz) determina o tom: 440 Hz é o Lá4, 880 Hz é uma oitava acima. A amplitude determina o volume.

Para um computador, som é um array de números — cada número representa a amplitude da onda naquele instante. Um segundo de áudio CD tem 44.100 números (amostras), cada um com 16 bits de precisão. Esse formato é chamado PCM (Pulse Code Modulation) — é o que está num arquivo WAV ou numa faixa de CD.

Por que 440 Hz para o Lá? É uma convenção internacional (ISO 16) desde 1939. Antes disso, "o Lá" variava de 415 Hz a 466 Hz dependendo do país, época e instrumento. Hoje, toda orquestra afina com base no Lá4 = 440 Hz para garantir que instrumentos de diferentes países soem juntos.
② Visualização interativa

Gerador de formas de onda

Escolha uma forma de onda, ajuste frequência e amplitude, e clique em Tocar som para ouvir usando o Web Audio API.

FORMA DE ONDA — 3 PERÍODOS
PARÂMETROS
Frequência440 Hz
Amplitude70%
PROPRIEDADES
Onda: Senoide
Período: 2.27 ms
λ (ar): 0.78 m
Oitava: midrange
③ Explicação técnica

PCM e superposição de ondas

// Som como array de floats (PCM — Pulse Code Modulation)
const sampleRate = 44100;   // amostras por segundo
const duration   = 1;        // 1 segundo
const freq        = 440;      // Lá4 = 440 Hz

// Gera uma senoide de 440 Hz
const buffer = new Float32Array(sampleRate * duration);
for (let i = 0; i < buffer.length; i++) {
  const t = i / sampleRate;  // tempo em segundos
  buffer[i] = Math.sin(2 * Math.PI * freq * t);
}

// Web Audio API: toca o buffer
const ctx = new AudioContext();
const ab  = ctx.createBuffer(1, buffer.length, sampleRate);
ab.copyToChannel(buffer, 0);
const src = ctx.createBufferSource();
src.buffer = ab;
src.connect(ctx.destination);
src.start();

Timbre e harmônicos

// Superposição: somando ondas para criar timbres

// Onda quadrada = senoide fundamental + harmônicos ímpares
function squareWave(t, freq, harmonics = 10) {
  let sum = 0;
  for (let k = 1; k <= harmonics; k++) {
    const h = 2*k - 1;           // 1, 3, 5, 7...
    sum += Math.sin(2 * Math.PI * h * freq * t) / h;
  }
  return (4 / Math.PI) * sum;
}

// Por que instrumentos musicais têm timbre diferente?
// Cada instrumento tem um padrão único de harmônicos (loudness por harmônico)
// Flauta: poucos harmônicos → som puro
// Violino: muitos harmônicos → som rico e complexo
// Piano: transiente forte + decaimento de harmônicos variável
Formas de onda e timbre: todas as quatro formas clássicas têm o mesmo tom se tiverem a mesma frequência fundamental, mas soam diferente porque têm harmônicos diferentes. Senoide: harmônico único (som mais puro). Quadrada: harmônicos ímpares (som mais eletrônico). Dente-de-serra: todos os harmônicos (som mais "áspero", parecido com violino). Triangular: harmônicos ímpares com queda rápida (mais suave que a quadrada).
④ Projeto para programar

Sintetizador com Web Audio

Mini projeto: use o Web Audio API para criar um teclado virtual de uma oitava (C4 a C5). Cada tecla toca um OscillatorNode com a frequência correta. Calcule as frequências com 440 * 2^((n-69)/12) onde n é o número MIDI da nota.

Projeto principal: implemente envelope ADSR: ao pressionar uma tecla, a amplitude sobe em attack ms, desce ao nível sustain em decay ms, e ao soltar a tecla, cai a zero em release ms. Use gain.gain.linearRampToValueAtTime().

Desafio extra: crie um arpejador — toque uma progressão de acordes automaticamente, variando a ordem das notas (up, down, random). Use AudioContext.currentTime para agendar os eventos sonoros com precisão de sample.

⑤ Exercícios rápidos

Teste sua intuição

O que determina o tom (grave ou agudo) de um som?
O que é PCM (Pulse Code Modulation)?
O que determina a frequência máxima reproduzível num arquivo de áudio digital?
⑥ Aplicações no mundo real

Onde você encontra isso

🎸

Síntese e processamento de áudio

DAWs (Ableton, Logic Pro, FL Studio) trabalham com PCM internamente. Plugins VST são filtros digitais que modificam as amostras em tempo real — equalizadores mudam amplitudes de harmônicos, reverb adiciona eco, distorção introduz novos harmônicos.

🎤

Reconhecimento de voz

Assistentes como Siri e Google Assistant convertem o PCM do microfone em espectrograma de frequências (via FFT), que é então processado por uma rede neural para identificar palavras. O modelo "ouve" padrões espectrais, não formas de onda diretamente.

📻

MP3 e codecs de áudio

MP3 usa um modelo perceptual do ouvido humano para descartar sons que não ouvimos: frequências mascaradas por sons mais altos próximos, sons muito breves, frequências acima de 16kHz. O resultado usa 10-15% do espaço do WAV sem perda perceptível de qualidade.

← Trilha: Imagens, áudio e vídeo Próxima: Amostragem e PCM →