Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 27-07-2006
dicatek dicatek is offline
Miembro
 
Registrado: jun 2006
Posts: 46
Poder: 0
dicatek Va por buen camino
Lección1 Un sonido en una posición

LECCIÓN1
En este primer tutorial aprenderás a reproducir un único archivo de sonido usando OpenAL.
Primero ejecutamos Delphi e iniciamos una nueva aplicación (new aplication). A continuación, añadimos openal a la claúsula uses.

En la sección var, añadimos los siguientes valores:
Código Delphi [-]
buffer : TALuint;
source : TALuint;
sourcepos: array [0..2] of TALfloat= ( 0.0, 0.0, 0.0 );
sourcevel: array [0..2] of TALfloat= ( 0.0, 0.0, 0.0 );
listenerpos: array [0..2] of TALfloat= ( 0.0, 0.0, 0.0);
listenervel: array [0..2] of TALfloat= ( 0.0, 0.0, 0.0);
listenerori: array [0..5] of TALfloat= ( 0.0, 0.0, -1.0, 0.0, 1.0, 0.0);
La variable buffer será utilizada para almacenar el sonido que vamos a reproducir. Las variables source(...) serán utilizadas para describir dónde y cómo será reproducido el sonido. Las variables listener(...) se usarán para describir dónde será oído el archivo en el espacio (3D). Ahora dejaremos el sonido, al centro del espacio (3D).

Antes que OpenAL sea activo para reproducir un sonido, es necesario, iniciarlo. Por lo tanto, el siguiente código debe de añadirse en los forms de tu aplicación en el evento oncreate.
Código Delphi [-]
var
argv: array of PalByte;
format: TALEnum;
size: TALSizei;
freq: TALSizei;
loop: TALInt;
data: TALVoid;
Primero debes inicializar la libreria OpenAL en tus forms en el evento oncreate.
Código Delphi [-]
InitOpenAL;
Después en el evento de los forms oncreate, debes inicializarlo como esto. Automáticamente escoge el mejor hardware de tu ordenador.
Código Delphi [-]
AlutInit(nil,argv);
A continuación, debes crear un buffer para almacenar el archivo de sonido .wav. Una vez el archivo .wav es cargado en el buffer, también se puede descargar para liberar memoria.
Código Delphi [-]
AlGenBuffers(1, @buffer);
AlutLoadWavFile(’ding.wav’, format, data, size, freq, loop);
AlBufferData(buffer, format, data, size, freq);
AlutUnloadWav(format, data, size, freq);
Si tu quieres sentir el sonido, tienes que decir dónde se encuentra del espacio (3D), cuál es su volumen, si tiene bucle...
Código Delphi [-]
AlGenSources(1, @source);
AlSourcei ( source, AL_BUFFER, buffer);
AlSourcef ( source, AL_PITCH, 1.0 );
AlSourcef ( source, AL_GAIN, 1.0 );
AlSourcefv ( source, AL_POSITION, @sourcepos);
AlSourcefv ( source, AL_VELOCITY, @sourcevel);
AlSourcei ( source, AL_LOOPING, loop);
Donde AL_PITCH puede hacer el sonido más agudo.
Con AL_GAIN puedes especificar que volumen tendrá el sonido reproducido.
El paso siguiente es especificar cuando se oirá el sonido. Esto puede hacerse cuando la camara lo localice o cuando el objeto represente al jugador.
Código Delphi [-]
AlListenerfv ( AL_POSITION, @listenerpos);
AlListenerfv ( AL_VELOCITY, @listenervel);
AlListenerfv ( AL_ORIENTATION, @listenerori);
En este momento, tu aplicación está a punto para empezar a reproducir algunos sonidos.
Añade al form de tu aplicación, un botón llamado Reproducir, y añade el siguiente código al evento onclick:
Código Delphi [-]
AlSourcePlay(source);
Repita dos veces el procedimiento anterior con dos botones llamados Detener y pausar y con su código respectivo, al evento onclick:
AlSourceStop(source); Para detener.
AlSourcePause(source); Para pausar.

Finalmente, antes de cerrar la aplicación y con el propósito de liberar memoria puedes meter el siguiente código al evento destroy, de tus forms:
Código Delphi [-]
AlDeleteBuffers(1, @buffer);
AlDeleteSources(1, @source);
AlutExit();
Ahora ya estas preparado para ejecutar tu primera aplicación OpenAL. Tan rápido como puedas, prueba tu programa pulsando en los botones: Reproducir, detener o pausar.
Si quieres reproducir tu sonido en bucle, basta con cambiar la siguiente línea de código.
De:
Código Delphi [-]
AlSourcei ( source, AL_LOOPING, loop );

A:
Código Delphi [-]
AlSourcei ( source, AL_LOOPING, AL_TRUE );
Prueba en cambiar los valores del pitch y la ganancia (GAIN) para comprobar qué ocurre. Prueba tambien de cambiar la posición (sourcepos) por otros valores.
Lección1

Escrito por Noeska.
Traducido por Gerard Turmo.
Corregido por ..............................

Última edición por dicatek fecha: 27-07-2006 a las 01:02:14.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que usais para programar en php? chux HTML, Javascript y otros 22 18-08-2006 16:38:31
programar para windows CE ronalg Varios 8 31-08-2005 09:06:13
Programar para APPLE eduarcol Varios 0 27-02-2005 20:59:56
Programación Orientada a Aspectos marcoszorrilla Debates 17 06-04-2004 23:18:27
Programar para PDA Novás Varios 2 02-12-2003 15:06:30


La franja horaria es GMT +2. Ahora son las 04:01:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi