gpt4 book ai didi

javascript - audioParam.exponentialRampToValueAtTime 是如何工作的?

转载 作者:数据小太阳 更新时间:2023-10-29 04:36:48 25 4
gpt4 key购买 nike

我无法通过 GainNode 的 exponentialRampToValueAtTime 获得音量的滑动变化。

这是一个例子:

var context = new AudioContext(),
osc = context.createOscillator(),
gain = context.createGain();

osc.frequency.value = 440; // A note
osc.start( 0 );
osc.connect( gain );

gain.gain.value = 0;
gain.connect( context.destination );

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

根据我的理解,这应该逐渐增加音量,直到达到 1 (100%),整个过程应该需要 2 秒。这个假设是否正确?

如果是,为什么保持 0 2 秒,然后突然切换到最大音量?

预先感谢您的时间和精力。

最佳答案

看来这个函数不喜欢0值。 FF 抛出“SyntaxError:指定了无效或非法的字符串”。下面的代码将正确斜坡。参见Plnkr .

var context = new AudioContext(),
osc = context.createOscillator(),
gain = context.createGain();

osc.frequency.value = 440.0; // A note
osc.start( 0 );
osc.connect( gain );

gain.connect( context.destination );

gain.gain.setValueAtTime(0.0001, context.currentTime); // <-- line of interest

gain.gain.exponentialRampToValueAtTime(1, context.currentTime + 10 );

更新:“如果此值小于或等于 0,或者如果前一个事件发生时的值小于或等于 0,则必须抛出 NotSupportedError 异常”根据Web Audio specification .正如@cwilso 所想的那样(见评论)。

关于javascript - audioParam.exponentialRampToValueAtTime 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819382/

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