Web Audio API延迟声音在Chrome中失真

时间:2012-10-26 03:15:45

标签: javascript html5 web-audio

我正在使用带有javascript的Web Audio API。

我创建一个振荡器,将其连接到音量(gainNode),将其连接到目的地。

确定。好的。

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

嗯,这不起作用,我只听到延迟。虽然,它很干净。

好的,所以我将osc连接到音量的延迟,将osc连接到音量,然后将音量连接到目的地。

现在它似乎被扭曲了。

我尝试将osc延迟到目的地,使用osc到目的地,因此有两个到目的地的连接。这也是扭曲的。

那是关于铬的。

在我必须尝试的那段时间里,它似乎在iOS6上运行正常。不知道野生动物园。

转到http://cloudmusiccompany.appspot.com/watch.jsp并点击红色和绘图,试试吧。那是一个普通的正弦波。现在点击白色并绘制,这与延迟相同,并且在chrome(Ubuntu)上它被扭曲。不知道Safar。

显然你可以在链接上看到完整的源代码,因为它的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;
}

2 个答案:

答案 0 :(得分:2)

我刚才有机会在Windows上的Chrome上使用它,它运行正常。延迟听起来应该是这样。

这必须是Linux版本(chrome)中的错误

答案 1 :(得分:1)

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

https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#DynamicsCompressorNode