代码之家  ›  专栏  ›  技术社区  ›  Nick Joliat

是否在播放停止和启动时增加网络音频增益?

  •  0
  • Nick Joliat  · 技术社区  · 8 年前

    我有一个应用程序,其中音频播放可能开始和停止,并且有UI控件将增益渐变到零或非零值。我正在使用 AudioBufferSourceNode.start AudioParam.linearRampToValueAtTime

    这是一个测试用例:我们创建一个1秒的噪声缓冲区并播放它,同时将增益降到零。如果在渐变结束后(1秒)计划播放,则增益值永远不会设置,并保持在默认值,即非零值。

    var ctx = new AudioContext();
    var SR = ctx.sampleRate;
    var buffer = ctx.createBuffer(1, SR, SR);
    var channelData = buffer.getChannelData(0);
    for (var i=0; i<SR; i++) {
      channelData[i] = Math.random() * 2 - 1;
    }
    var bufferNode = ctx.createBufferSource();
    var gainNode = ctx.createGain();
    bufferNode.buffer = buffer;
    bufferNode.connect(gainNode);
    gainNode.connect(ctx.destination);
    gainNode.gain.linearRampToValueAtTime(0, ctx.currentTime + 1);
    //XXX if start_delay is greater than 1 (the ramp duration), 
    // the gain is never changed and remains at 1.
    var start_delay = 0;
    bufferNode.start(ctx.currentTime + start_delay);
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Raymond Toy    8 年前

    这里有几个问题:

    1. 的行为 linearRampToValueAtTime
        2
  •  0
  •   Nick Joliat    8 年前

    我的问题似乎是由Chrome 57中修复的Chrome中的错误引起的。以下是错误报告: https://bugs.chromium.org/p/chromium/issues/detail?id=647974

    https://bugs.chromium.org/p/chromium/issues/detail?id=647974#c9