RSS Twitter Facebook

2013/05/21 (2013年05月 のアーカイブ)

FirefoxのWebAudioAPIのサポート状況

現在 Firefox Aurora にデフォルトでオンの状態で入っています。
もうすぐFirefoxでも普通にWebAudioAPIが使えるようになるのは喜ばしい事なのですが、サポート状況が完全ではないため、問題が発生するケースがありそうです。

そんなに完全にチェックしたわけではないのですが、ちょっと触ってみた所、次のような気を付けるべき点があります。


  • オーディオコンテキストはプリフィックスなしのAudioContextになっています。
  • OscillatorNode、ConvolverNode、WaveShaperNodeがありません。
  • ノードの接続で信号のループを作ったり複雑な接続をすると正常に動かない場合があります。
  • BufferSourceNodeのplaybackRate、start()、stop()はパラメータや関数はありますが無効です。playbackRateは1に固定、再生は勝手に始まります。
  • BiquadFilterNodeのtypeは古い仕様の数値での指定は効きません。文字列で指定する必要があります。
  • DelayNodeは入力が途絶えるとバッファ内のデータを繰り返し出力し続けます。
  • PannerNodeは存在しますが、効いていないようです。デフォルトの"HRTF"では効きません。文字列で"equalpower"を指定すると効きますがSafariで異常動作を起こします。

  • こんな感じですので、今の所ノードの機能を色々使った複雑なアプリを作るのは少し厳しいかも知れませんが、とりあえずBufferにデータを読み込んでBufferSourceで鳴らしてフィルターを掛けてみる、などさわりの部分を確認するくらいは可能かと思います。

    WebAudioAPI解説のページのサンプルは残念ながらFirefoxでまだサポートされていないOscillatorを各所で使っている事もあって、ほとんどがそのままでは動きませんでした。

    やっかいなのはAudioContextがプリフィックスなしで入っているため、そのままではpolyfillにフォールバックしない事です。折角有効になったFirefoxのWebAudioAPIを使いたいのはやまやまですが、Firefoxの場合は強制的にフォールバックしてWAAPISimで動かすような変更を現在加えています。

    WAAPISimの読み込みの前に次の1行を指定します。これでAudioContextが生きていてもオシレーターが使えない環境の場合には強制的にPolyfillで置き換えを行います。

    
    <script type="text/javascript">waapisimForceSimWhenLackOsc=1;</script>
    

    Posted by g200kg : 2013/05/21 21:19:53