Por Que a Sua Imagem de Forma de Onda Está Sem a Bateria

14 de setembro de 2026 · 8 min de leitura

Desenhar uma forma de onda é um problema de redução: vários milhões de números precisam virar algumas centenas de colunas de pixels. Quase toda ferramenta responde isso do mesmo jeito, em uma linha, e essa linha está errada de um modo que dá para medir com exatidão.

Eis a aritmética que transforma isso em problema. Uma faixa de três minutos a 44,1 kHz tem 7.938.000 amostras. Desenhada com 800 px de largura, cada coluna de pixel precisa representar 9.922,5 delas. Alguma coisa tem que decidir o que a altura de uma coluna significa.

A resposta comum é pegar uma amostra de cada coluna e desenhar a altura dela. Isso lê 800 amostras de 7.938.000 — 0,0101 % do arquivo. Não é um resumo da coluna. É uma amostragem pontual dela, a uma taxa milhares de vezes abaixo da do próprio sinal, que é o cenário de manual para aliasing.

Um tom em escala cheia desenhado como linha reta

O jeito mais limpo de enxergar isso é desenhar um áudio cujo desenho correto você já conhece. Geramos 180 segundos de um tom constante com amplitude 1,0 — escala cheia da primeira à última amostra. O desenho verdadeiro é um bloco sólido de altura 1,000, em todas as colunas, sem discussão.

Veja o que uma amostra por coluna devolve, quando a única coisa que muda é a frequência:

TomUma amostra por colunaTodas as amostras (pico)
100 Hz0,00361,0000
220 Hz0,00781,0000
261,63 Hz0,63611,0000
440 Hz0,01571,0000
441 Hz0,63521,0000
1000 Hz0,03561,0000
2000 Hz0,07101,0000
5000 Hz0,17441,0000

Áudio idêntico, no mesmo volume, e as respostas vão de 0,0036 a 0,6361. Cento e oitenta segundos de um tom que nunca sai da escala cheia desenham como uma linha reta em 440 Hz — e em 441 Hz, um hertz adiante, como uma onda com 64 % de altura.

Nada disso é uma propriedade do áudio. É uma propriedade de como o período do tom se divide no passo das colunas: 440 Hz a 44,1 kHz são 100,227 amostras por ciclo, e 9.922,5 amostras por coluna são 99,0 desses ciclos — então coluna após coluna cai quase na mesma fase. O retrato é da aritmética, não do som.

Redimensione a imagem e a onda muda de forma

Este é o sinal que a maioria já viu sem saber nomear. Pegue aquele mesmo arquivo de 440 Hz e redesenhe em larguras diferentes, sem mudar mais nada:

LarguraAmostras por colunaUma amostra por colunaTodas as amostras
600 px13.230,00,00001,0000
700 px11.340,00,62591,0000
800 px9.922,50,01571,0000
900 px8.820,00,00001,0000
1000 px7.938,00,61551,0000
1200 px6.615,00,00001,0000
1920 px4.134,40,51141,0000

Um arquivo, um tom, sete desenhos — três deles em branco. Se você já exportou uma onda em dois tamanhos e achou o segundo estranho, você tinha razão, e é por isso. Um desenho que muda quando você muda a tela não está descrevendo o áudio.

Uma faixa de bateria sem bateria

O caso da frequência é uma demonstração limpa, mas o caso que custa trabalho de verdade são os transientes. Um estouro de 2 ms a 44,1 kHz tem 88 amostras — 0,89 % de uma coluna de 9.922 amostras. Ler uma amostra por coluna cai em cima dele cerca de 0,89 % das vezes.

Montamos uma trilha de cliques: 360 estouros em escala cheia, um a cada 500 ms, ao longo de três minutos. Depois desenhamos das duas maneiras.

MediçãoUma amostra por colunaTodas as amostras (pico)
Colunas que mostram um estouro0 de 800360 de 800
Coluna mais alta0,00000,8973
Amostra única em escala cheia achada (200 posições aleatórias)0 / 200200 / 200
Estouro de 2 ms achado (200 posições aleatórias)3 / 200200 / 200

Zero. Não bateria mais fraca — bateria nenhuma. Cada uma das 360 batidas em escala cheia caiu entre as amostras observadas, e o desenho voltou como uma linha reta. Escondendo uma única amostra em escala cheia num arquivo silencioso e movendo-a para 200 posições aleatórias, o atalho a encontrou nenhuma das 200 vezes; alargando para um estouro de 2 ms, encontrou três.

Por que ninguém percebe

Porque nunca falha alto. Uma onda 65 % mais curta, ou sem os transientes, ou com forma diferente em outro tamanho, continua parecendo uma onda. Tem picos e vales, começa onde o áudio começa e termina onde ele termina, e é em geral mais alta nas partes altas. Não há erro, não há aviso e não há com o que comparar — que é exatamente o formato dos outros defeitos que seguimos encontrando em ferramentas criativas pequenas: um anel desenhado com metade da largura pedida parece um anel mais fino, não um bug, e uma fatia de carrossel deslocada meio pixel parece uma foto um pouco mole.

