惰性Log

技術系の話題を中心に書いています

OpenAL実装ライブラリ、MojoAL

オーディオAPIとして有名なOpenALは、扱いやすくて人気があるがライセンスがLGPLなので扱いが難しい。
そこで近年、zlibライセンスで開発されているオープンソースのSDL2上でOpenALAPIが実装された。
開発したのはSDLの製作者でもあるRyan C Gordon氏。
使用するにはSDL2.0.6以降のオーディオAPIが必要となる。

icculus.org

SDL2の機能を使用しているため、対応している音声フォーマットはwavファイルのみである。 OpenAL自体はフォーマットの規定をしていない。何らかの形で音声データを読み込んで渡すだけである。 この実装の特徴は、SDL2に対応したプラットフォームならどこでも使える点(OpenAL自体移植されまくっているが、SDL2もモバイルからWebにゲーム機まで色々)とスレッドセーフな点だと思われる。
オーディオについて詳しくないので、詳細は上記のホームページとソースコードのコメントを読む方が良い。

3Dサウンドを単にミキシングするだけの私にとってはFMODなどのオーディオエンジンとか使うよりも敷居が低いし扱いやすいのでとてもありがたいライブラリ。

追記:  AL_ORIENTATIONでListenerの向きを変更できるはずだが、音源のLRがスムーズに切り替わらない。
SDL2のオーディオAPIか、OSか、ドライバか、はたまたMojoAL自体の問題だと思われるが、あまり使えそうにない。なお、純正のOpenAL実装で試したところこちらは上手く鳴ったので、プログラム側の問題ではないと思われる。