segunda-feira, 11 de agosto de 2008

3 Conceitos Principais - Data Format

Para trabalhar com a API Java Sound, é necessário conhecer 3 conceitos principais: Format, Mixer e Line.

Informações de áudio formatadas referem-se ao som em qualquer um dos formatos padrões. A API Java Sound diferencia formatos de informações (data formats) e formatos de arquivos (file formats).

Formatos de Informação (Data Formats)
Um formato de informação nos diz como interpretar uma seqüência de bytes de informações de áudio amostrados, a forma crua (raw) do som, ou seja, da maneira como as amostras foram lidas de um arquivo de som ou como as amostras foram capturadas por um microfone. É de extrema importância conhecer quantos bits compõem uma amostra (a representação do menor instante do som) e a taxa de amostragem (qual a freqüência com que tais amostras foram tomadas).

Na API Java Sound, um formato de informação é representado por uma instância da classe AudioFormat, que inclui os atributos seguintes:
  • Técnica de codificação (geralmente pulse code modulation - PCM)
  • Número de canais (1 para mono, 2 para estéreo, etc.)
  • Taxa de amostragem (número de amostras por segundo, por canal)
  • Número de bits por amostras (por canal)
  • Frame rate
  • Tamanho do frame em bytes
  • Ordem dos bytes (big-endian ou little-endian)
PCM é um tipo de codificação da forma de onda do som. A API Java Sound inclui 2 codificações PCM que usam a quantização linear de amplitudo e valores inteiros com sinal e sem sinal.
QUANTIZAÇÃO LINEAR significa que o número armazenado em cada amostra é diretamente proporcional (exceto por alguma distorção) à pressão original do som naquele instante - e proporcional ao deslocamento de um alto-falante com a vibração do som naquele instante.
Outras formas de codificação do som são Mu-law e a-law. São codificações não-lineares que provêem uma forma mais comprimida das informações de áudio (são tipicamente utilizadas na telefonia e gravações de voz). Por ser uma codificação não-linear, tais codificações podem dar maior resolução de amlitude em uma certa faixa de freqüência.

Um frame contém a informação de todos os canais em um instante particular. Para informações codificadas em PCM, um frame é o conjunto de amostras simultâneas em todos os canais para um dado instante no tempo, sem qualquer informação adicional. Neste caso, a frame rate (taxa de janela) é igual a taxa de amostragem, e o tamanho do frame em bytes é o número de canais multiplicados pelo tamanho da amostra em bits, dividido pelo número de bits em um byte.

Para outros tipos de codificação, um frame pode conter informações adicionais entre as amostras. Assim, a frame rate pode ser completamente diferente da taxa de amostragem. No MP3, cada frame contém um conjunto de informações comprimidas para uma série de amostras, não apenas uma amostra por canal. Pelo fato de cada frame encapsular um conjunto de amostras, a frame rate é menor que a taxa de amostragem. No MP3, cada frame contém um cabeçalho. Apesar do cabeçalho, o tamanho do frame em bytes é menor que o tamanho em bytes do número equivalente de frames PCM. (por isso o MP3 é mais compacto que o PCM)

Nenhum comentário: