Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 网络音频API延迟声音在Chrome中受到干扰_Javascript_Html_Web Audio Api - Fatal编程技术网

Javascript 网络音频API延迟声音在Chrome中受到干扰

Javascript 网络音频API延迟声音在Chrome中受到干扰,javascript,html,web-audio-api,Javascript,Html,Web Audio Api,我将Web音频API与javascript一起使用 我创建一个振荡器,将其连接到卷(gainNode),将其连接到目标 嗯。很好 我想要一个延迟效果,我把它放在振荡器和音量之间 好吧,那不行,我只听到延迟。虽然,它是干净的 好的,我将osc连接到延迟到卷,osc连接到卷,然后将卷连接到目标 现在它似乎被扭曲了 我尝试osc延迟到卷到目的地,osc延迟到目的地,因此有两个到目的地的连接。这也被扭曲了 那是在chrome上 在我不得不尝试的很短时间内,它似乎在iOS6上正常工作。我不知道狩猎 通过转

我将Web音频API与javascript一起使用

我创建一个振荡器,将其连接到卷(gainNode),将其连接到目标

嗯。很好

我想要一个延迟效果,我把它放在振荡器和音量之间

好吧,那不行,我只听到延迟。虽然,它是干净的

好的,我将osc连接到延迟到卷,osc连接到卷,然后将卷连接到目标

现在它似乎被扭曲了

我尝试osc延迟到卷到目的地,osc延迟到目的地,因此有两个到目的地的连接。这也被扭曲了

那是在chrome上

在我不得不尝试的很短时间内,它似乎在iOS6上正常工作。我不知道狩猎

通过转到并单击“红色”和“绘图”进行尝试。这是一个正常的正弦osc。现在单击白色并绘制,这与延迟相同,而在chrome(Ubuntu)上它是扭曲的。我不知道萨法尔的事

显然,您可以在链接中看到完整的源代码,因为它是javascript

有关资料来源:

function makeNewChannel(color){
  var info = getInstrumentInfo(color);
  var chan = {osc: acontext.createOscillator(),
    freqs: [],
    times: [],
    pxdata: [],
    i: 0,
    muted: true,
    finishedLoop: false, 
    volume: acontext.createGainNode(), 
    gate: acontext.createGainNode(), 
    delay: acontext.createDelayNode(),
    delayGain: acontext.createGainNode(), 
    mute: function(){
      this.muted = true;
      this.volume.gain.value = 0;
    },
    unmute: function(){
      this.muted = false;
      this.volume.gain.value = player.defaultGain / (info.soft ? 2 : 1);
    }
  }
  chan.osc.type = info.type;

  //        chan.osc.connect(chan.gate);
  chan.osc.connect(chan.volume);

  chan.delayGain.gain.value = player.defaultGain ;
  /* ugh , the wet sounds ok, but somehow its distorting or doubling the dry signal
   * although it seems ok on iphone?
   * */
  if (info.delay){
    chan.delay.delayTime.value = 0.5;
    chan.volume.connect(chan.delay)
    chan.delay.connect(chan.delayGain);

    chan.delayGain.connect(acontext.destination);

  }
  chan.volume.gain.value = 0; //player.defaultGain;
  chan.gate.gain.value = 0;
  chan.volume.connect(acontext.destination);
  chan.osc.frequency.value = 0;

  chan.osc.noteOn(0);
  return chan;
}

您可以通过在上下文目标之前添加压缩器来解决这个问题。所有路径都应该连接到它,然后压缩器连接到目标


我刚刚有机会在Windows上的Chrome上使用它,它工作得很好。延迟听起来是应该的


这一定是Linux版本(chrome)中的一个错误。

您介意从源代码中提取路由吗?要想找到它有点费劲。对不起,我刚从手机上发了帖子,等我上了电脑后再试试。相关的方法是makenewchannel我想如果有人使用iOS6设备可以确认is有明显的延迟,而chrome有一个扭曲的延迟(通过在上面的网页上用白色绘制),这可能表明了什么。和Safari 6。对不起,我知道我应该自己在所有平台上测试,我只是没有访问Mac的权限。所以你想播放原始振荡器声音,然后再次延迟播放?是的,我想吉他手会使用延迟踏板。就像我说的,我很确定iOS6给出了正确的结果,Chrome(在Ubuntu上)会扭曲声音。我没有更好的iOS、Mac或Windows来测试(我是瘸子,我知道)我曾经尝试过,特别是因为doc使用了它,我也使用了同样的g1、s1方案。但同样的效果。无论是压缩器还是最终的收益,我都不会期望他们的表现有太大的不同。我甚至尝试过渠道拆分和合并,尽管它们显然有不同的用途。