变量 + 使用网络音频 api 和 jquery 的循环

variables + loops using web audio api and jquery

这是我一直在做的事情 link

http://79.170.40.170/johnhartmanportfolio.com/

和一些笔记 我建立了一个简单的 3 波段图形均衡器,目前正在连接滤波器。 如果您单击绿色按钮,将播放正弦波;红色按钮将停止它。

如果你移动任何推子(任何方向),低通滤波器将下降(如果你打开控制台,我将当前滤波器值输出到日志)

问题:我正在使用 if 循环来比较值,问题是一旦我达到 0,就好像我的另一个循环永远不会被查看。我不知道我做错了什么,也许 if 循环不合适?话虽如此,它让我重新审视了赋值和运算符,但我仍然卡住了任何帮助将不胜感激。

(仅 js)

$(document).ready(function() {

  var context = new AudioContext();
  var oscillator = context.createOscillator();
  var volume = context.createGain();
  var biquadFilter = context.createBiquadFilter();
  biquadFilter.type = "lowshelf";
  var eqValue = 1000;
  biquadFilter.frequency.value = eqValue;
  biquadFilter.gain.value = 1;
  volume.gain.value = 0;
  oscillator.start(0)


  $("#playButton").click(function() {
    oscillator.connect(volume);
    volume.connect(biquadFilter)
    biquadFilter.connect(context.destination);
    volume.gain.value = 1;
  });

  $("#stopButton").click(function() {
    volume.gain.value = 0;
  });

  $(".faderStyle").on("slide", function() {

    if (eqValue = 0) {
      biquadFilter.frequency.value += 10;
      console.log(biquadFilter.frequency.value)
    }
    if (eqValue = 1000) {
      biquadFilter.frequency.value -= 10;
      console.log(biquadFilter.frequency.value)
      return (eqValue);
    }
    return (eqValue)
  });

  $(".faderStyle").slider({
    orientation: "vertical",
    range: "min",
    min: 0,
    max: 1000,
    value: 60
  });
});

您的 if's 应该使用 ===== 进行比较。

等号运算符将始终设置您的变量值,这不是您想要的。

eqValue = 0 将始终评估为 false,应该是 eqValue === 0

eqValue = 1000 将始终评估为真,应该是 eqValue === 1000