Summary

  • W3Cの2011年12月15日付Web Audio API作業草案は、AudioContext内でAudioNodeをつなぐ音声ルーティンググラフを中心に据えた。
  • 2021年6月17日の勧告は、時間に沿ったパラメーター制御、オフライン描画、AudioWorkletによる独自処理を定めた。ページが音の流れを組み、ブラウザー側の仕組みがリアルタイムの処理を担う。

練習室の隅に古いジュークボックスがある。作曲者が「少しずつ音を大きくして、左に移動させ、反響を加え、登場人物が着地した瞬間に止めて」と頼む。機械は赤いボタンを誇らしげに見せる。もう一度レコードをかけることはできる。求められている仕事が変わっただけだ。ウェブでも音声ファイルの再生と、操作に応じて音を組み立てることは別の仕事だった。

2011年12月15日のW3C作業草案が示した中心の発想は、音声ルーティンググラフである。複数のAudioNodeをつなぎ、音がどの順番で処理され、どこへ届くかを定める。音源の次にフィルター、音量調整、空間の位置づけ、そして最終出力という経路を作れる。JavaScriptがつながりを設定する一方、実際の処理の多くはブラウザーの下層にある最適化された実装が担うと草案は説明した。脚本が配線を指示し、機械が空気を動かす。

HTMLのaudio要素による基本的な再生も、大きな前進だった。だが2011年草案が対象にしたのは、ゲームや対話的なページで求められるミックス、フィルター、合成である。録音を一曲流すだけでは、プレーヤーが動くたびに音の方向を変えることはできない。グラフなら、小さな処理部品を異なる順序で並べ、場面ごとに音の作り方を変えられる。

部品にはそれぞれ仕事がある。AudioContextがグラフの場を用意し、音源ノードが材料を出す。gainノードは音量を変え、フィルターは周波数を加工し、delayノードは時間差を加える。解析ノードの情報は音の可視化に使え、destinationノードが聞こえる出力の終点になる。左右のチャンネルを分けたり再びまとめたりするノードも草案にあった。一つの部品が曲全体を知る必要はない。音の形は、結び方から生まれる。

時間もまた部品の一つだった。ゲームで画面の衝突から遅れて音が鳴れば、演出ではなく違和感になる。初期のAPIはAudioContextの時間を基準に、音を始めたり止めたりする予定を組めるようにした。ページのJavaScriptは演奏予定を置く。サンプル一つ一つの時刻を主画面の処理だけで追いかける仕事とは分けて考えられていた。

2013年10月10日の作業草案でも、中心はグラフのままだった。これは五度目の公開草案で、共通の言葉を整える作業が続いていたことが分かる。ゲームの複雑な音、対話的なアプリ、ミックスやフィルターが想定された。単純な一曲の再生には、今も再生ボタンがよく働く。新しい仕組みは、利用者の動きに合わせて音を作るページのためのものだった。

2021年6月17日のW3C勧告では、その設計が詳しい楽譜になっている。AudioParamは音量などの値を音声の時間軸に沿って変えられるようにする。OfflineAudioContextは、すぐスピーカーから流さずにグラフをバッファーへ描画できる。アプリは結果を準備し、確かめ、後で使える。音源、処理、時間、出力という骨格は、最初の草案からつながっている。

独自の処理を組み込む場所もAudioWorkletとして定められた。勧告は、主なグラフ側にあるAudioWorkletNodeと、特別な作業空間で処理を行うAudioWorkletProcessorの組を説明する。アプリ固有の効果を加えられる一方、音声を描画する経路には別の時間上の責務がある。仕様が制御用のスレッドと描画用のスレッドを分けて記すのは、画面のメニューが忙しいからといって音符を待たせるわけにいかないからだ。

W3Cの公開履歴は、2011年12月の作業草案から2021年6月の勧告までを示す。この日付だけで各ブラウザーの導入時期や利用者の増減は語れない。読み取れるのは、接続、チャンネル、時刻、処理、出力を共通の仕組みにするまでに、長い仕様作業が必要だったという事実だ。ミキサーはつまみが多いだけでは役に立たない。つないだときに予測できる動きをしてこそ楽器になる。

アプリの余地は広い。ゲームは爆発を特定の方向へ置ける。オンラインの楽器は発振器とフィルターを結べる。教材は解析結果から音を図にできる。ブラウザーは共通の機構を持ち、アプリが各自の譜面を書く。ページの注文は「このファイルを再生して」から「この流れで音を作って」に変わった。

ジュークボックスを捨てる必要はない。一曲を聴くだけなら、あの赤いボタンが最高の操作になる。だが操作に応じて動くオーケストラを一人で担当するには、ボタンの職員数が足りない。Web Audioはミキサーを据え、配線を決める権限をページに与えた。演奏の腕前は、まだ作り手次第である。