A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Computação Musical e Processamento de Som – 06.1

Apresentações semelhantes


Apresentação em tema: "Computação Musical e Processamento de Som – 06.1"— Transcrição da apresentação:

1 Computação Musical e Processamento de Som – 06.1
Java Sound (Sampled ) Computação Musical e Processamento de Som – 06.1 Márcio Dahia e Ernesto Trajano

2 Roteiro Teoria Exemplos e Exercícios 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): 2 pacotes
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: Posição atual da mídia
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 class Info do mesmo recurso static Mixer getMixer(Mixer.Info info) static Line getLine(Line.Info info)

16 AudioInputStream Pode-se obtê-lo a partir de
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 BooleanControl
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 API Guia do Programador Java Sound Resources
API Guia do Programador Java Sound Resources


Carregar ppt "Computação Musical e Processamento de Som – 06.1"

Apresentações semelhantes


Anúncios Google