Wie kann ich dieses Klicken vermeiden, wenn ich aufhöre, einen Sound abzuspielen?

Ich hoffe wirklich, dass diese Frage eine Programmierfrage bleibt und keine Sound Mechanics-Frage auftaucht ... Here goes ...

Ich mache einige Experimente, um herauszufinden, wie die Web-Audio-API funktioniert. Was ich versuche, ist ein einfacher "Auflegen" -Ton, der in einer Schleife abgespielt wird. Das Problem ist, dass Sie am Ende des Tons ein ziemlich ärgerliches Klicken hören. Ich kann es nicht besser erklären, aber Sie können es hören, wenn Sie den Code testen.

Gibt es eine Möglichkeit, dies zu vermeiden? Irgendein Filter könnte ich anwenden oder so?

var audioContext = new (AudioContext || webkitAudioContext)();
    
    var frequencyOffset = 0
    function boop(){
      // Our sound source is a simple triangle oscillator
      var oscillator = audioContext.createOscillator(); // Create sound source  
      oscillator.type = 'triangle';
      
      // Adding a gain node just to lower the volume a bit and to make the
      // sound less ear-piercing
      var gain = audioContext.createGain();
      oscillator.connect(gain);
      gain.connect(audioContext.destination);
      
      gain.gain.value = 0.1;
      // Just for fun let the frequency increase on each itteration
      oscillator.frequency.value = 200 + frequencyOffset;
      oscillator.start(0);
      
      // The sound should last for 250ms
      setTimeout(function(){
        oscillator.disconnect(); 
        oscillator.stop();
        gain.disconnect();
      }, 250);
      frequencyOffset += 1;
    }

    setInterval(boop, 500);

Antworten auf die Frage(6)

Ihre Antwort auf die Frage