正如标题所说,如果我有一个发出声音的音频节点并将其连接到两个单独的 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 的问题吗?