domingo, 4 de setembro de 2011

Testando o Som com JavaSound

A API JavaSound é responsável pela execução de som no sistema operacional através de um dispositivo de som (placa de som) devidamente instalado. O JavaSound é uma API relativamente de baixo nível e não contém implementações de algoritmos sofisticados que ultrapassem a manipulação de sons em si, como um recurso automático para tocar arquivos de som comprimidos ou recursos para converter entre formatos de som com compressão de dados, filtragem de banda, análise de espectro, etc. Claro que tudo isso pode ser implementado e realizado usando o JavaSound, mas não vem pronto de cara.
O JavaSound possui basicamente duas formas de tratar os sons: via streams de áudio formatadas (chamada sampled) e via sinais MIDI. Cada qual possui seus próprios objetos e funcionalidades.


  • Testando o som com JavaSound

Para se testar o som, ou seja, para se verificar se o seu equipamento de som na máquina em que seu programa está rodando está realmente acessível ao Java, utilize estes comandos:

// Testando se é possível tocar MIDI
MidiSystem.getSequencer();

// Testando se é possível tocar áudio (wave)
AudioSystem.getMixer(null);

Note que foram testadas duas coisas: áudio e MIDI. Se tudo correr bem, estas linhas rodarão perfeitamente. Isto significa que seu sistema é capaz de prover ao menos um seqüenciador MIDI para receber sinais deste protocolo e ao menos um Mixer capaz de receber pelo menos uma entrada de áudio padrão. O argumento "null" na última linha significa que desejamos obter o Mixer padrão, e não Mixers específicos e alternativos, que podem ou não estar disponíveis, dependendo da placa de som.
Se a primeira linha falhar, você receberá um MidiUnavailableException. Caso a segunda falhe, você receberá um SecurityException, indicando que não é possível encontrar ou não se tem permissão de escrita para o dispositivo (isto pode acontecer, por exemplo, se já tiver algum outro processo escrevendo áudio para o Mixer padrão no momento em que você o testa).
Lembre-se de testar ambos os casos separadamente, para tratar cada problema de modo isolado.

Bom, espero ter ajudado. Qualquer coisa, COMENTEM!!

Nenhum comentário: