3DオブジェクトベースオーディオAPIの分類学
いわゆるインスタレーションアートのための"分散型"オーディオAPI - 多数のPCとそれに接続されたスピーカを駆動するためのAPIにはそれなりの需要が有ると考えていて、現状有力な実装も存在しないように見える。
APIデザインはコンテンツの制作に与える影響も大きいので、あらかじめ既存のオーディオAPIを調べておく。
リスナモデル
OpenALを始めとして、殆どのAPIは原点に1人のリスナが居ることを想定している。Atmosにはリスナの概念は無い(オブジェクトの位置は絶対位置となる)。
ゲーム向けのオーディオエンジン(WwiseやADX2)はマルチプレイヤーゲームのために複数のリスナを設定することもできる。
リスナモデルはプログラミングを簡便にするが本質的な差では無いように思える。
物理スケーリング
OpenALは3D位置の単位を設定しない。つまり、音速は無限と仮定されており、ユーザは全てのパラメタを手動で調整する必要が有る。ただし、習慣的に、1.0 = 1メートルを採用することが多いように思える。
物理スケーリングはエフェクトに影響を与える。このため、物理スケーリングをAPIとして与えるのは有益だろう。たとえば、エコーのディレイ等を自動演算するためには物理距離が必要になる。
指向性 / 無指向性
従来3DオーディオAPIと言えば指向性のあるAPIとして実装されてきた。つまり、全てのオーディオオブジェクトはサウンドコーン(sound cone)と呼ばれる円錐を持ち、リスナがその円錐の内部に居る場合にのみ音が聞こえるということになる。
- http://webaudio.github.io/web-audio-api/#sound-cones
- Web Audio APIのSound cone
- http://www.criware.jp/adx2le/docs/windows/atom4u_keys_3dpos.html
- ADX2 LEのサウンドコーン
サウンドコーンはinner angleとouter angleの2種類の角度を持つのが普通で、outer angleは音の減衰を伴う領域を表わす。
Dolby Atmosは無指向性のAPI(コンテンツフォーマット)であり、オーディオオブジェクトは3D位置の他はsizeパラメタのみを持つ。サイズは音の広がりを表わす。
サイズは0 - 100の値を取り、100は全てのスピーカーからの(均等な)出力、0は近接スピーカのみを使用したパンニングとなる。
オブジェクトのサイズの導出はあまり自明でない。いわゆるOpenAL(やWeb Audio)のオブジェクトシステムでは、サイズを表現するための良い方法が無い。
サイズを採用したAPIとしては他にBlueRippleが提案しているTEEMが有る
TEEMはAtmosとは異なりdiffusenessとradiusの2つのパラメタを持つ。radiusは物理サイズ(メートル)を指し、diffusenessが"広がり"を示す。(ただし、diffusenessの定義はあまり判然としない)
インテリアパンニング
ADX2はインテリアパンニングを明示的にサポートしている。これはOpenALには無い。
インテリアパンニングは、スピーカの物理位置より内側へのパンニングを行う。インテリアパンニングされる場合は、2つより多くのスピーカからオブジェクト音が出力されることになる。