gpt4 book ai didi

javascript - webapi 3D 空间化 : how to apply distance delay

转载 作者:行者123 更新时间:2023-12-03 01:09:11 24 4
gpt4 key购买 nike

目标
我正在尝试建立一个带有空间化音频的网站。
测量
我正在使用 WebAudioAPI 的 PannerNode .
我的音频管道看起来像:audioTrack → PannerNode → audioContext.destination 预计
我认为 PannerNode 会尽一切努力创造 3D 音频体验。
问题
我觉得左右扬声器之间没有声音延迟。由于双耳彼此之间具有空间距离而发生的那种声音延迟。
问题

  • 我的感觉是不是错了,左右扬声器之间实际上有延迟? (也许我的设置是错误的/不是最优的。)
  • 有没有一种方便的方法来实现声音延迟或者我需要通过track -> PannerNode -> SplitAudioInChannels -> ApplySoundDelayPerChannel -> Output手动?

  • 代码
    我基本上使用 mozilla's tutorial here 中的代码.
    PannerNode 设置如下:
    var panner = new PannerNode(audioCtx, {
    panningModel: 'HRTF',
    distanceModel: 'linear',
    positionX: audioSource.x,
    positionY: audioSource.y,
    positionZ: 0,
    orientationX: 0.0,
    orientationY: 0.0,
    orientationZ: 0.0, // -1 = face out of the screen
    refDistance: 1,
    maxDistance: 400,
    rolloffFactor: 10,
    coneInnerAngle: 360, //60,
    coneOuterAngle: 360, //90,
    coneOuterGain: 0.3
    })

    最佳答案

    要听到空间化效果,您需要更改方向和/或位置。要查看您的 panner 是否在做某事,我会查看 Canopy从声像仪查看左右声道。调整位置和/或方向应显示左右 channel 之间存在延迟差异。
    这是在 Canopy 中使用的一个简短示例,以显示左右 channel 具有不同的延迟。将其粘贴到代码窗口中,然后按左侧的三 Angular 形进行渲染。您会在顶部看到波形,每个 channel 一个。如果放大,您会看到第一个 channel 与第二个 channel 不同时开始。

    // @channels 2
    // @duration 1.0
    // @sampleRate 44100

    let osc = new OscillatorNode(context, {type: "square");


    let p = new PannerNode(context);
    p.panningModel = "HRTF";
    p.positionX.value = 10;
    p.positionY.value = 10;
    p.positionZ.value = 10;

    osc.connect(p).connect(context.destination);

    osc.start();

    关于javascript - webapi 3D 空间化 : how to apply distance delay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64075025/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com