3

正如标题所说,如果我有一个发出声音的音频节点并将其连接到两个单独的 GainNodes,后者又连接到 Audio Context 目标,则声音以双倍速度/双倍音高播放(好像发送了一半样本到一个增益节点,一半样本到另一个,时间也减半)。

我在这里创建了一个方便的 jsfiddle 只需将您的声音文件拖到黑色矩形画布中并收听即可。

// audioContext: Web Audio context
// decoded: decoded audioBuffer
// gainNode1, gainNode2: gain nodes
var bSrc = audioContext.createBufferSource();
bSrc.connect (gainNode1);
bSrc.connect (gainNode2);
gainNode1.connect (audioContext.destination);
gainNode2.connect (audioContext.destination);
bSrc.buffer = decoded;
bSrc.loop = false;
// You'll hear two double-speed buffers playing at unison
bSrc.start(0);

这是设计使然吗?我想要的是完全“复制”声音(将被发送到两条不同的路线,小提琴只是一个更大项目的概念验证)。

编辑:

  • 我在 Chrome 版本 24.0.1312.56 / Ubuntu 12.10 上对此进行了测试,并且该行为存在。
  • Chrome 版本 24.0.1312.68 / Ubuntu 12.10 上也存在该行为
  • 在 Chrome 版本 24.0.1312.57 / Mac OSX 上,音频 API 运行良好,并且不存在此行为。

这可能是仅限 Linux 的问题吗?

4

1 回答 1

1

听起来像是 Linux 实现问题。它适用于我在 OS X 上的 Chrome 中。

于 2013-02-07T19:19:11.523 回答