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 amostras. Quase todo gerador de forma de onda escolhe uma delas e desenha a altura dessa amostra.
Isso olha 800 amostras de 7.938.000 — 0,0101 % do arquivo. Não é um resumo da coluna, é uma amostragem pontual dela, e amostrar um sinal muito abaixo da própria taxa é a definição de manual de aliasing. O resultado não é "um pouco menos preciso". É um retrato da relação entre a frequência do som e o passo dos pixels, o que não é uma propriedade da música.
Geramos um tom constante em escala cheia — amplitude 1,0 da primeira à última amostra, 180 segundos — e desenhamos com 800 px de largura. O desenho verdadeiro é um bloco sólido de altura 1,000. Veja o que uma amostra por coluna devolve conforme a frequência muda:
| Tom | Uma amostra por coluna | Todas as amostras (pico) |
|---|---|---|
| 100 Hz | 0,0036 | 1,0000 |
| 220 Hz | 0,0078 | 1,0000 |
| 261,63 Hz | 0,6361 | 1,0000 |
| 440 Hz | 0,0157 | 1,0000 |
| 441 Hz | 0,6352 | 1,0000 |
| 1000 Hz | 0,0356 | 1,0000 |
| 2000 Hz | 0,0710 | 1,0000 |
Áudio idêntico, respostas de 0,0036 a 0,6361. Com um hertz de diferença — 440 e 441 — o atalho desenha uma linha reta e depois uma onda com 64 % de altura. Ler todas as amostras devolve 1,0000 em todos os casos, porque é isso que está no arquivo.
Esta é a parte que entrega o problema. Pegue aquele mesmo arquivo de 440 Hz e redesenhe em larguras diferentes, sem mudar mais nada:
| Largura | Amostras por coluna | Uma amostra por coluna | Todas as amostras |
|---|---|---|---|
| 600 px | 13.230,0 | 0,0000 | 1,0000 |
| 700 px | 11.340,0 | 0,6259 | 1,0000 |
| 800 px | 9.922,5 | 0,0157 | 1,0000 |
| 1000 px | 7.938,0 | 0,6155 | 1,0000 |
| 1200 px | 6.615,0 | 0,0000 | 1,0000 |
| 1920 px | 4.134,4 | 0,5114 | 1,0000 |
Uma forma de onda que muda quando você muda a tela não está descrevendo o áudio. Se você já exportou uma onda em dois tamanhos e achou o segundo estranho, é por isso.
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 com 360 estouros em escala cheia, um a cada 500 ms, e desenhamos:
| Medição | Uma amostra por coluna | Todas as amostras (pico) |
|---|---|---|
| Colunas que mostram um estouro | 0 de 800 | 360 de 800 |
| Coluna mais alta | 0,0000 | 0,8973 |
| Amostra única em escala cheia achada (200 tentativas) | 0 / 200 | 200 / 200 |
| Estouro de 2 ms achado (200 tentativas) | 3 / 200 | 200 / 200 |
Uma faixa de bateria desenhada assim pode não mostrar bateria nenhuma. Não bateria mais fraca — nenhuma: cada um dos 360 estouros caiu entre as amostras observadas, e o desenho voltou como uma linha reta.
Ler todas as 7.938.000 amostras e reduzi-las 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, e ela compra um desenho que não é do seu áudio.
Esta ferramenta lê todas as amostras e guarda o mínimo e o máximo de cada coluna, que é o que sobrevive ao redimensionamento e o que pega um transiente. Você pode trocar para uma amostra por coluna no menu e ver o seu próprio arquivo perder os picos, e a segunda tela mostra essa comparação por padrão para você não ter que acreditar na nossa palavra.
O RMS também está disponível, e vale dizer que ele não é errado — é outra grandeza. O RMS de uma senoide é 0,7071 contra um pico de 1,0000, então uma onda em RMS é 29,29 % mais baixa do que uma onda em pico do mesmo áudio. Escolha uma e fique com ela; uma ferramenta que mistura as duas na mesma imagem é inconsistente consigo mesma.
O conjunto completo de medições, incluindo a varredura de frequências e as fórmulas fechadas, está escrito em Por que a sua imagem de forma de onda está sem a bateria.
A decodificação acontece no seu navegador, então a lista é a lista dele: MP3, WAV, FLAC, M4A, AAC, OGG e Opus decodificam. AIFF, WMA e APE não — eles dão erro de decodificação mesmo em arquivos perfeitamente válidos. Se você tem um desses, converta antes no conversor de áudio, que faz a conversão no servidor, e depois volte. A página diz qual dos dois problemas você teve, em vez de adivinhar.
Não. O arquivo é decodificado pelo seu navegador, reduzido a colunas na própria página e desenhado numa tela que você baixa. Ele nunca chega a um servidor, que é também por que a ferramenta continua funcionando com a aba offline depois que a página carregou.
Quase certamente porque a outra lê uma amostra por coluna de pixel e esta lê todas. Numa faixa de três minutos essa é a diferença entre olhar 0,01 % do áudio e olhar tudo. A segunda tela desta página desenha o seu arquivo das duas maneiras para você comparar diretamente.
Pico é a amostra mais forte da coluna; RMS é a energia média da coluna. As duas são respostas corretas para perguntas diferentes. O RMS de uma senoide é 0,7071 contra um pico de 1,0000, então uma onda em RMS é cerca de 29 % mais baixa. Pico é a escolha usual para uma imagem de forma de onda porque mostra transientes; o RMS fica mais suave e mais perto do volume percebido.
Dois motivos diferentes, e a página distingue os dois. AIFF, WMA e APE não são decodificáveis em nenhum navegador que testamos, mesmo quando o arquivo está perfeito — converta esses antes. Qualquer outra falha é arquivo danificado ou com extensão errada, e uma mensagem diferente diz isso.
Sim, marque Transparente e baixe o PNG. A exportação em SVG é transparente a menos que você deixe o fundo ligado. Transparente é o que você quer para colocar a onda sobre um vídeo ou sobre um cartão colorido.
PNG para qualquer coisa que vá para um vídeo ou um post. SVG se você vai imprimir ou ampliar — uma onda em SVG continua nítida em qualquer tamanho porque guarda as colunas como retângulos, e não como pixels. O SVG é construído a partir dos mesmos dados de coluna que o PNG, então os dois são o mesmo desenho.
O limite é a memória do seu navegador, não uma regra nossa — a decodificação segura o arquivo inteiro descomprimido, algo como 10 MB por minuto de estéreo a 44,1 kHz. Arquivos muito longos ficam melhores se você cortar antes com o cortador de áudio, que também deixa você desenhar exatamente o trecho que quer.
Não. Nada é gravado de volta no seu arquivo — normalizar só escala o desenho para que a coluna mais alta alcance o topo da imagem. Desligue para ver a onda no nível verdadeiro em relação ao topo do quadro, que é a visão honesta se você está comparando dois arquivos.