2016-06-08 5 views
0

Wenn ich diesen Code ausführe bekomme ich diesen Fehler: "Uncaught TypeError: Fehler beim Ausführen von 'linearRampToValueAtTime' auf 'AudioParam': Der angegebene doppelte Wert ist nicht endlich."Web-Audio-Oszillator ohne Klicks stoppen

var ac = new window.AudioContext() || new window.webkit.AudioContext(); 
var osc; 
var gain = ac.createGain(); 

function playosc() { 
    osc = ac.createOscillator(); 
    osc.frequency.value = 440; 
    osc.connect(gain); 
    gain.connect(ac.destination); 
    gain.gain.setValueAtTime(0, ac.currentTime); 
    gain.gain.linearRampToValueAtTime(0.3, ac.currentTime + 0.01); 
    osc.start(); 
} 

function stoposc() { 
    gain.gain.linearRampToValueAtTime(0, ac.endTime - 0.01); 
    osc.stop(ac.endTime); 
} 

&, wenn anstelle von ac.endTime ist nur endTime - "endTime ist nicht definiert" Fehler occures. vielleicht kann jemand erklären warum es so ist? Danke

Antwort

0

Es gibt keine AudioContextendTime Eigenschaft. Doing AudioContext.endTime gibt undefined, so haben Sie undefined-.01, die NaN zurückgibt, die nicht endlich ist. Sie wollen currentTime verwenden wie Sie haben, wenn der Oszillator für die Antwort

function stoposc() { 
    gain.gain.linearRampToValueAtTime(0, ac.currentTime + .01); 
    osc.stop(ac.currentTime + .02); 
} 
+0

dank schaffen, sondern diese Art und Weise ein Klicken zu hören stoppen dann. Irgendwelche anderen Vorschläge? –

Verwandte Themen