Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuca Benevides Machado Alterado mais de 8 anos atrás
1
Pedro Leite pjsl@cin.ufpe.br
2
Agenda Introdução Buffers Listener Sources Modelos de Distância Demo Conclusão Referências
3
Introdução OpenAL é uma API multiplataforma para áudio 3D Objetivo de situar fontes de áudio (sources) num espaço tridimensional, em volta de um ouvinte (listener) Código fonte aberto Desenvolvida em C Utiliza a notação de OpenGL para descrever comandos e argumentos glBegin, glEnd, glIsEnable, etc. alBuffer, alSource, alListener, etc.
4
Introdução Creative Labs suporta OpenAL em seu hardware Engines que utilizam Doom 3 Jedi Knight e Jedi Knight 2 Jedi Academy Quake 4 Prey
5
Introdução Possui tipos primitivos bem definidos ALboolean, ALchar, ALbyte, etc. Detecta algumas condições que podem levar a erros alGetError Implementa efeito Doppler Sources, listener e o próprio som possuem uma velocidade associada alDopplerFactor Diferentes modelos de distância AL_LINEAR_DISTANCE AL_INVERSE_DISTANCE AL_EXPONENCIAL_DISTANCE
6
Introdução OpenAL fornece uma máquina de estados simples alGetBooleanv, alGetIntegerv, alGetFloatv, alGetDoublev alGetBoolean, alGetInteger, alGetFloat, alGetDouble Tempo e freqüência Métrica padrão definida em segundos e Hertz Espaço e distância Nenhuma métrica definida A critério do desenvolvedor Assim como OpenGL, OpenAL fornece um mecanismo para extensões Cada vendendor pode prover extensões diferentes em suas placas de som
7
Introdução
8
Buffers Encapsula os dados do áudio Buffers em OpenAL possuem dados de áudio no formato PCM Utiliza o byte order nativo do processador Big endian Little endian Podem ser compartilhados em vários contextos Podem ser referenciados por vários sources
9
Buffers - Propriedades Freqüência Samples por segundo (Hertz) AL_FREQUENCY Tamanho Quantidade de bytes AL_SIZE Bits Quantidade de bits por sample AL_BITS Canais Quantidade de canais para os dados contidos no buffer AL_CHANNELS
10
Buffers - Criação Podem ser criados e deletados dinamicamente void alGenBuffers(ALsizei n, ALuint* buffers) void alDeleteBuffers(ALsizei n,const ALuint* buffers); São referenciados pelo nome gerado na função alGenBuffers Formatos incluem Mono e Stereo com 8 ou 16 bits AL_FORMAT_MONO8 AL_FORMAT_MONO16 AL_FORMAT_STEREO8 AL_FORMAT_STEREO16
11
Buffers - Estados UNUSED Não está incluído em nenhuma fila para nenhum source O nome do buffer pode ser deletado neste estado PROCESSED Está na fila de pelo menos algum source O áudio já foi consumido PENDING Está na fila de pelo menos algum source O áudio ainda não foi totalmente consumido
12
Listener Entidade estática que percebe o som OpenAL define somente um listener por contexto Não possui nome
13
Listener - Propriedades Posição alListenerfv(AL_POSITION, listener_position); Velocidade Não atualiza a posição do listener com o tempo alListenerfv(AL_VELOCITY, listener_velocity); Ganho Define um multiplicador de amplitude escalar alListenerf(AL_GAIN, listener_gain); alListenerf(AL_MIN_GAIN, listener_min_gain); alListenerf(AL_MAX_GAIN, listener_max_gain); Orientação Dois vetores: direção (“at”) e normal (“up”) alListenerfv(AL_ORIENTATION, listener_orientation);
14
Sources Fontes sonoras OpenAL permite a criação de vários sources Possuem um buffer de dados associado Som a ser emitido pelo source Definem um som localizado e um conjunto de atributos a serem aplicados ao som, em sua origem Primeiro estágio de processamento no caminho ao listener
15
Sources - Propriedades Posição alSourcefv(AL_POSITION, source_position); Velocidade Não atualiza a posição do listener com o tempo alSourcefv(AL_VELOCITY, source_velocity); Ganho Define um multiplicador de amplitude escalar alSourcef(AL_GAIN, source_gain); alSourcef(AL_MIN_GAIN, source_min_gain); alSourcef(AL_MAX_GAIN, source_max_gain); Pitch Porcentagem da freqüência do áudio a ser utilizada alSourcef(AL_PITCH, source_pitch);
16
Sources - Propriedades Posicionamento Em relação ao listener ou global alSourcei(AL_SOURCE_RELATIVE, source_relative); Tipo Tipo da fonte pode ser estática, streaming ou indeterminada Looping Indica se o source deve estar ou não em loop alSourcei(AL_LOOPING, source_loop);
17
Sources - Propriedades Cone Define ângulo interno, externo e o ganho do externo alSourcef(AL_CONE_INNER_ANGLE, angle); alSourcef(AL_CONE_OUTER_ANGLE, angle); alSourcef(AL_CONE_OUTER_GAIN, value);
18
Sources - Criação Podem ser criados sob demanda da aplicação void alGenSources(ALsizei n, ALuint* buffers) void alDeleteSources(ALsizei n,const ALuint* buffers); Dados podem ser atribuídos a um source estaticamente alSourcei(source_id, AL_BUFFER, buffer_name) Sources podem ser do tipo streaming alSourceQueueBuffer alSourceUnqueueBuffer
19
Sources - Estados AL_INITIAL Quando o source é criado ou quando a função alSourceRewind foi devidamente chamada Próximos estados: AL_PLAYING AL_PLAYING O source está tocando o conteúdo do buffer associado a ele (estaticamente ou por streaming) através da função alSourcePlay Próximos estados: AL_PAUSED, AL_INITIAL, AL_STOPPED AL_PAUSED O source foi pausado através da função alSourcePause Próximos estados: AL_INITIAL, AL_STOPPED, AL_PLAYING AL_STOPPED O source foi parado através da função alSourceStop Próximos estados: AL_INITIAL
20
Modelos de Distância OpenAL possui diferentes modelos de distância Ganho de cada source é atenuado pela distância Definido pelo bit AL_DISTANCE_MODEL Bits AL_REFERENCE_DISTANCE e AL_ROLLOFF_FACTOR influem diretamente no modelo escolhido AL_REFERENCE_DISTANCE é a distância máxima do source no qual o listener possui ganho
21
Modelos de Distância AL_NONE Nenhum modelo associado AL_INVERSE_DISTANCE Ganho inversamente proporcional à distância AL_INVERSE_DISTANCE_CLAMPED Não permite ganho maior que 1 a
22
Modelos de Distância
23
AL_LINEAR_DISTANCE Ganho calculado através de uma função linear AL_LINEAR_DISTANCE_CLAMPED Não permite ganho maior que 1 a
24
Modelos de Distância
25
AL_EXPONENCIAL_DISTANCE ganho calculado através de uma função exponencial AL_EXPONENCIAL_DISTANCE_CLAMPED Não permite ganho maior que 1
26
Modelos de Distância
27
Static Source, Looping & Fadeaway, Multiple Sources, Sharing Buffers, Streaming
28
Conclusão Pontos fortes Multiplataforma Código fonte aberto Grandes empresas e projetos utilizando Fácil utilização no desenvolvimento Pontos fracos Versão no Linux ainda está na 0.0.8 Somente uma empresa fornece aceleração em hardware
29
Referências OpenAL 1.1 Specification http://www.openal.org/documentation.html Creative Labs http://developer.creative.com/ Wikipedia http://en.wikipedia.org/wiki/OpenAL
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.