【问题标题】:How to understand the relationships between "distance" methods of the Web Audio API panner node如何理解 Web Audio API panner 节点的“距离”方法之间的关系
【发布时间】: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 例子。一个使用平移节点,一个不使用。打开它们并在耳机中收听时并排播放文件,差异很小但很明显。

JSfiddle with panner node

JSfiddle without panner node

【问题讨论】:

    标签: javascript html5-audio web-audio-api


    【解决方案1】:

    例如,0 是近,200 是远。这是什么价值?

    我认为这些数字是任意单位。 distanceModel 部分给出了根据源和听者之间的距离计算增益变化的公式。

    规范还提到“PannerNode 通过 distanceGain 缩放/乘以输入音频信号”

    如需回答您的问题:

    第一季度。 - 您应该对监听器 z 坐标进行编程,还是应该对声像器 z 坐标进行编程

    这真的取决于您的应用程序。 API 设计为每个AudioContext 有一个Listener。但是您可以创建多个 AudioSource,每个 AudioSource 都附加一个 PannerNode。您可以将其设想为一组可以放置在 3D 空间中的扬声器(AudioSources),但您自己(Listener)也可以四处移动。在这种情况下,取决于您是否希望源相对于彼此移动,您可能希望也可能不希望听者移动。

    第二季度。 - 听起来不同(更沉闷和“密集”)

    我不确定。我以前没有遇到过这种情况。你能举个例子/演示吗?

    基于trying the various panning models,似乎静音音频是使用HRTF 平移模型的结果。 HRTF 脉冲响应绝对没有平坦的频率响应,并且会为音频着色。您可以改用equalpower 平移模型。

    请注意,尽管在即将到来的 WebAudio 更改中很多这些事情都会发生变化。你可以在这里阅读更多关于它的信息https://github.com/WebAudio/web-audio-api/issues/372

    【讨论】:

    • 我用两个 JSfiddles 编辑了我的帖子,以比较使用和不使用平移节点的相同声音
    • @TaoistWA 我认为链接是错误的。您提到的 Panner 节点似乎带有过滤器
    • 我对您的 JSFiddle 进行了正确的更改。 jsfiddle.net/notthetup/X38pk/15
    • 添加了不同的平移模型。 jsfiddle.net/notthetup/X38pk/16
    • 我修改了它,我不得不提醒自己mediaElementSource方法并且正在查看另一个JsFiddle....我不小心复制了错误的一个
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多