Foros - Stratos

Programadores => Programación de audio => Mensaje iniciado por: misscelan en 22 de Diciembre de 2007, 02:12:41 PM

Título: Dudas con OpenAL
Publicado por: misscelan en 22 de Diciembre de 2007, 02:12:41 PM
Buenas,

¿Sabéis si se puede definir áreas de sonido en OpenAL?.

Me explico, Por ejemplo, un lago enorme y quiero que se oiga el agua más o menos igual en todos los puntos dentro del lago o un terreno dónde llueve y me gustaría que se oyese más o menos igual en todos los puntos donde caen las gotas.

Siempre digo más o menos porque por ejemplo la forma del lago podría ser muy compleja como para definirla, me bastaría con que se puedise definir un radio respecto a un punto o un cubo.

¿Alguien sabe algo de esto?

Muchas gracias y un saludo.
Título: Dudas con OpenAL
Publicado por: Pogacha en 22 de Diciembre de 2007, 03:34:21 PM
Me imagino que tendras que programarlo:


float radio= Get_Distancia_Al_Lago();
float volumen;
static bool pausado = true;

if( radio < 100.0f) {
  volumen = MAXIMO_VOLUMEN;
} else if (radio<150.0f) {
  volumen = (MAXIMO_VOLUMEN - MINIMO_VOLUMEN) * (radio-100.0)/50.0f;
} else volumen = MINIMO_VOLUMEN;

if(volumen == MINIMO_VOLUMEN && !pausado)
{
  SonidoDeGotas->Pausar();
  pausado = true;
}

if(volumen != MINIMO_VOLUMEN && pausado)
{
  SonidoDeGotas->Continuar();
  pausado = false;
}

if(!pausado) SonidoDeGotas->Set_Volumen( volumen );
Título: Dudas con OpenAL
Publicado por: misscelan en 22 de Diciembre de 2007, 04:38:08 PM
Gracias pogacha. Soy un tío muy vago y esperaba que OpenAL estuviese más preparado, pero si no hay más remedio...

Un saludo.
Título: Dudas con OpenAL
Publicado por: Pogacha en 22 de Diciembre de 2007, 05:32:17 PM
Me corrijo, lo que tu pides se puede hacer perfectamente, lo que tienes que hacer es modificar la funcion de atenuación. Aca tenes las bases:

http://www.openal.org/oalspecs-specs/attenuation-by-distance.html#AEN454
http://www.openal.org/oalspecs-specs/object-sources.html

Pero ten en cuenta que deberas pasarle la posición del escuchador y la dirección del mismo, asi como tambien primero definir la posición y radio del lago y su función de atenuación (deberas usar la clamped)

Obviamente esto te valdrá para una esfera, pero para nada mas.

Saludos
Título: Dudas con OpenAL
Publicado por: fjfnaranjo en 24 de Diciembre de 2007, 04:32:28 PM
Cita de: "misscelan"esperaba que OpenAL estuviese más preparado,

No es objetivo de OpenAL cumplir esa tarea, sería como pedirle a OpenGL que tuviese una función para modelar un Torus. OpenAL es una librería de bajo nivel para que tu programes tu motor de sonido encima, aun así, es muy potente y tiene cosas muy buenas implementadas (efecto doppler, cosas así)...