オシレーターを複数回再生できないことはわかっているので、毎回新しいオシレーターを作成する関数を作成しました。
function playFrequency(f, t0, t1){
console.log(f, t0, t1);
var oscillator = self.audioContext.createOscillator();
oscillator.type = "square";
oscillator.frequency.value = f;
oscillator.connect(self.audioContext.destination);
oscillator.start(t0);
oscillator.stop(t1);
}
しかし奇妙なことに、この関数は実際には一度しかサウンドを再生しません。なぜこれが起こるのか理解できません。関数を呼び出すたびに新しいオシレータを作成していませんか?
まったく同じコードの関数「playFrequency2(f, t0, t1)」を作成すると、最初の関数がサウンドを再生した後でもサウンドが再生されます。しかし、2回目に呼び出しても音は出ません。