【发布时间】:2014-12-26 00:51:46
【问题描述】:
我目前正在尝试理解并更好地理解以下方法之间的关系
listener.setPosition(x,y,z);
panner.setPosition(x,y,z);
从现在开始,我将描述我认为我知道的事情,并希望一些人会告诉我我哪里错了并纠正我。
现在,在最基本的情况下,我想象一个球体,这两个“位置”在中间占据相同的位置。在某种程度上,您可以将 panner.setPosition 和 listener.setPosition() 视为我们假设范围内的物理“事物”。
现在,当您更改一个坐标时,您会相对于另一个移动它。
因此,令人困惑的一点是。据我了解,这两种方法的坐标不是任何特定值,但是与 x 值不同,其中 1 和 -1 确定中间为 0 的范围,z 索引实际上似乎确实有一个值,因此,如果我给它一个正值,它确实会“将声音推得更远”(或更重要的是 - 衰减它)。例如,0 是近,200 是远。这是什么价值?
部分答案:
1 到 -1 很难右/左的原因是因为 z 设置为零,因此听者和由 panner 节点表示的“声源”之间有 0 空间。我仍然不清楚 z 索引是什么“价值”。
我的其他问题:
1.
如果您有一个假设的“世界”,其中一个虚构的人正在靠近或远离声源,您应该对听众的 z 坐标进行编程,还是应该对声像的 z 坐标进行编程。我问这个的原因是因为in this example 声像器被编程并且听者停留在同一个地方,但 UI 建议听者正在向声源移动。我想这个问题更多的是关于最佳实践,因为它似乎都行得通。
2. 当我通过默认的 panner 节点运行任何声音时,它实际上听起来不同(更沉闷和“密集”,几乎就像同一音频文件的两个实例同时播放或高音被抵消)。我认为既然是这种情况,程序员应该知道一些“设置”的顶点来解决这个问题。我很想知道那是什么。
如果你想要一个并排的例子,下面是两个 JSfiddle 例子。一个使用平移节点,一个不使用。打开它们并在耳机中收听时并排播放文件,差异很小但很明显。
【问题讨论】:
标签: javascript html5-audio web-audio-api