使用howler.js或其他库环绕3d音效?

时间:2019-07-19 12:27:07

标签: javascript audio 3d surround

我正在一个项目上,我需要添加3d声音效果,就像声音在听众效果周围不断移动一样。有可能通过howlerjs实现这一点,我看到使用howler能够从特定坐标/方向播放声音,但是如何实现环绕/歧义的声音? 还是JavaScript中的另一个库可以实现这一目标?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

迟到了半年,但是是的,在howler.js中完全有可能,我自己没有使用过它,但是从文档中判断,您可以更新职位。我发现有更多的库可以执行此操作,请在此处检查3dage如何完全满足您的要求: https://codepen.io/naugtur/pen/QgmvOB?editors=1010

  var world = IIIdage.World({
    tickInterval: 200
  })

  var annoyingFly = IIIdage.Thing({
    is: ['fly'],
    sounds: {
      'buzzing constantly': {
        sound: 'buzz',
        times: Infinity
      }
    },
    reacts: [
      {
        // to: world.random.veryOften(),
        to: world.time.once(),
        with: 'buzzing constantly'
      }
    ]
  })

// scene should create and expose a default world or accept one
  var scene = IIIdage.Scene({
    title: 'Annoying fly',
    library: {
      sounds: {
        'buzz': {
          src: ['https://webaudiogaming.github.io/3dage/fly.mp3']
        }
      }
    },
    world: world,
    things: [ // scene iterates all things and spawns them into the world. same can be done manually later on.
      annoyingFly({
        pos: [-1, -15, 0],
        dir: [1, 0, 0],
        v: 1
      })
    ]
  }).load().run()


  setTimeout(function () {
    scene.dev.trace(IIIdage.dev.preview.dom())
  }, 500)


  setInterval(function rotateVector() {
    var angleRad = 0.15
    var d=scene.things[0].attributes.dir
    var x=d[0], y=d[1]
    var cosAngle = Math.cos(angleRad), sinAngle = Math.sin(angleRad)

    scene.things[0].attributes.dir = [x * cosAngle - y * sinAngle,  y * cosAngle + x * sinAngle, 0]
  }, 500)

  window.scene = scene

还有一些其他类似的事情:

如果您仍然需要帮助,希望它可以将您推向正确的方向。