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

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

Pedro Leite Agenda Introdução Buffers Listener Sources Modelos de Distância Demo Conclusão Referências.

Apresentações semelhantes


Apresentação em tema: "Pedro Leite Agenda Introdução Buffers Listener Sources Modelos de Distância Demo Conclusão Referências."— Transcrição da apresentação:

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


Carregar ppt "Pedro Leite Agenda Introdução Buffers Listener Sources Modelos de Distância Demo Conclusão Referências."

Apresentações semelhantes


Anúncios Google