gpt4 book ai didi

javascript - 网络音频 : Change gain value before oscillator starts

转载 作者:行者123 更新时间:2023-12-03 05:40:21 24 4
gpt4 key购买 nike

我刚刚注意到似乎无法使用 setValueAtTime() 方法更改 gainNodegain.value >setValueCurveAtTime() 当没有连接振荡器或振荡器尚未启动时。

setValueAtTime 之后振荡器启动

例如在本例中,setValueAtTime 将按预期工作:

var context = new AudioContext();

var gain = context.createGain();
gain.connect(context.destination);

var osc = context.createOscillator();
osc.frequency.value = 300;
osc.connect(gain);

osc.start();

gain.gain.setValueAtTime(0, context.currentTime + 1);

振荡器启动,增益为1,持续 1 秒。然后 gain.gain.value 将移动到 0

setValueAtTime 在振荡器启动之前

但是,如果我们在振荡器启动之前使用 setValueAtTime 设置增益

var context = new AudioContext();

var gain = context.createGain();
gain.connect(context.destination);

var osc = context.createOscillator();
osc.frequency.value = 300;
osc.connect(gain);

osc.start(context.currentTime + 1);

gain.gain.setValueAtTime(0, context.currentTime);

gain.gain.value 将保持为 1。

设置gain.gain.value而不使用setValueAtTime

奇怪的是,如果我们直接设置增益,就看不到这种行为

var context = new AudioContext();

var gain = context.createGain();
gain.connect(context.destination);

var osc = context.createOscillator();
osc.frequency.value = 300;
osc.connect(gain);

osc.start(context.currentTime + 1);

gain.gain.value = 0;

增益值将始终保持为 0。

最佳答案

如果您使用的是 Chrome,那么这可能是 bug in Chrome 。 Chrome 实际上会在 getter 中返回计算值,但如果节点没有输入但仍连接到目标,则不会运行 AudioParam 自动化。它们应该是,并且可以使用 .value getter 检查这些值。

关于javascript - 网络音频 : Change gain value before oscillator starts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40564529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com