"Enxergando o som"

Como gravar sons com o computador, converter um arquivo de áudio em um arquivo de dados e visualiza-los num gráfico.

Gravamos a mesma nota DÓ (C4) tocada num piano e num violão com o computador, usando o Sound eXchange (SoX, um utilitário de edição de áudio para a linha de comando). Um software usado para gravar áudio não consegue apreender uma onda sonora (a resultante da interferência de todo o som que chega ao microfone) como um contínuo, mas apenas registrar uma série de amostras da sua intensidade durante um tempo especificado. Se o intervalo de tempo entre cada amostra for suficientemente pequeno (ou seja, se tivermos amostras suficientes), quando ouvirmos o áudio gravado, nossos cérebros perceberão a saída dos alto-falantes como um som contínuo. O número de amostras registradas em um segundo é chamado de "taxa de amostragem"" (sample rate).

Para fazer isso com o SoX, usamos um comando do tipo:

rec -b 32 -r 14400 output.wav  gain +10 0:5 0:10

em que -b 32 especifica que cada amostra ocupará 32 bitsw e -r 14400 determina nossa taxa de amostragem (nesse caso, 1440 amostras são registradas a cada segundo). Em seguida especificamos o nome do arquivo de saída (um arquivo de áudio wav). O efeito gain nos ajuda a descartar parte do ruído de fundo e gravar apenas o som em que estamos interessados. 0:5 0:10 são parâmetros que dizem ao programa para esperar 5 segundos após o comando e então gravar por 10 segundos.

Então usamos o SoX para converter os arquivos de áudio em arquivos de dados (texto), com o comando:

sox input.wav output.dat

Os dados armazenados por um arquivo de áudio se parecem com o seguinte:

     
1             0              3.1441450119e-05 3.1441450119e-05
2             6.9444444e-05  0.00026756292209 0.00026756292209
3             0.00013888889  0.00027450686321 0.00027450686321

(...)

143998        9.9997917  -0.0026411213912 -0.0026411213912
143999        9.9998611  -0.0041413721628 -0.0041413721628
144000        9.9999306  -0.0056763314642 -0.0056763314642

À parte do índice da linha, essa é uma tabela em que a primeira coluna mostra o tempo e a segunda e a terceira colunas mostram a intensidade do sinal naquele momento, nos canais direito e esquerdo (porque a gravação é estereofónica). Como usamos uma taxa de amostragem de 14400 e gravamos por 10 segundos, nosso arquivo de dados tem 144000 linhas - ou pares de tempo/amplitude.

Quando fazemos um gráfico com esses

When we plot this data, its sinusoidal behaviour becomes evident. We used GNUPLOT to fit the sum of three sinusoidal functions to the recorded data. In other words, we found mathematical models that best describe the sound waves we recorded.