domingo, 10 de agosto de 2008

javax.sound.sampled

O foco do pacote javax.sound.sampled é o de playback e captura de informações de áudio. Para isso é necessário conhecer 3 conceitos fundamentais: formato de informação de áudio, line e mixer.

A tarefa principal da API Java Sound é saber como mover bytes de áudio formatados para dentro e para fora do sistema. Esta tarefa envolve a abertura dos dispositivos de entrada e saída e o gerenciamento de buffers que são preenchidos com as informações de áudio em tempo real. Também envolve a mistura de múltiplos streams de áudio em apenas um stream. O transporte de som para dentro e fora do sistema tem que ser corretamente manipulado pois é preciso contemplar as necessidades do usuário quando este solicita que o fluxo de som seja iniciado, parado, resumido ou interrompido.

Manipulação de áudio com e sem buffer
A API Java Sound manipula o transporte de áudio nas formas de streaming, com buffer e sem buffer. O termo "streaming" é usado de forma genérica para referenciar a manipulação de bytes de áudio em tempo-real. Não se refere ao envio de áudio pela Internet. Em outras palavras, um stream de áudio é um conjunto simples de bytes de áudio que chegam mais ou menos na mesma taxa de amostragem que serão manipulados.
As operações nos bytes começam antes de toda a informação chegar. No modelo de streaming, particularmente no caso de entrada, não é necessário conhecer antecipadamente o tamanho do som e quando ele irá terminar. Devemos manipular um buffer de informações por vez até que a operação seja suspendida. No caso de saída, devemos entregar os bytes de áudio para a engine de som e ela cuida de tocar cada amostra no momento correto.

Nenhum comentário: