Home

このサイトについて

Java言語を使って立体音響を作ってみているサイトです。

売り文句

  自分で作った頭部伝達関数を使えます。
機材があれば自分の頭部伝達関数を測定したデータを使えます。

 ピュアJavaです。
Javaだけで作っているので、他のライブラリが必要になることがありません。
(AIS3DMixerはJava3D用のライブラリなのでJava3Dのインストールが必要です。)

 Java3Dに対応しようとしています(作業中)。
Java3Dで作ったソフトの『SimpleUniverse.createAudioDevice();』を 『SimpleUniverse.getViewer().getView().getPhysicalEnvironment().setAudioDevice(new AIS3DDevice3DL2());』に書き換えるだけで使えます。
(現状ではConeSoundがPointSoundとして処理されます)

 オープンソースです。
MPL Tri-licenceです。

VSTプラグイン


Windows向けのVSTプラグインをGoogleCodeで公開しました

立体音響を作ることができる他のソフトウェア

 自分で調べてみたところ、以下のようなものが見つかりました。

VSTプラグイン
  他にも、OUTPUTとい うサイトのイメージング/パンニング/3Dにそれっぽいものがありました。

Pure Data
  • bin_ambi(GPL) ... Pure Data用のライブラリ。複数音源、ルームシミュレーション、ヘッドトラッキング、HRIRの入れ替えなどができるようです。
Java
  • Ambisonics Player(GPL) … HRTFを使ってマルチチャンネルステレオを再現するソフト。
XNA
※)XNAの 3Dオーディオに関しては、どのような処理を行って立体化しているのかよく分かりませんでした

FAQ

トップページしか見ない人も多いと思うので、FAQをトップページに置いておきます。

どうやって立体音響っぽくしてるの?

  • 頭部インパルス応答の畳み込み
  • ドップラー効果
  • 空気による減衰
  • 両耳間時間差
を計算してそれっぽくしています。
細かく書くと、
  1. 頭部インパルス応答(以降HRIR(HeadRelatedInpulseResponseの略))のデータと、元になる波形データを比べます。
    1. 元データの一番大きく振れた位置とHRIRの一番大きく振れた位置のズレを計算します。これを両耳間時間差とします。
    2. 元データとHRIRの両方をフーリエ変換し、パワースペクトルの比を計算します。これを頭部伝達関数とします。
  2. 空気の温度・湿度・気圧から、音速と空気による減衰の計算に使うパラメーターを計算しておきます
  3. 音源の位置を観測点を中心にした球体座標で取得し、1で作ったデータを直線補完して頭部伝達関数と両耳間時間差を作ります。
  4. 音源の移動量を元に、音源のドップラー効果をリサンプリングで再現します。
  5. フーリエ変換します。
  6. 音源と観測点との間の距離を使って、空気による減衰を再現します。
  7. 3で求めた頭部伝達関数を乗算します。
  8. 逆変換します。
  9. 観測点の移動量を元に、観測点のドップラー効果で再現します。
  10. 3で求めた両耳間時間差だけ音をずらします。

用途は?

CPUの計算速度が十分であればゲームなどに使えると思います。
また、CSS2.1のAppendix AにAuralStyleSheetという音声用のスタイルシートが定義されており、elevationとazimuthという立体音響を意識したプロパティが用意されていますので、そういうブラウザで万が一役に立つ可能性がないとは言い切れません。

ライセンスは?

 基本的にはMPL Tri-licenceです。
また、このサイト(sites.google.com/site/3daudioinjava/)に書かれたテキストはCreative Commons(表示-非営利-改変禁止 2.1 日本)Licenseです。
不明な点があればh.10x64@gmail.comへお問い合わせください。

頭部インパルス応答のライセンスは?

MIT Media Lab.このページでKEMARダミーヘッドマイクロフォンを使った頭部インパルス応答のデータが配布されていますので、利用させていただきました。
データの利用条件を以下に引用します。

 This data is Copyright 1994 by the MIT Media Laboratory. It is provided free with no restrictions on use, provided the authors are cited when the data is used in any research or commercial application.

 (エキサイト訳:このデータはMITメディアラボによるCopyright1994です。 使用の制限のない無料でそれを提供します、データがどんな研究や市販のアプリケーションでも使用されるとき、作者が引用されるなら。)

 デフォルトで使用されるのはこのMIT製のデータです。
 AudioInputStream3DクラスでデフォルトのHRTFファイルを読み込むとコンソールにコピーライトが表示されるようになっています。

MIT以外の頭部インパルス応答はないの?

  IrcamLISTEN HRTF DATABASEというページには人間の頭部を利用して測定した多数のデータがダウンロード可能な状態で置いてあります。
ライセンスや利用条件を確認することができなかったため、ここのデータは使いませんでした。
ですが、配布されているzipデータを個人的に楽しむために利用する分にはおそらく問題ないのではないかと思います。
  また、HRTFのデータを保存するためのXMLを定義するスキーマを用意しましたので、自分で測定した頭部インパルス応答を利用することもできます。