Audio 过滤和网络音频
我正在尝试使用Web音频实现一些过滤器 我有下面的设置,只有低通滤波器工作,但即使这样,我似乎无法让它停止Audio 过滤和网络音频,audio,filter,filtering,web-audio-api,Audio,Filter,Filtering,Web Audio Api,我正在尝试使用Web音频实现一些过滤器 我有下面的设置,只有低通滤波器工作,但即使这样,我似乎无法让它停止 //Creating filters, setting their types and setting up booleans for later use. //Lowpass Filter Setup lowpass = context.createBiquadFilter(); lp_bool=false; lowpa
//Creating filters, setting their types and setting up booleans for later use.
//Lowpass Filter Setup
lowpass = context.createBiquadFilter();
lp_bool=false;
lowpass.type="lowpass";
lowpass.type=LOWPASS;
//Highpass Filter Setup
highpass = context.createBiquadFilter();
highpass.type="highpass";
highpass.type=HIGHPASS;
hp_bool=false;
//Bandpass Filter Setup
bandpass = context.createBiquadFilter();
bandpass.type="bandpass";
bandpass.type=BANDPASS;
bp_bool=false;
//Lowshelf Filter Setup
lowshelf = context.createBiquadFilter();
lowshelf.type="lowshelf";
lowshelf.type=LOWSHELF;
ls_bool=false;
/*
lowshelf.frequency.value = 440;
lowshelf.gain.value = 0;*/
//Highshelf Filter Setup
highshelf = context.createBiquadFilter();
highshelf.type="highshelf";
highshelf.type=HIGHSHELF;
hs_bool=false;/*
highshelf.frequency.value = 440;
highshelf.gain.value = 0;*/
//Peaking Filter Setup
peaking = context.createBiquadFilter();
peaking.type="peaking";
peaking.type=PEAKING;
pk_bool=false;/*
peaking.frequency.value = 440;
peaking.Q.value = 0;
peaking.gain.value = 0;*/
//Notch Filter Setup
notch = context.createBiquadFilter();
notch.type="notch";
notch.type=NOTCH;
nh_bool=false;/*
notch.frequency.value = 440;
notch.Q.value = 0;*/
//Allpass Filter Setup
allpass = context.createBiquadFilter();
allpass.type="allpass";
allpass.type=ALLPASS;
ap_bool=false;/*
allpass.frequency.value = 440;
allpass.Q.value = 0;*/
};
切换功能:
function toggle_filter(filter_name,filter_bool) {
masterVolume.disconnect(0);
// Check if we want to enable the filter.
if (filter_bool==false) {
// Connect through the filter.
masterVolume.connect(filter_name);
filter_name.connect(context.destination);
filter_bool=true;
} else if(filter_bool==true){
filter_name.disconnect(0);
// Otherwise, connect directly.
masterVolume.connect(context.destination);
filter_bool=false;
}
};
从按钮调用:
<div id="filter-container">
<a onclick="toggle_filter(lowpass,lp_bool);" id="filter-button">Lowpass</a>
<a onclick="toggle_filter(highpass,hp_bool);" id="filter-button">Highpass</a>
<a onclick="toggle_filter(bandpass,bp_bool);" id="filter-button">Bandpass</a>
<a onclick="toggle_filter(lowshelf,ls_bool);" id="filter-button">Lowshelf</a>
<a onclick="toggle_filter(highshelf,hs_bool);" id="filter-button">Highshelf</a>
<a onclick="toggle_filter(peaking,pk_bool);" id="filter-button">Peaking</a>
<a onclick="toggle_filter(notch,nh_bool);" id="filter-button">Notch</a>
<a onclick="toggle_filter(allpass,ap_bool);" id="filter-button">Allpass</a>
<div>
低通
高通滤波
带通
低架
高货架
峰值
缺口
全通
有人能告诉我哪里出了问题吗?在每次将类型正确设置为字符串后,您将类型设置为未知值。最终将其重置为默认值-低通。剪切设置.type=HIPASS等的行(或将其移动到相应字符串集之前)。在每次将类型正确设置为字符串后,您将类型设置为未知值。最终将其重置为默认值-低通。剪切设置为.type=HIPASS等的行(或将其移动到相应字符串集之前)。必须按如下方式设置过滤器类型:
filter.type = "highpass";
必须按如下方式设置过滤器类型:
filter.type = "highpass";
我已经做了更改,但我仍然存在一个问题,即只有低通滤波被应用,当选择任何其他类型的滤波器时,它就像什么都没有发生一样?酷,我已经解决了这个问题。。唯一的问题是我只能让低通滤波器工作,我该如何去修复它?这看起来真的很奇怪。你有活生生的例子吗?顺便说一句,你的切换函数没有切换全局变量,我不认为。我已经做了更改,但我仍然有一个问题,即只有低通滤波被应用,当选择任何其他类型的滤波器时,它就像什么都没有发生一样?酷,我已经解决了这个问题。。唯一的问题是我只能让低通滤波器工作,我该如何去修复它?这看起来真的很奇怪。你有活生生的例子吗?顺便说一句,你的切换函数没有切换全局变量,我不认为。