Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Audio 过滤和网络音频_Audio_Filter_Filtering_Web Audio Api - Fatal编程技术网

Audio 过滤和网络音频

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

我正在尝试使用Web音频实现一些过滤器

我有下面的设置,只有低通滤波器工作,但即使这样,我似乎无法让它停止

          //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";

我已经做了更改,但我仍然存在一个问题,即只有低通滤波被应用,当选择任何其他类型的滤波器时,它就像什么都没有发生一样?酷,我已经解决了这个问题。。唯一的问题是我只能让低通滤波器工作,我该如何去修复它?这看起来真的很奇怪。你有活生生的例子吗?顺便说一句,你的切换函数没有切换全局变量,我不认为。我已经做了更改,但我仍然有一个问题,即只有低通滤波被应用,当选择任何其他类型的滤波器时,它就像什么都没有发生一样?酷,我已经解决了这个问题。。唯一的问题是我只能让低通滤波器工作,我该如何去修复它?这看起来真的很奇怪。你有活生生的例子吗?顺便说一句,你的切换函数没有切换全局变量,我不认为。