1 / 19

Java Sound (S ampled )

Java Sound (S ampled ). Computação Musical e Processamento de Som – 06.1. Márcio Dahia (mlmd@cin.ufpe.br) e Ernesto Trajano (etl@cin.ufpe.br). Roteiro. Teoria O que é? Java Sound Engine Arquitetura Principais conceitos Classes importantes Exemplos e Exercícios

johana
Download Presentation

Java Sound (S ampled )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Sound (Sampled ) Computação Musical e Processamento de Som – 06.1 Márcio Dahia (mlmd@cin.ufpe.br) e Ernesto Trajano (etl@cin.ufpe.br)

  2. Roteiro • Teoria • O que é? • Java Sound Engine • Arquitetura • Principais conceitos • Classes importantes • Exemplos e Exercícios • Listando os recursos disponíveis • “Tocando” um arquivo • Criando uma onda • “Construindo” um filtro passa-baixa

  3. O que é? (1/3) • API Java para manipular sons (áudio e MIDI): • Disponível a partir do jdk1.3 • 2 pacotes • javax.sound.sampled: captura, mixagem e reprodução de áudio digital • javax.sound.midi: síntese, sequenciamento, transporte de eventos • Service provider interface: implementação de serviços adicionais (plug-ins) • javax.sound.sampled.spi: mp3, conversão de formatos, etc. • javax.sound.midi.spi: sintetizadores, soundbank, etc

  4. O que é? (2/3) • Nível mais baixo em Java • Outras APIs consideradas alto-nível (Java Media Framework) • Execução, controle e sincronização de múltiplas mídias (time-based media--vídeo, sons) • Foco no transporte de dados: • como mover bytes de dados formatados (áudio) para/de uma aplicação • Acesso aos dispositivos de áudio do PC

  5. O que é? (3/3) • Adaptado do Beatnik Audio Engine • formato: aiff, au e wav • canais: mono ou estéreo • taxa de amostragem: 8 a 48 kHz • resolução: 8 ou 16 bits • codificação: linear, a-law ou µ-law • mixer de 64 canais de áudio digital ou midi em software

  6. Sampled audio (Áudio digital) • Captura de áudio • dispositivos de entrada (microfones) • Mixagem e reprodução • Controle • ajuste de volume, reverberação, etc. • Conversores de formato • Status e notificações • recebimento de eventos relacionados à reprodução

  7. Arquitetura

  8. Principais conceitos • Transporte de dados! • Entrada/Aplicação, Aplicação/Saída • Para executar/capturar um som é necessário, no mínimo • Dado formatado • Um mixer (aplicação) • Um line (meio de transporte) • Manipulação do áudio digital com ou sem buffers

  9. Dados Formatados • Distinção entre formato de dados e formato de arquivo • AudioFormat • Técnica da codificação (normalmente PCM) • Número de canais (1-mono, 2-estéreo ...) • Taxa de amostragem • Resolução da amostragem • Taxa de Frames • Tamanho do Frame • AudioFileFormat • Tipo do arquivo (WAVE, AIFF ...) • Tamanho do arquivo em bytes • Tamanho, em frames, dos dados contidos no arquivo • Objeto AudioFormat

  10. Mixer • Encapsula diversos dispositivos que manipulam áudio • Placa de som, etc. • Abstração de uma mesa de mixagem • Possui • uma ou mais entradas de áudio • uma ou mais saídas de áudio • Controles de volume, reverberação e panorama de conjuntos de entradas • Métodos de sincronização das entradas

  11. Line(1/3) • Representa um caminho por onde o som flui • Tipos • Clip • Entrada de áudio sem streaming • SourceDataLine • Entrada de áudio com streaming • Port • Entrada ou saída de dispositivo (microfone, alto-falante etc.) • TargetDataLine • Saída de áudio com streaming • Mixer

  12. Line(2/3) • Funcionalidades • Controles (controls) • volume, panorama, reverb etc. • Status “aberto” e “fechado” • Aberto, aloca recursos exclusivamente • Fechado, libera • Eventos • Envia os eventos para os listeners cadastrados • Subinterfaces introduzem mais eventos

  13. Line(3/3)

  14. DataLine • Acrescenta à Line: • AudioFormat associado • Posição atual da mídia • Tamanho do buffer interno • Level (a amplificação atual do sinal) • Start, stop • Flush (descartar dados não processados) • Drain (consume os dados do buffer)

  15. AudioSystem • Agrupa métodos estáticos para alocar os principais recursos do sistema • Mixers, Lines, AudioInputStreams, conversores de formato etc. • Geralmente, a requisição do recurso é feita através da inner classInfo do mesmo recurso • static Mixer getMixer(Mixer.Info info) • static Line getLine(Line.Info info)

  16. AudioInputStream • InputStream acrescido de AudioFormat • Formato de áudio • Tamanho do segmento de dados (em frames) • Posicão atual (em frames) • Tamanho do frame (em bytes) • Pode-se obtê-lo a partir de • TargetDataLine • InputStream+ formato de audio + tamanho do segmento de dados • a partir de um nome de arquivo (através da classe AudioSystem)

  17. Controles • Afetam o sinal durante a passagem por um Line • Panorama, reverb etc. • Inner class <nome-controle>.Type • BooleanControl • Podem ter apenas dois valores (ligado/desligado) • Ex. Mute, Apply reverb etc. • FloatControl • Valores variam em um intervalo • Ex. panorama • EnumControl • Valores são objetos, apenas um pode ser escolhido • Ex. reverb (ReverbType) • CompoundControl • Coleção de Controls • Ex. um equalizador pode ser um conjunto de FloatControls

  18. Exemplos • Exemplo 1 - Listando os recursos disponíveis • Exemplo 2 - Tocando um arquivo de áudio • Tarefa 2 • Alterar algum controle (Control) do clip • Atenção: A mudança no controle de um Line só funciona caso ele esteja aberto • Exemplo 3 - Criando uma onda sonora • Tarefa 3 • Salvar a onda em arquivo • Não existe AudioOutputStream • O AudioSystem é responsável pela alocação de recursos

  19. Documentação • Java Media • http://java.sun.com/products/java-media/sound/ • API • http://java.sun.com/products/java-media/sound/doc-sampled.html • Guia do Programador • http://java.sun.com/j2se/1.4.1/docs/guide/sound/programmer_guide/contents.html • Java Sound Resources • http://www.jsresources.org

More Related