Javascript 在Web音频API中使用脱机上下文;shift";约264个样本的信号

Javascript 在Web音频API中使用脱机上下文;shift";约264个样本的信号,javascript,html,html5-audio,web-audio-api,Javascript,Html,Html5 Audio,Web Audio Api,问题很简单 如果我实例化一个OfflineAudioContext,创建一个bufferSource,通过压缩器节点(或Panner)运行它,然后等待.oncomplete事件,则生成的e.renderdBuffer包含处理过的源代码,只向右移动了大约264个样本(根据我的经验证据) 这意味着结果缓冲区的前264个样本为0,最后一个样本提前截断。结果缓冲区长度与源缓冲区长度相同 这是一种已知的行为吗?添加到音频链中的DSP会增加音频链的延迟。为了执行某些信号处理任务,您需要的数据不仅仅是当前样本

问题很简单

如果我实例化一个
OfflineAudioContext
,创建一个bufferSource,通过压缩器节点(或Panner)运行它,然后等待
.oncomplete
事件,则生成的
e.renderdBuffer
包含处理过的源代码,只向右移动了大约264个样本(根据我的经验证据)

这意味着结果缓冲区的前264个样本为0,最后一个样本提前截断。结果缓冲区长度与源缓冲区长度相同


这是一种已知的行为吗?

添加到音频链中的DSP会增加音频链的延迟。为了执行某些信号处理任务,您需要的数据不仅仅是当前样本,尤其是涉及任何类型的滤波/卷积的数据。这必然会增加音频路径的延迟。压缩算法可能需要一些前瞻性。。。对于淘金者来说似乎很不寻常。淘金者似乎增加了更多,大约256个样本(很难说)。顺便说一下,如果每个节点都有一个固定的前向,脱机上下文应该处理这个问题并返回正确的信号(将其偏移等于前向的总和)。对于一个给定的图形,用户无法判断有多少样本是前瞻的,结果仍然在最后被截断。这使得脱机上下文几乎毫无用处(点击、截断输出有什么意义?),考虑到给定的扩展复杂性(例如,它更像是一个3d音频“空间化器”,而不是一个简单的平移器),我不再感到惊讶,它需要向前看。用静音填充音频以让DSP恢复到零的时间并不少见。默认的Panner模式是HRTF,这是一种重要的DSP模式。(这可能会改变。)规范尚未严格定义节点的行为,因此没有很好地定义。不过,我希望HRTF panner会增加一些延迟。对压缩不是积极的。