WebAudio:Oscillating AudioBufferSource playbackRate

时间:2013-10-31 19:07:12

标签: javascript web-audio

我正在尝试使用振荡器将音调颤音应用于AudioBufferSource。

var source = context.createBufferSource();
source.connect(context.destination);
source.buffer = buffer;
source.loop = true;
source.start(0);

// None of the below seems to have any effect in Chrome

var osc = context.createOscillator();
osc.type = "sine";
osc.frequency.value = 0.5;
osc.start(0);

var osc_gain = context.createGain();
osc_gain.connect(source.playbackRate);
osc.connect(osc_gain);
// osc_gain.gain.value = 0.1 doesn't work
osc_gain.gain.setValueAtTime(0.1, 0);

这是一个小提琴。 http://jsfiddle.net/HRkcE/12/

振荡器在Chrome中似乎没有任何影响,但在Firefox中工作(一旦我发现直接设置osc_gain.gain.value不起作用)。

我是否做错了让它在Chrome中无效?

1 个答案:

答案 0 :(得分:2)

不,你没有做错任何事。 Blink有一个我们不支持这个的错误,上周刚被别人报告给我,我提交了https://code.google.com/p/chromium/issues/detail?id=311284。我们将解决这个问题。

与此同时,使用LFO在延迟节点的delayTime上驱动振荡,对任何音频连接(不仅仅是缓冲源节点)进行颤音效果实际上相对容易 - 检查我添加到最后的“Vibrato”效果http://webaudiodemos.appspot.com/input/index.html和我设置的节点链:https://github.com/cwilso/Audio-Input-Effects/blob/master/js/effects.js#L478是颤音子图创建例程。