Content deleted Content added
link 3D audio effect in lead |
Mindmatrix (talk | contribs) m Reverted edit by 2409:4051:2E19:71B7:E100:B428:61B3:2B5D (talk) to last version by Comp.arch |
||
(47 intermediate revisions by 26 users not shown) | |||
Line 1:
{{Short description|API for rendering audio}}
{{
{{more citations needed|date=September 2015}}
{{Infobox software
|name = OpenAL
|logo = OpenAL logo.
|logo size = 200px
|logo caption =
Line 12 ⟶ 11:
|author = [[Loki Software]]
|developer = [[Creative Technology]]
|latest release version = 1.1 (installer 2.1.0.0)<ref>{{cite web |title=
|latest release date = {{Start date and age|2009|11}}
|programming language = [[C (programming language)|C]]
|operating system = {{No wrap|15 operating systems<br />See: [[#Supported platforms|Supported platforms]]}}
|genre = [[Application programming interface]]
|license =
* "OpenAL" trademark: unclear, held by Creative Labs, Inc.
}}
'''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]]. OpenAL is an environmental [[3D audio effect|3D audio]] library, which can add realism to a game by simulating [[Acoustic attenuation|attenuation]] (degradation of sound over distance), the [[Doppler effect]] (change in frequency as a result of motion), and material densities.
OpenAL aimed to originally be an [[open standard]] and [[open-source software|open-source]] replacement for [[proprietary software|proprietary]] (and generally incompatible with one another) 3D audio APIs such as [[DirectSound]] and [[Core Audio]], though in practice has largely been implemented on various platforms as a [[Wrapper library|wrapper]] around said proprietary APIs or as a proprietary and vendor-specific fork. While the [[reference implementation]] later became proprietary and unmaintained, there are open source implementations such as [[#Implementations|OpenAL Soft]] available. ==History==
OpenAL was originally developed in 2000 by [[Loki Software]] to help them in their business of [[porting]] [[Microsoft Windows|Windows]] games to [[Linux]].<ref>{{cite press release |url=http://linux.omnipotent.net/article.php?article_id=7626 |title=Press release with regards to OpenAL |access-date=2011-07-18 |archive-date=2016-03-06 |archive-url=https://web.archive.org/web/20160306095132/http://linux.omnipotent.net/article.php?article_id=7626 |url-status=dead }}</ref> After the demise of Loki, the project was maintained for a time by the [[free software community|free software]]/[[open source community]], and implemented on [[NVIDIA]] nForce sound cards and motherboards. It
Since 1.1 (2009), the sample implementation by Creative has turned proprietary
While the OpenAL charter says that there will be an "Architecture Review Board" (ARB) modeled on the OpenGL ARB,{{cn|date=April 2023}} no such organization has ever been formed and the OpenAL specification is generally handled and discussed via email on its public mailing list.
The original mailing list, openal-devel hosted by Creative, ran from March 2003 to circa August 2012.<ref>{{cite web |title=Wayback Machine prefix query: openal-devel archive |url=https://web.archive.org/web/*/http://opensource.creative.com/pipermail/openal-devel/* |access-date=25 April 2023}}</ref> Ryan C. Gordon, a Loki veteran who went on to develop [[Simple DirectMedia Layer]], started a new mailing list and website at OpenAL.org in January 2014.<ref>{{cite web |title=The openal January 2014 Archive by thread |url=https://openal.org/pipermail/openal/2014-January/thread.html |website=openal.org}}</ref> As of February 2023, the list remains in use.
▲Since 1.1, the implementation by Creative has turned proprietary {{Citation needed|reason=Creative's SVN OpenAL source files dated from 2006 are marked with LGPL.|date=November 2021}}, with the last releases in free licenses still accessible through the project's [[Apache Subversion|Subversion]] [[source code repository]]. However, [[#Implementations|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 [[Pulse-code modulation|PCM]] format, either 8- or [[16-bit]], in either [[monaural]] or [[stereo]] format. The rendering engine performs all necessary calculations
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.
Line 46 ⟶ 51:
==Supported platforms==
The API is available on the following [[computing platform
Supported gaming devices are for instance: [[GameCube]], [[PlayStation 2]], [[PlayStation 3]], [[Xbox (console)|Xbox]], [[Xbox 360]], [[Wii]], and [[PlayStation Portable]].
Line 57 ⟶ 62:
* ''[[0 A.D. (video game)|0 A.D.]]''<ref>{{cite web|title=Overview |url=http://www.play0ad.com/page.php?c=46 |work=0 A.D. Game Info |publisher=Wildfire Games |access-date=December 5, 2012 |archive-url=https://web.archive.org/web/20130926184253/http://play0ad.com/2012/12/ |archive-date=September 26, 2013 |url-status=dead }}</ref>
* ''[[Alpha Protocol]]''
* ''[[America's Army: Operations]]''<ref name="openalwiki">{{cite web|title=Games |website=OpenAL
*''[[American Truck Simulator]]''<ref name="scsforum">{{cite web|url=https://forum.scssoft.com/viewtopic.php?t=273087#p1160746|title=SCS Software forum|access-date=June 5, 2019|archive-url=https://web.archive.org/web/20190605144436/https://forum.scssoft.com/viewtopic.php?t=273087|archive-date=June 5, 2019|url-status=live}}</ref>
*''[[Amnesia: The Dark Descent]]''<ref>{{cite web|url=http://www.moddb.com/engines/hpl|title=HPL Engine – Mod DB|access-date=November 20, 2012}}</ref>
Line 65 ⟶ 70:
*''[[Battlefield 2142]]''{{r|openalwiki}}
*''[[BioShock]]''{{r|openalwiki}}
*''[[Bit.Trip]]''<ref>{{cite web|url=https://www.pcgamingwiki.com/wiki/Bit.Trip_Runner#Middleware|title=Bit.Trip Runner - PCGamingWiki|access-date=October 8, 2022}}</ref>
*''[[Colin McRae: Dirt|Colin McRae: DiRT]]''{{r|openalwiki}}
*''[[Doom 3]]''{{r|openalwiki}}
Line 74 ⟶ 80:
*''[[Mari0]]''{{r|openalwiki}}
*''[[Mass Effect (video game)]]''<ref>{{cite web|url=http://www.blueripplesound.com/compatible-games |title=Blue Ripple Sound | access-date=September 23, 2017}}</ref>
*''[[Minecraft]]'' (through [[LWJGL]])
*''[[OpenArena]]''{{r|openalwiki}}
*''[[Orbz]]''{{r|openalwiki}}
Line 102 ⟶ 109:
*Vanda Engine<ref>{{cite web|url=http://vandaengine.org/features/|title=Vanda Engine}}</ref> – uses OpenAL 1.1 to simulate 2D and 3D sounds
*[[Croquet Project]]<ref>{{Cite book|title=Jam Tomorrow: Collaborative Music Generation in Croquet Using OpenAL - IEEE Conference Publication|pages=73–78|doi=10.1109/C5.2006.22|chapter=Jam Tomorrow: Collaborative Music Generation in Croquet Using OpenAL|year=2006|last1=Thalmann|first1=Florian|last2=Gaelli|first2=Markus|isbn=978-0-7695-2563-1|citeseerx=10.1.1.67.8139|s2cid=5577203}}</ref>
* Bino<ref>{{cite web|url=http://bino3d.org/|title=Bino: free 3D video player - About|first=Martin
==Implementations==
;OpenAL SI
;OpenAL Soft
;AeonWave-OpenAL
;Rapture3D OpenAL Driver
:* 32bit floating point audio path.
:* High quality sample rate conversion (used for various purposes including Doppler shift).
:* High quality effects and filters.
:* 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.
:* [[Ambisonics#Higher-order Ambisonics|Higher-order Ambisonics]] (HOA) bus running at up to fourth order.
;Apple OpenAL<ref name=apple-oss>{{Cite web|url=https://opensource.apple.com/tarballs/OpenAL/|title=Source Browser}}</ref>
:Apple ships an implementation of OpenAL in macOS and iOS. It is a very thin layer over the 3D Mixer (kAudioUnitSubType_3DMixer) feature in the operating system. This implementation was originally written by Ryan C. Gordon for Altivec Mac OS X systems.<ref>{{cite web |title=An OpenAL implementation for MacOS X |url=https://icculus.org/al_osx/ |website=icculus.org}}</ref>
;MojoAL
:Tiny (single-file), full OpenAL 1.1 implementation built on top of [[Simple DirectMedia Layer|SDL2]] by Ryan C. Gordon.<ref>{{cite web |title=MojoAL |url=https://icculus.org/mojoAL/ |website=icculus.org}}</ref>
==See also==
{{Portal|Free and open-source software}}
* [[OpenCL]]
* [[Khronos Group|OpenML]]
* [[OpenMAX AL]]
* [[FMOD]]
* [[Java OpenAL]]
* [[Irrlicht engine extensions#irrKlang|irrKlang]]
* [[Lightweight Java Game Library]]
* [[Web Audio]] – defines an API similar in some ways to OpenAL
==References==
Line 134 ⟶ 146:
==External links==
* [https://openal.org
* [http://www.openal-soft.org/ OpenAL Soft]▼
Implementations:
* [https://web.archive.org/web/20040803034419/http://www.devmaster.net/articles.php?catID=6 DevMaster.net OpenAL Tutorials] (Note: these tutorials are showing their age slightly by, for instance, using deprecated functions such as alutLoadWAVFile) {{Dead link|date=January 2016}}▼
* [
* [https://www.blueripplesound.com/index.php?target=technology Rapture3D] advanced OpenAL 1.1 driver
* [https://conan.io/center/openal/1.19.1/ OpenAL package for C++]▼
Developer resources:
▲* [https://web.archive.org/web/20040803034419/http://www.devmaster.net/articles.php?catID=6 DevMaster.net OpenAL Tutorials] (Note: these tutorials are showing their age slightly by, for instance, using deprecated functions such as alutLoadWAVFile)
* [https://github.com/Raulshc/OpenAL-EXT-Repository OpenAL extension repository] (maintained by Raulshc as of 2023; with table of supported extensions per implementation)
{{Creative Technology}}
Line 147 ⟶ 164:
[[Category:Computer libraries]]
[[Category:Cross-platform software]]
[[Category:Formerly open-source or free software]]
[[Category:Linux APIs]]
[[Category:Video game engines]]
|