SDL_mixer.h

Función Mix_SetPosition

Sintaxis

int Mix_SetPosition(int channel, Sint16 angle, Uint8 distance);

Descripción

Establece la posición de un canal.

Parámetros

channel
El canal del mezclador a posicionar, o MIX_CHANNEL_POST.
angle
Ángulo, en grados. El Norte es 0, y va en el sentido de las agujas del reloj.
distance
Distancia; 0 es el oyente, 255 es la distancia máxima.

Valor de retorno

Devuelve cero si hay error (no hay tal canal o Mix_RegisterEffect() falla), distinto de cero si el efecto de posición está habilitado. Los mensajes de error se pueden recuperar desde Mix_GetError().

Observaciones

anglees un número entero de 0 a 360, que especifica la ubicación del sonido en relación con el oyente. El valor del ángulo se reducirá según sea necesario (540 se convierte en 180 grados, -100 se convierte en 260). El ángulo 0 está orientado al norte, y gira en el sentido de las agujas del reloj a medida que aumenta el valor. Por eficiencia, la precisión de este efecto puede ser limitada (los ángulos del 1 al 7 pueden producir todos el mismo efecto, del 8 al 15 son iguales, etc.). distancia es un número entero entre 0 y 255 que especifica el espacio entre el sonido y el oyente. Cuanto mayor sea el número, más lejos estará el sonido. El uso de 255 no garantiza que el canal se elimine del proceso de mezcla o que sea completamente silencioso. Por eficiencia, la precisión de este efecto puede ser limitada (la distancia de 0 a 5 puede producir todas el mismo efecto, de 6 a 10 son iguales, etc). Ajustar el ángulo y la distancia a 0 anula el registro de este efecto, ya que los datos no se modificarían.

Si se necesita audio posicional más preciso, considerar el uso de OpenAL para efectos espacializados en lugar de SDL_mixer. Esto sólo pretende ser un efecto básico para juegos "3D" sencillos.

Si el dispositivo de audio está configurado para salida mono, no obtendrá ninguna eficacia del ángulo; sin embargo, seguirá produciéndose la atenuación de la distancia en el canal. Aunque este efecto funcionará con voces estéreo, tiene más sentido utilizar voces con un solo canal de sonido, de forma que cuando se mezclen a través de este efecto, el posicionamiento suene correctamente. Si se desea, puede convertirse a mono a través de SDL antes de pasarlas al mezclador.

Establecer el canal a MIX_CHANNEL_POST lo registra como un efecto posterior, y el posicionamiento se realizará en el flujo final mezclado antes de pasarlo al dispositivo de audio.

Esta es una envoltura de conveniencia sobre Mix_SetDistance">Mix_SetDistance() y Mix_SetPanning">Mix_SetPanning().

Hay que tener en cuenta que a diferencia de la mayoría de las funciones SDL y SDL_mixer, esta función devuelve cero si hay un error, no en caso de éxito.