LWJGLを試してみます

いま僕が作りたいと考えているオーディオ・アプリケーションについて、ざっと要件をあげてみると次のようになります。

  1. クロス・プラットフォームであること*1
    • とりあえずはデスクトップ機で動けばいいのですが、Mac OS Xをメインに、可能であればWindowsでも大きな修正なく動くと嬉しいです。
    • ゆくゆくはiPhoneAndroidでも動かしたいものの、おそらく見た目も機能も別物になるでしょう。そうすると最初から書き直しになると思うので、今のところそこまでプラットフォームは広げません。
  2. リアルタイムでエフェクトがかけられること
    • エフェクトがかけられなくても構いませんが、そうするとあらかじめエフェクトをかけた音ファイルを用意しておかないといけないので、ディスク容量をかなり食うことになります。
  3. キー入力やタイマー処理があること
  4. 似た使い勝手でグラフィックスも扱えるとうれしい
  5. RDBMSに記録を残したい

まずクロス・プラットフォームであることが第1の要件なのでCore Audioは使えません。また、キー入力やタイマー処理もできるものと言うと、ゲーム向けに作られたもののほうが有利。先日のエントリーで挙げたライブラリのうちから選んでみると、SDLLWGJL(LWGJLにはOpenALのラッパーが含まれている)が候補に残りました。

このところClojureが楽しいので、Clojureと連携できるJavaで使えるもののほうが魅力的です。Javaとより相性の良さそうなLWGJLを試してみることにしました。チュートリアルを読んだ限りでは、JavaSoundを使うよりかなり少ないコード量でいろいろできるようです。

一方、SDLの魅力は多くの言語へのバインディングが用意されていること。CやJavaは当たり前で、ErlangOCamlまでSDLを呼び出せる。これはスゴイ。

*1:「クロス・プラットフォームで作る」というのは「機能的にはネイティブにかなわない」ということでもあるので、プラットフォーム限定したほうが良い場合も多いです。今回は“狭く深く”ではなく“広く浅く”使えることを目指したいのでクロス・プラットフォームです。