我正在尝试使用振荡器将音调颤音应用于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中无效?
答案 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是颤音子图创建例程。