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的早期版本确实使用数字指定过滤器类型。这后来被更改为使用字符串。如果你问我的话,这是一个很大的进步。