Web音频API过滤器无法正常工作

时间:2017-08-15 14:36:46

标签: javascript web-audio web-audio-api

所以我在浏览器中创建了一个合成器,并希望为它添加一些过滤器。我创建了所有过滤器的东西,并将我的振荡器连接到滤波器,将连接器连接到音频目的地。现在当我选择低通滤波器播放时,我在控制台中收到此错误并且没有添加任何效果:

The provided value '3' is not a valid enum value of type BiquadFilterType.

我的代码片段:

function init() {
  octaveNumber = document.getElementById("octaveNum");
  audioCtx = new (window.AudioContext || window.webkitAudioContext);
  osc = audioCtx.createOscillator();
  volume = audioCtx.createGain();
  filter = audioCtx.createBiquadFilter();
  osc.connect(filter);
  volume.connect(audioCtx.destination);
  booleanVal = false;
  osc.frequency.value = freqSlider.value
  osc.start();
  gainDisplay.innerHTML = gainSlider.value;
}

lowpass.addEventListener("click", function(event) {
    filter.type = 3;  // In this case it's a lowshelf filter
    filter.frequency.value = 440;
    filter.Q.value = 0;
    filter.gain.value = 0;
})

function start() {
    UI('start');
    volume.gain.value = gainSlider.value;
    filter.connect(volume);
}

这是什么意思?

1 个答案:

答案 0 :(得分:1)

您看到的错误非常自我解释。基本上,filter.type = 3;不是有效的BiquadFilterNode类型,正如MDN列出的那样,“是一个字符串(枚举)值,用于定义节点正在实现的过滤算法类型。”

它的价值观是弦乐:'highpass','bandpass','lowshelf','highshelf','peaking','notch'和'allpass'。

您可以在MDN页面找到它们的含义。