Az OpenAL-lel való több, mint 3 éves kapcsolatom úgy tűnik végre "révbe ért" a napokban. Röviden arról, hogy miért éri meg használni:
- cross-platform - sok platformra elérhető (valamilyen formában)
- OpenGL-szerű a szintaxisa
- 3D hangokat (és akár térhangzást is) kezel
Tudni kell azonban, hogy mivel a szabvány története meglehetősen szövevényes az elérhető implementációk körül nem egyértelmű a helyzet. Tudomásom szerint Windows alatt megszűnt a hivatalos support (a Creative Labs végezte ezt a feladatot). Ámde az Apple (még) támogatja így MacOS ill. iOS alatt nincs probléma.
Lehetséges alternatíva az OpenAL Community implementációja az OpenAL Soft, ami nyílt forrású viszont LGPL licensszel rendelkezik (ez azt jelenti, hogy jogi következmények nélkül csak külön binárisként (.dll, .so) lehet használni). Nagy előnye viszont, hogy sok API-hoz készült támogatás - jelenleg (1.16.0) ez a szám 15. Ezek között szerepel DirectSound (Windows), Alsa (Linux), OpenSL ES (Android) és Core Audio (Mac) is.
Vagyis amennyiben sikerül megküzdeni a forráskód lefordításával (szerencsére gondosan összeállított cmake projekt is tartozik a forráshoz) gazdagabbak leszünk Windows, Linux és Android OpenAL driverrel / wrapperrel.
Így számomra a legfontosabb platformokon - Windows (PC), Linux (PC), Android, MacOS ill. iOS - használhatóvá vált az OpenAL (Win, Android, MacOS letesztelve) és nem lesz többé gond az OpenAL32.dll-el.
Most pedig következzen a "hab a tortán" a HRTF (head-related transfer function), amit az OpenAL is (jó eséllyel) támogat tekintve, hogy 3D-s koordináta-rendszerben dolgozik.
Ennek segítségével mesterséges térhangzás érhető el vagyis érzékeltetni tudjuk (térben elhelyezett) hangok térbeliségét. Pontosabban ez egy olyan függvény amivel kiszámítjuk, hogy az adott hangot hogyan hallaná valós térbeli szituáció esetén a bal ill. jobb fülünk. Mivel a kapott eredmény a két fülhöz kiszámított "adat" ezért az így előállított mesterséges térhangzáshoz elegendő (sőt mi több ajánlott) egy sztereó fülhallgató ( HRTF nélkül csak a bal-jobb irányokat érzékelnénk HRTF-fel viszont elöl-hátul (jó esetben még a fel-le) irányokat is).
Fontos, hogy a függvény működéséhez figyelembe kell venni az anatómiai tényezőket (fülek formája, helyzete, koponya mérete stb).
Az OpenAL Soft biztosan támogatja a HRTF-t mindössze egy, a működéséhez szükséges adatbázist igényel, amely tárolja a HRTF számításához szükséges adatokat. Az anatómiai tényezők hatása ebben az adatbázisban jelenik meg. Szerencsére ilyen adatbázist akár magunknak is tudunk készíteni az itt található minták és az OpenAL Soft-hoz adott alkalmazás (ill. a fülünk) segítségével.
Megjegyzés: természetesen nem ez az egyetlen módja, hogy térhangzást hozzunk létre OpenAL-lel.
Androidon az OpenAL Soft
Mac-en pedig a "gyári" OpenAL