Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web音频API筛选器不工作_Javascript_Web Audio Api - Fatal编程技术网

Javascript Web音频API筛选器不工作

Javascript Web音频API筛选器不工作,javascript,web-audio-api,Javascript,Web Audio Api,因此,我在浏览器中创建了一个合成器,并希望在其中添加一些过滤器。我创建了所有的滤波器,并将我的振荡器连接到滤波器,将滤波器连接到音频目标。现在,当我选择播放低通滤波器时,我在控制台中出现此错误,并且没有添加任何效果: The provided value '3' is not a valid enum value of type BiquadFilterType. 我的代码片段: function init() { octaveNumber = document.getElementByI

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

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);
}

这是什么意思?

您看到的错误是不言自明的。基本上,
filter.type=3
不是有效的BiquadFilterNode类型,如列表所示,“它是定义节点正在实现的过滤算法类型的字符串(枚举)值。”

它的值是字符串:“高通”、“带通”、“低架”、“高架”、“峰值”、“槽口”和“全通”


你可以在页面上找到它们的含义。

允许的过滤器不是这些,所以在你的例子中,
filter.type='lowpass'
我读了一些愚蠢的博客文章,出于某种原因,它使用了数字而不是过滤器名称。正在工作,但出现一些奇怪的错误
提供的值“”不是类型为OscillatorType的有效枚举值。
在第104行,即osc.type=this.value;其中value表示波形值,如正弦或三角形。“所以完全没有意义。”林巴斯很乐意帮忙。您的新错误告诉您,
this.value
被设置为空字符串,因此它不是您所认为的(例如,当执行第104行时,它不是“正弦”或“三角形”。可能是稍后设置的,或者是异步设置的)。考虑使用一个调试器,例如Chrome浏览器的DeVoice,它允许您设置断点并在FLL上对代码进行评估。对于该记录,WebAudio的早期版本确实使用数字指定过滤器类型。这后来被更改为使用字符串。如果你问我的话,这是一个很大的进步。