OpenAL
Original author(s) | Loki Software |
---|---|
Developer(s) | Creative Technology |
Stable release | 1.1 [1] / June 2005 |
Operating system |
15 operating systems See: Supported platforms |
Type | Application programming interface |
License | BSD in early versions,[2] LGPL before v1.1, Proprietary since v1.1 |
OpenAL (Open Audio Library) is a cross-platform audio application programming interface (API). It is designed for efficient rendering of multichannel three dimensional positional audio. Its API style and conventions deliberately resemble those of OpenGL. Early versions of the framework were open source software, but the later revisions are proprietary.
History
OpenAL was originally developed in 2000 by Loki Software to help them in their business of porting Windows games to Linux. After the demise of Loki, the project was maintained for a time by the free software/open source community, and implemented on NVIDIA nForce sound cards and motherboards. It is now hosted (and largely developed) by Creative Technology with on-going support from Apple, Blue Ripple Sound, and free software, open-source enthusiasts.[3]
While the OpenAL charter says that there will be an "Architecture Review Board" (ARB) modeled on the OpenGL ARB, no such organization has ever been formed and the OpenAL specification is generally handled and discussed via email on its public mailing list.
Since 1.1, the implementation by Creative has turned proprietary, with the last releases in free licenses still accessible through the project's Subversion source-code repository. However, OpenAL Soft is a widely used open source alternative.
API structure and functionality
The general functionality of OpenAL is encoded in source objects, audio buffers and a single listener. A source object contains a pointer to a buffer, the velocity, position and direction of the sound, and the intensity of the sound. The listener object contains the velocity, position and direction of the listener, and the general gain applied to all sound. Buffers contain audio data in PCM format, either 8- or 16-bit, in either monaural or stereo format. The rendering engine performs all necessary calculations as far as distance attenuation, Doppler effect, etc.
The net result of all of this for the end user is that in a properly written OpenAL application, sounds behave quite naturally as the user moves through the three-dimensional space of the virtual world. From a programmer's perspective, very little additional work is required to make this happen in an existing OpenGL-based 3D graphical application.
Unlike the OpenGL specification, the OpenAL specification includes two subsections of the API: the core consisting of the actual OpenAL function calls, and the ALC (Audio Library Context) API which is used to manage rendering contexts, resource usage and locking in a cross platform manner. There is also an 'ALUT' (Audio Library Utility Tooklit) library that provides higher level 'convenience' functions — exactly analogous to OpenGL's 'GLUT'.
In order to provide additional functionality in the future, OpenAL utilizes an extension mechanism. Individual vendors are thereby able to include their own extensions into distributions of OpenAL, commonly for the purpose of exposing additional functionality on their proprietary hardware. Extensions can be promoted to ARB (Architecture Review Board) status, indicating a standard extension which will be maintained for backwards compatibility. ARB extensions have the prospect of being added to the core API after a period of time.
For advanced digital signal processing and hardware-accelerated sound effects, the EFX (Effects Extension) or environmental audio extensions (EAX) can be used.
Disadvantages
The single listener model in OpenAL is tailored to a single human user and is not fit for artificial intelligence or robotic simulations or multiple human participants as in collaborative musical performances.[4] In these cases a multiple listener model is required. OpenAL also fails to take into account sound propagation delays (the speed of sound is used for the Doppler effect only). The distance to a sound source only translates into an amplitude effect (attenuation) and not a delay. Hence OpenAL cannot be used for time difference of arrival calculations unless that functionality is added in separately.
Supported platforms
The API is available on the following platforms:
- Android (supports OpenSL ES)
- AmigaOS 3.x
- Bada
- BlackBerry 10 [6]
- BlackBerry PlayBook
- BSD
- iOS (supports Core Audio)
- IRIX
- Linux (supports ALSA, OSS, PortAudio and PulseAudio)
- Mac OS 8, Mac OS 9 and Mac OS X (Core Audio)
- Microsoft Windows (supports DirectSound, Windows Multimedia API and Windows Multimedia Device (MMDevice) API)
- MorphOS
- OpenBSD[7]
- Solaris
- QNX
- AROS [8]
Gaming devices:
Applications
Games
According to Creative Labs, the following video games use OpenAL:[9]
- 0 A.D.[10]
- America's Army
- Amnesia: The Dark Descent[11]
- Armed Assault
- Battlefield 2
- Battlefield 2142
- Broken Sword 5: The Serpent's Curse
- Bioshock
- Colin McRae: DiRT
- Dead Hungry Diner
- DiRT 2
- Doom 3
- Enemy Territory: Quake Wars
- Euro Truck Simulator 2
- FlightGear
- Freedom Fighters
- Hitman
- IHF Handball Challenge
- ioquake3[12]
- Jedi Knight II: Jedi Outcast
- Jedi Knight: Jedi Academy
- Kane & Lynch 2: Dog Days
- Kane & Lynch: Dead Men
- Minecraft
- Mirror's Edge
- OpenArena
- Osmos
- Penumbra: Black Plague
- Postal²
- Prey
- Psychonauts
- Quake 4
- Race Driver: GRID
- Regnum Online
- Running With Rifles[13]
- S.T.A.L.K.E.R.
- Tremulous
- Unreal II: The Awakening
- Unreal Tournament 2003
- Unreal Tournament 2004
- Unreal Tournament 3
- War§ow
- Warzone 2100
- Wolfenstein
- Wurm Online
Other applications
- Blender - 3D modelling and rendering tool uses OpenAL for its built-in game engine.
- 3DMark06 - Gamer's benchmarking tool.
- Dolphin (emulator) - Gamecube and Wii emulator
- Vanda Engine - Vanda Engine uses OpenAL 1.1 to simulate 2D and 3D sounds.
Implementations
- OpenAL SI
- The OpenAL Sample Implementation is the original implementation, from Loki, and is not currently maintained.
- OpenAL Soft
- OpenAL Soft is an LGPL-licensed, cross-platform, software implementation. The library is meant as a compatible update/replacement to the deprecated OpenAL Sample Implementation, as well as a free alternative to the now-proprietary OpenAL. OpenAL Soft supports mono, stereo, 4-channel, 5.1, 6.1, and 7.1 output.[14][15]
- AeonWave-OpenAL
- AeonWave-OpenAL is an LGPL-licensed OpenAL emulation layer that takes advantage of the hardware acceleration provided by the non-free but low cost AeonWave 4D-audio library for Linux and Windows made by Adalin B.V.. The author claims that AeonWave-OpenAL implementation renders 3D audio five (on an AMD Athlon 64 X2) to seven (on an Intel Atom N270) times faster than either OpenAL SI or OpenAL Soft under the same conditions.[16] By using the AeonWave library this implementation supports HRTF as well as spatialised surround sound for up to eight speakers.
- Rapture3D OpenAL Driver
- The Rapture3D OpenAL Driver is a non-free, commercial, Windows only, software implementation made by Blue Ripple Sound. The library is intended as a high performance drop-in replacement for other implementations. It features:[17]
- 32bit floating point audio path.
- High quality sample rate conversion (used for various purposes including Doppler shift).
- High quality effects and filters.
- Directional sound sources.
- Support for multi-channel sound sources (including assets encoded using Ambisonics).
- The only limit on the number of sources or effects is CPU power, can render hundreds of sound sources and multiple effects on relatively old hardware.
- Higher-order Ambisonics (HOA) bus running at up to fourth order.
See also
- OpenCL
- OpenGL
- OpenSL ES
- OpenML
- OpenMAX AL
- Environmental audio extensions
- FMOD
- Java OpenAL
- irrKlang
- Lightweight Java Game Library
References
- ↑ "Downloads". OpenAL. Creative Labs. Retrieved 31 May 2013.
- ↑ OpenAL License
- ↑ Press release with regards to OpenAL
- ↑ Wozniewski, Mike; Settel, Zack; Cooperstock, Jeremy (2007), "User-specific audio rendering and steerable sound for distributed virtual environments", Proceedings of International conference on auditory displays (ICAD).
- ↑ OpenAL - Platforms
- ↑ "blackberry/OpenAL 路 GitHub". Github.com. Retrieved 2013-06-16.
- ↑ OpenAL for OpenBSD
- ↑ "OpenAL/alut/ogg/vorbis [Forum - Development (General)". AROS-Exec. Retrieved 2013-06-16.
- ↑ "Games". Creative Labs. Retrieved 4 November 2012.
- ↑ "Overview". 0 A.D. Game Info. Wildfire Games. Retrieved 5 December 2012.
- ↑ HPL Engine - Mod DB
- ↑ ioquake3 website
- ↑ "Modulaatio Games"
- ↑ "OpenAL Soft - Software 3D Audio". Kcat.strangesoft.net. Retrieved 2013-06-16.
- ↑ "OpenAL Soft Git repository". Retrieved 26 December 2013.
- ↑ Hofman, Erik (May 9, 2012). "[Openal-devel] Announcement: AeonWave-OpenAL 1.1.7 released". Retrieved 2012-12-30. "Test have shown that AeonWave-OpenAL renders audio five times faster (on an AMD Athlon-64 X2 processor) and up to seven times faster (on an Intel Atom-N270 processor) than both OpenAL-Soft and OpenAL-Sample. Rendering 32 sounds on the Atom-N270 (the maximum for OpenAL-Soft) saves 1 Watt of continuous power consumption according to powertop."
- ↑ "Developers". Blue Ripple Sound Limited. 2009. Retrieved 2010-06-01.
External links
- OpenAL Soft
- AeonWave-OpenAL
- DevMaster.net OpenAL Tutorials (Note: these tutorials are showing their age slightly by, for instance, using deprecated functions such as alutLoadWAVFile)
- Rapture3D advanced OpenAL 1.1 driver
|