Un artículo que describe exactamente este incluyendo una demostración se puede encontrar here.
Para evitar enlace roto Voy a citar las partes más relevantes a continuación
Por suerte, la API de Web Audio viene con una función de aceleración por hardware características de audio posicional que son bastante sencillo de usar.
La idea central se demuestra en el siguiente código:
PositionSample.prototype.changePosition = function(position) {
// Position coordinates are in normalized canvas coordinates
// with -0.5 < x, y < 0.5
if (position) {
if (!this.isPlaying) {
this.play();
}
var mul = 2;
var x = position.x/this.size.width;
var y = -position.y/this.size.height;
this.panner.setPosition(x * mul, y * mul, -0.5);
} else {
this.stop();
}
};
El código fuente completo de la versión parcial de programa de trabajo en el primer link anterior se puede encontrar here.
Offtopic: consideré volver a escribir el artículo citado por la mano como una respuesta personalizada aquí, pero que parecía relativamente inútil como el artículo ya es más que suficiente clara y hacer doble trabajo parece inútil
Compatibilidad, solo una combinación de flash y el código mencionado anteriormente ofrece una verdadera solución de posicionamiento/panoramización de audio entre navegadores (ya que el flash no está disponible en ciertos dispositivos móviles). Lo ideal sería desaconsejar el uso de la API de audio si se puede eludir, ya que no es poco probable que las cosas cambien en la especificación, posiblemente rompiendo el código (+ no es poco probable que esto no funcione de cualquier manera en los dispositivos móviles). El único escenario donde usar las aplicaciones de audio web más avanzadas tiene sentido es si esperas trabajar al menos otros 6 a 18 meses en tu juego (ya que es el tiempo probable que tomará para que las implementaciones se estabilicen en un punto utilizable) .
¿Un juego de '
Lea esto: [Web Audio API] (http://www.w3.org/TR/webaudio/) –
@ ŠimeVidas, de hecho. – corazza