【问题标题】:Web audio api - LFO on buffer pitchWeb 音频 api - 缓冲音高上的 LFO
【发布时间】:2015-07-14 00:27:43
【问题描述】:

是否可以为缓冲区声音的播放速率值添加一个 lfo,类似于您为振荡器的频率添加的方法?

我尝试创建一个振荡器节点,将频率值设置为 2,将其连接到增益节点,将增益值设置为 1000,然后将增益节点连接到缓冲声音的播放速率,但没有效果。

我的代码:

function Sound(path) {
    var that = this;
    that.buffer = null;
    that.path = path
    var request = new XMLHttpRequest();
  request.open('GET', that.path, true);
  request.responseType = 'arraybuffer';
    request.onload = function() {
    ac.decodeAudioData(request.response, function(buffer) {
      that.buffer = buffer;
    });
  }
  request.send();
}

Sound.prototype.play = function(a,b) {
        var lfo = ac.createOscillator();
        lfo.frequency.value = 0.5
        var lfoAmp = ac.createGain();
        lfoAmp.gain.value = 1000
        var gain = ac.createGain();
        gain.gain.value = a;
        var playSound = ac.createBufferSource();
        playSound.playbackRate.value = b;
        lfo.connect(lfoAmp);
        lfoAmp.connect(playSound.playbackRate);
        playSound.buffer = this.buffer;
        playSound.loop = true;
        playSound.connect(gain);
        gain.connect(ac.destination);
        lfo.start(0);
        playSound.start(0);
}

【问题讨论】:

    标签: javascript audio web-audio-api


    【解决方案1】:

    您的示例中缺少很多上下文,因此难以调试(例如,b 参数是什么?)如果您可以链接到一个实时示例,我可以更详细地查看。

    完全可以按照您描述的方式使用 LFO 驱动播放速率 - 但是振荡器的输出将在 [-1,1] 之间变化,因此您的 lfoAmp 的输出将在 [-1000, 1000]。然后它将与 playsound.playbackRate 相加,因此它将在 [-1000+b, 1000+b] 之间变化。这是一个很大的乘数——事实上,当前的实现将playbackRate 限制在[0,4] 之类的值(关于确切范围不是正数——参见https://github.com/WebAudio/web-audio-api/issues/391#issuecomment-61673716。)

    1) 您可能希望在 [0.5,2] 或类似的范围内改变播放速率;混叠和谐波使拉伸听起来不那么难听。

    2) 改变 .detune 而不是 .playbackRate 可能更容易,当然也更有音乐性。将其更改为 [-1200,1200] 以实现上一个八度音程,下一个八度音程。

    (其实playbackRate目前指定为k-rate,对这个场景有一点破坏,不过有个bug:https://github.com/WebAudio/web-audio-api/issues/55。)

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 2011-06-01
      相关资源
      最近更新 更多