Javascript中的空间(2D)声音

对于我的游戏的需要,我需要有2D声音.这意味着,发射器应该位于2D平面上的某处.如何在Javascript中实现这一效果?我需要使用特殊的声音格式,还是可以控制扬声器的音量?

我想我可以得到每个演讲者有2卷的点,但是我无法理解如何在Javascript中应用不同音量的相同声音.

一个描述这个包括演示的文章可以在here中找到.

为了防止链接腐烂,我将引用下面最相关的部分

Luckily, Web Audio API comes with built-in hardware accelerated positional audio features that are quite straight forward to use.

核心思想是在下面的代码中得到体现:

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();
  }
};

上述第一个链接的工作演示的完整源代码可以在here找到.

Offtopic:我认为在这里用手工替换引用的文章,但这似乎是没有意义的,因为文章已经不够清楚了,做双重工作似乎毫无意义

兼容性方面,只有Flash和前面提到的代码的组合才能提供真正的跨浏览器定位/平移音频解决方案(因为某些移动设备上的闪存不可用).理想情况下,如果可以避免使用音频API,建议不要使用音频API,因为规范中的内容不会改变,因此可能会破坏您的代码(这不可能在移动设备上无法使用).使用更先进的网络音频api的唯一场景是有意义的是,如果您期待在游戏中至少工作6至18个月(因为这可能是实施甚至可以稳定到可用点的时间) .

翻译自:https://stackoverflow.com/questions/11177791/spatial-2d-sound-in-javascript

转载注明原文:Javascript中的空间(2D)声音