音の鳴るブログ

鳴らないこともある

setIntervalを使わずにタイマーを作ろうとして失敗した

Firefoxの話、

ここに置いてあるウェブ楽器のタイマー処理にタブを切り替えても安定的に動く無敵タイマーというのを使っていたのだけど、いつからか動作がおかしい。しばらく使っていると処理が終らないみたいなダイアログがでる。このブログでも同じように無敵タイマーを使っていて、こちらはちゃんと動くようなので何かやり方が違うのかも知れない。よく分からない。同じスクリプトを使ってたと思うけど..

とりあえず、普通の window.setInterval に戻した。タブを切り替えると音が途切れて格好わるい。

 

で、調べるのだるいので、別の方法を考えた。

Audio Data APIの場合、再生すると定期的に MozAudioAvailable が呼ばれる。このイベントの引数に再生中のサンプルデータが入っているので、それを加工したり分析したりできるっていうやつなんだけど、定期的に呼ばれるならタイマーとして使えるかもしれない。再生用のaudioは無音のwaveファイルをスクリプト内で生成すれば良い。そう思ってやってみたんだけどダメだった。ループ再生の戻るときに遅延が起こる。currentTime をリセットしてもダメだった。shit

 

 ※Firefoxのみ