O motivo para se importar não é estético. Se você está cortando pela onda, alinhando uma legenda a uma batida ou tirando silêncio no olho, está decidindo a partir de um desenho que jogou fora 99,99 % das evidências.

A correção, e quanto ela custa

Guarde o mínimo e o máximo de cada coluna. É só isso. Não tem como perder uma amostra porque lê todas, é estável ao redimensionar porque não depende de quais amostras foram olhadas por acaso, e pega um transiente de 88 amostras pelo mesmo motivo.

O custo: reduzir todas as 7.938.000 amostras a 800 colunas levou 4,70 ms, melhor de cinco execuções, num navegador comum. O atalho levou 0,00 ms. Essa é a economia inteira que está sendo defendida, e ela compra um desenho que não é do seu áudio.

RMS é outra pergunta, não uma resposta errada

Há uma terceira opção que vale nomear, porque as ferramentas a misturam em silêncio. RMS é a energia média da coluna, e não a amostra mais forte dela. Para uma senoide, o RMS é 0,7071 contra um pico de 1,0000 — uma onda em RMS é 29,29 % mais baixa do que uma onda em pico do mesmo áudio.

Nenhuma das duas está errada. O pico mostra transientes; o RMS acompanha o volume percebido e sai mais suave. Errado é não saber qual delas você está olhando, ou uma ferramenta que usa uma para a prévia e outra para a exportação.

Confirmado num arquivo real, depois que a ferramenta foi ao ar

Sinais sintéticos provam o mecanismo; um arquivo real prova que ele sobrevive ao contato com áudio de verdade. Soltamos um trecho de fala de 20 segundos — 960.000 amostras, mono, 48 kHz — no gerador de imagem de forma de onda pronto e lemos os números da própria página, não de uma reimplementação dela.

LarguraPico real (todas as amostras)Pico achado por uma amostra
600 px0,29640,2387
800 px0,29640,2172
1000 px0,29640,1886
1200 px0,29640,2387
1920 px0,29640,2343

O pico real é 0,2964 em todas as larguras, porque é um fato sobre o arquivo. A resposta do atalho vagueia entre 0,1886 e 0,2387 dependendo só da largura que você pediu para a imagem. No mesmo trecho, 88 de 480 colunas alcançam metade do pico real; ler uma amostra por coluna encontra 10. O desenho dele fica 65,42 % mais baixo, em média.

A ferramenta desenha o seu arquivo das duas maneiras, lado a lado, e imprime esses números para o que você der a ela — então a comparação é algo que você roda, e não algo em que você acredita.

Perguntas frequentes

Isso é um defeito de verdade ou implicância de purista?

É um defeito com números anexados. Numa trilha de cliques sintética o atalho desenhou 0 de 360 batidas e devolveu uma coluna mais alta de 0,0000 para um áudio que bate em escala cheia repetidamente. Num trecho de fala real de 20 segundos ele reportou o pico entre 0,1886 e 0,2387 dependendo só da largura da imagem, contra um pico real de 0,2964. Nada disso é questão de gosto.

Por que alguém leria uma amostra por coluna?

Porque é de graça e parece certo. Reduzir 7.938.000 amostras direito levou 4,70 ms num navegador; o atalho levou 0,00 ms. E o resultado continua parecendo uma forma de onda, então nada reclama — não há erro nem nada óbvio com o que comparar.

Isso também afeta arquivos curtos?

Bem menos. O estrago cresce com quantas amostras uma coluna precisa representar. Um arquivo de 10 segundos a 800 px são 551 amostras por coluna e um de 10 minutos são 33.075. Trechos curtos desenhados largos são o caso mais seguro; arquivos longos desenhados estreitos são o pior.

E se eu tirar a média da coluna?

A média das amostras com sinal é pior que as duas — uma onda simétrica tem média perto de zero, então áudio alto desenha como linha reta por outro motivo. A média dos valores absolutos ou o RMS são defensáveis, mas ambos são mais baixos que o pico por construção: o RMS de uma senoide é 0,7071 contra um pico de 1,0000.

Ler todas as amostras deixa a página lenta?

Não. 4,70 ms para uma faixa de três minutos é imperceptível, e acontece a cada redesenho, não continuamente. O custo dominante no navegador é decodificar o arquivo comprimido em amostras, o que toda abordagem precisa fazer de qualquer jeito.

Onde eu testo a comparação com o meu próprio áudio?

O gerador de imagem de forma de onda desenha o seu arquivo das duas maneiras na mesma página e reporta o pico real, o pico que o atalho achou, quantas colunas cada método mostra acima da metade do pico real e quanto mais baixo fica o desenho do atalho. Nada é enviado — a decodificação e o desenho acontecem no seu navegador.