All'avvio dell'oscillatore, interromperlo e riavviarlo; Ottengo il seguente errore:(API audio Web) Errore nodo Oscillatore: impossibile richiamare l'avvio più volte
Uncaught InvalidStateError: Failed to execute 'start' on 'OscillatorNode': cannot call start more than once.
Ovviamente ho potuto utilizzare gain
di "fermare" l'audio, ma che mi colpisce pratica come poveri. Qual è un modo più efficiente di fermare l'oscillatore mentre è in grado di riavviarlo?
codice (jsfiddle)
var ctx = new AudioContext();
var osc = ctx.createOscillator();
osc.frequency.value = 8000;
osc.connect(ctx.destination);
function startOsc(bool) {
if(bool === undefined) bool = true;
if(bool === true) {
osc.start(ctx.currentTime);
} else {
osc.stop(ctx.currentTime);
}
}
$(document).ready(function() {
$("#start").click(function() {
startOsc();
});
$("#stop").click(function() {
startOsc(false);
});
});
soluzione attuale (al momento della domanda): http://jsfiddle.net/xbqbzgt2/2/
soluzione finale: http://jsfiddle.net/xbqbzgt2/3/
Sembra una limitazione di implementazione .. Puoi provare a creare un nuovo 'OscillatorNode' su ogni' start() ' –