はじめてのWeb Audio API
2番目の講演はGoogleの北村英志さんによる,
Web Audio APIとは,
まずはじめに,
- Audio Visualizer in 3D
- アップロードされたmp3を解析してビジュアライズしている
- WebGL City
- ヘリコプターの音が飛んでいる場所によって変わっていく
次にWeb Audio APIが,
Audioタグは音を扱うためのマークアップです。Audio Data APIは,
Audioタグ | Audio Data API | Web Audio API | |
---|---|---|---|
音声ファイルの再生 | ○ | ○ | ○ |
音の生成 | × | ○ | ○ |
用途 | BGMのような長く再生するもの | 効果音のような正確なタイミングが重要なもの | 効果音のような正確なタイミングが重要なもの |
音の編集方法 | × | 波形を計算しAPIに渡す | 元の音には手を加えず, |
Web Audio APIは上記の票でも言及している通り、モジュールを付け足して音を作るという点が優れています。以下のようなモジュールを組み合わせることで音が鳴るようになっているそうです。
- AudioContext
- 基礎となるモジュール,
時間管理やオーディオの出力部を持つ - AudioBuffer
- 音源
- AudioNode
- ほぼ全てのモジュールのインタフェース
- AudioParam
- 自動化が可能なパラメータ制御を持つインタフェース
その後,
興味がある方は是非講演資料をご覧ください。
Google Fesの舞台裏とか
次に,
Google Fesとは,
こちらのサイトにアクセスすると楽器を見ることができます
このセッションでは,
このアプリの実装期間はたったの約2週間であったことに触れつつ,
- 高速性
- 振ったらすぐに反応するというような気持ちよさ
- 検出の工夫
- 振ったらどのように反応すれば楽しいか
- 当日の安定稼働
- インフラによるスケールの容易さ
- 1,000人ぐらいの会場で実演するので,
その規模への対応
これらの方針の落とし穴やその解決方法,
高速化と検出の工夫に対応するため,
- 楽器の音は最初の接続時にロードしておく
- 気持ちよく音を鳴らすために,
振りだしのタイミングで音を鳴らす - オブジェクトの動きを管理するタイマーは1つだけ
- 同じ画像はPaper.
jsの画像のSymbol化で使い回す - 楽器の音をキャッシュしておくことで次回のロードが早くなる
- Web Audio APIとAudioタグを用途に合わせて使い分ける
特にデモ上で様々に動く数多くのオブジェクトが,
他の部分は講演資料や以下の講演動画をご覧ください。実際に運用する上での苦悩を見ることができるはずです。