# OpenAL

OpenAL (Open Audio Library) est une bibliothèque logicielle multiplate-forme fournissant une interface de programmation (API) audio 3D dédiée principalement aux jeux vidéo, mais aussi à d'autres applications audio. Elle a été principalement développée par Loki Software et Creative Labs. Au contraire d'autres bibliothèques similaires, telles DirectSound de Microsoft, EAX de Creative Labs et A3D de Aureal, OpenAL a pour vocation de fournir une API plus standard quelles que soient les plates-formes, à l'instar d'OpenGL.

## Historique

L'API est à l'origine distribuée selon les termes de la licence publique générale limitée GNU pour la plupart des plates-formes, malgré l'utilisation de certains pilotes propriétaires (notamment ceux des Xbox et Xbox 360) ou spécifiques aux cartes son Creative Labs sous Windows.

## Principale utilisation

En 2005, la bibliothèque existe et fonctionne sous Mac OS 8 et Mac OS 9 (Sound Manager), Mac OS X (Core Audio), Linux (OSS, ALSA), BSD, Solaris, Irix, Windows (MMSYSTEM, DirectSound, DirectSound3D…), Xbox, Xbox 360. Les développeurs précisent qu'elle fonctionne sur d'autres plates-formes (comme BeOS) mais dans des versions qui ne sont pas publiées car en développement.
Des moteurs de jeu connus utilisent OpenAL, comme ceux de id Software (Doom 3, Jedi Knight 2, Jedi Knight: Jedi Academy, Quake 4) ou le Unreal engine (Unreal 2, Unreal Tournament 2003, Unreal Tournament 2004, Postal 2, America's Army: Operations, Hitman 2: Silent Assassin) ; ou d'autres comme Freedom Fighters ou Psychonauts. Ces utilisations professionnelles permettent de dire que son utilisation est largement acceptée par les développeurs de jeux vidéo.

## Principe

La bibliothèque permet de modéliser un ensemble de sources sonores se déplaçant dans un espace en 3D ainsi que l'auditeur placé dans ce même espace. Des modifications sur les sources peuvent être ajoutées, comme de l'écho ou autres effets sonores. La bibliothèque peut alors calculer le rendu final, en tirant parti des accélérations des cartes audio récentes.
Les spécifications sont séparées en deux : d'une part, le noyau de l'interface (core API) constitué des fonctions accessibles de OpenAL, d'autre part le ALC API (pour Audio Library contexts) qui fournit des fonctions bas niveau. L'ALC permet ainsi de séparer les fonctions de l'API du dispositif qui réalise le rendu final, que ce soit une carte électronique, un démon, un driver, ou même un service. Il facilite l'utilisation de différents dispositifs coexistant sur un même système, en les énumérant et en se les attribuant, permet de connaître les extensions présentes sur le système, ainsi qu'un moyen d'accéder à l'entrée microphone si elle existe.
Une partie des sources est maintenue par le constructeur Creative Labs, mais la bibliothèque est prévue pour accueillir les spécificités propres de chacun des autres constructeurs et de leurs différentes cartes audio, par le biais d'extensions à l'API. Après un certain temps, ces fonctions peuvent même devenir des fonctions standard de l'API. Entre les deux, les extensions peuvent être promues ARB (Architecture Review Board), ce qui permet de savoir lesquelles seront maintenues dans les versions futures de la bibliothèque.

## Comparaison technique

La version 1.0 de OpenAL, publiée par Loki Software en juin 2000, met en application la majeure partie des fonctionnalités de DirectSound (atténuation de distance, effet Doppler), mais dévie dans quelques détails (aucun MUTE ou CLAMP MAX_DISTANCE, une distance de référence à la place de MIN_DISTANCE, l'effet Doppler est calculé en indiquant la vitesse de référence et un facteur d'accélération initial). La réverbération et d'autres extensions comme l'occlusion et l'obstruction sonore définies dans I3DL2 (Interactive 3D Audio Level 2) et mises en application par exemple dans EAX ne font pas encore partie des spécifications, mais sont censées être prises en charge par les prochaines versions. Les traitements du signal basé sur des formes géométriques comme le propose A3D ne sont pas inclus et ne sont pas prévus actuellement.
La version 1.1, publiée en juin 2005, gomme les différences citées, qui existaient avec DirectSound3D.