2

JavaScript で Web Audio API を使用しています。

オシレータを作成し、それをボリューム (gainNode) に接続し、宛先に接続します。

Ok。良い。

ディレイエフェクトが欲しいので、オシレーターとボリュームの間に挟みます。

まあ、それはうまくいきません。遅延が聞こえるだけです。とはいえ、きれいです。

わかりましたので、OSC をディレイからボリュームに接続し、OSC をボリュームに接続してから、ボリュームを宛先に接続します。

今は歪んでいるようです。

宛先への接続が 2 つあるように、宛先への osc を使用して、ボリュームから宛先への遅延を osc で試みました。それも歪んでいる。

それはクロムにあります。

少し試してみたところ、iOS6 で正しく動作するようです。サファリはわかりません。

http://cloudmusiccompany.appspot.com/watch.jspにアクセスし、赤をクリックして描画してみてください。それは通常の正弦波です。ここで白をクリックして描画します。これは遅延と同じであり、クロム(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;
}
4

2 に答える 2

2

Windows の Chrome で使用する機会がありましたが、問題なく動作します。ディレイは本来あるべきように聞こえます。

これは Linux バージョン (chrome) のバグに違いありません。

于 2012-11-18T00:04:00.773 に答える
1

コンテキストの宛先の直前にコンプレッサーを追加することで、おそらくこれを解決できます。すべてのパスがそれに接続され、コンプレッサーが宛先に接続されます。

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

于 2012-10-26T11:06:26.410 に答える