javascript - 网络音频 api : How to increase continuously the volume of the sound from the beginning

标签 javascript web-audio-api

为了不让听众感到窒息,我想播放一波,但音量不应从一开始就以 100% 的比例播放,例如,它应该在 2 秒的持续时间内从 0% 变为 100%。

我设置了一个 setTimeout 并且随着时间的推移增加了增益,但我不知道是否有其他更好的方法

    var source = aCtx.createBufferSource();
    source.buffer = buf;
    var gainNode = aCtx.createGain();
    gainNode.gain.value = 0
    source.connect(gainNode);
    gainNode.connect(aCtx.destination);
    source.start(0);

setTimeout(function() {
     gainNode.gain.value = 0.5
}, 1000)

setTimeout(function() {
     gainNode.gain.value = 1
}, 2000)

最佳答案

网络音频 API 提供了一个 library function为此。

AudioParam.linearRampToValueAtTime(value, endTime)

值(value)

一个 float ,表示 AudioParam 将在给定时间上升到的值。

结束时间

一个 double 值,表示在斜坡开始后值的更改将停止的确切时间(以秒为单位)。


所以在你的情况下使用

gainNode.gain.linearRampToValueAtTime(0, 0)
gainNode.gain.linearRampToValueAtTime(1, 2)

关于javascript - 网络音频 api : How to increase continuously the volume of the sound from the beginning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929573/

相关文章:

javascript - 使用旋转/缩放/平移在 Google map 上定位图像

javascript - Web 音频 API 中的自定义波形

javascript - HTML 5 : AudioContext AudioBuffer

javascript - IE11如何解码音频流,并且它不支持Web-Audio-API?

ios - ios11 上未调用 onaudioprocess

javascript - 加载在 SSL 网站上的 iframe 上发出请求的非 SSL 动态页面(jps)?

javascript - 为什么我的 Prop 在我需要的时候不能在我的组件中使用?

javascript - 在选中的复选框内填写详细信息

javascript - 为什么缩进的文本仍然显示在 IE7 中?

javascript - JAVASCRIPT音频应用程序:按钮不会根据设备而改变