AS3, FP10 のサウンドレイテンシ問題

http://cgarcade.com/blog/flash_10_dynamic_sound_latency

最近、FP10、というかActionScript3で音を扱う(リズムゲームとかね)場合のレイテンシで頭を悩ませている。しかも出口が見つかっていない。

現象とか状況としては

  • Sound#play でも SampleDataEvent でもいいのだけど、とにかく再生要求から実際に音が聴こえるまでのレイテンシが激しい
    • 100ms以上はある
  • Sound#play を呼ぶと一音目と(同時)二音目でレイテンシが異なる.
    • これは「無音」をずっと再生しておくと すべて同一レイテンシになる (チャネルがクローズされることが原因らしい?)

単純に、「動画と音声の同期」ならば、AS3ではレイテンシが計測できるので問題はない。ここで問題になるのはゲームなど、ユーザとのインタラクションがあるケース。

ボタンを押すと音がなる、という動作をするゲームは多い。そのタイミングの正確さでゲームとしている音ゲーなんかだと、押してから200msとか経過してから音がなったんではリズムを取ることは難しい。これが非常に悩ましい。

もちろん、音ゲーの場合、キーに同期して音を鳴らすのはあきらめて、単純にボタンを押すタイミングだけで採点するということは可能だが、これはなんというかあまり楽しくない。なにかボタンを押すと音がなる、という楽器/オモチャ感は、かなり肉感的な快楽を含むものなのでこれを失いたくない・・・

なんとかして、Flashで気持ちの良い音ゲーは作れないのか...? 模索中。