OpenAL: Difference between revisions

Content deleted Content added
No edit summary
m Reverted edit by 2409:4051:2E19:71B7:E100:B428:61B3:2B5D (talk) to last version by Comp.arch
 
(17 intermediate revisions by 7 users not shown)
Line 1:
{{Short description|API for rendering audio}}
{{distinguishDistinguish|OpenAI}}
 
{{more citations needed|date=September 2015}}
 
{{Infobox software
|name = OpenAL
Line 22 ⟶ 20:
* "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 was hosted (and largely developed) by [[Creative Technology]] until circa 2012.
 
Since 1.1 (2009), the sample 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 and remains actively maintained and extended.
 
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/* |website=web.archive.org |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.
 
==API structure and functionality==
Line 51:
 
==Supported platforms==
The API is available on the following [[computing platform (computing)|platforms]] and [[Operatingoperating system]]s:<ref>{{cite web|url=http://www.adalin.com/index.html?frame2=product_aeonwave.html|title=OpenAL – Platforms|access-date=May 10, 2012}}</ref> [[Android (operating system)|Android]] (supports [[OpenSL ES]]), [[AmigaOS]] 3.x and 4.x,<ref>{{cite web |url=http://se.aminet.net/dev/lib/openal-soft.readme |title=Archived copy |website=se.aminet.net |access-date=6 June 2022 |archive-url=https://web.archive.org/web/20180316151848/http://se.aminet.net/dev/lib/openal-soft.readme |archive-date=16 March 2018 |url-status=dead}}</ref> [[Bada]], [[BlackBerry 10]],<ref>{{cite web|url=https://github.com/blackberry/OpenAL|title=blackberry/OpenAL 路 GitHub|website=Github.com|access-date=January 14, 2013}}</ref> [[BlackBerry PlayBook]], [[BSD]], [[iOS]] (supports [[Core Audio]]), [[IRIX]], [[Linux]] (supports [[ALSA (Linux)|ALSA]], [[Open Sound System|OSS]], [[PortAudio]] and [[PulseAudio]]), [[Mac OS 8]], [[Mac OS 9]] and [[macOS|Mac OS X]] ([[Core Audio]]), [[Microsoft Windows]] (supports [[DirectSound]], [[Windows Multimedia API]] and Windows Multimedia Device (MMDevice) API), [[MorphOS]], [[OpenBSD]],<ref>{{cite web|url=http://openports.se/audio/openal|title=OpenAL for OpenBSD|access-date=2011-07-18|archive-date=2012-03-18|archive-url=https://web.archive.org/web/20120318180218/http://openports.se/audio/openal|url-status=dead}}</ref> [[Solaris (operating system)|Solaris]], [[QNX]], and [[AROS]].<ref>{{cite web|url=http://aros-exec.org/modules/newbb/viewtopic.php?post_id=33758|title=OpenAL/alut/ogg/vorbis [Forum – Development (General)|publisher=AROS-Exec|access-date=June 16, 2013|archive-date=May 26, 2013|archive-url=https://web.archive.org/web/20130526135417/http://aros-exec.org/modules/newbb/viewtopic.php?post_id=33758|url-status=dead}}</ref>
 
Supported gaming devices are for instance: [[GameCube]], [[PlayStation 2]], [[PlayStation 3]], [[Xbox (console)|Xbox]], [[Xbox 360]], [[Wii]], and [[PlayStation Portable]].
Line 115:
: 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 free compatible update/replacement to the now-deprecated and proprietary OpenAL Sample Implementation. OpenAL Soft supports mono, stereo (including HRTF and UHJ), 4-channel, 5.1, 6.1, 7.1, and B-Format output. Ambisonic assets are supported.<ref>{{cite web|url=http://openal-soft.org/|title=OpenAL Soft – Software 3D Audio |publisher=openal-soft.org|access-date=January 4, 2014}}</ref><ref>{{cite web|title=OpenAL Soft Git repository|url=http://repo.or.cz/w/openal-soft.git|access-date=December 26, 2013}}</ref>
;AeonWave-OpenAL
: AeonWave-OpenAL is an LGPL-licensed OpenAL emulation layer that takes advantage of the hardware acceleration provided by the [[Proprietary software|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#Performance|Intel Atom N270]]) times faster than either [[#Implementations|OpenAL SI]] or [[#Implementations|OpenAL Soft]] under the same conditions.<ref>{{cite web|url=http://opensource.creative.com/pipermail/openal-devel/2012-May/005903.html|title=&#91;Openal-devel&#93; Announcement: AeonWave-OpenAL 1.1.7 released|date=May 9, 2012|author=Hofman, Erik|access-date=December 9, 2012|quote=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.|url-status=dead|archive-url=https://archive.today/20130119200045/http://opensource.creative.com/pipermail/openal-devel/2012-May/005903.html|archive-date=January 19, 2013}}</ref> By using the [[AeonWave]] library this implementation supports HRTF as well as spatialised surround sound for up to eight speakers.
Line 123:
:* 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.
:* [[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]] &ndash; defines an API similar in some ways to OpenAL
 
==References==
Line 144 ⟶ 146:
 
==External links==
* [https://openal.org/games/ OpenAL official website]
 
* [http://www.openal-soft.org/ OpenAL Soft]
Implementations:
* [http://www.adalin.com/index.html?frame2=product_aeonwave.html AeonWave-OpenAL]
* [httphttps://wwwgithub.com/kcat/openal-soft.org/ OpenAL Soft]
* [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}}
* [httphttps://www.blueripplesoundadalin.com/index.phphtml?targetframe2=technologyproduct_aeonwave.html Rapture3DAeonWave-OpenAL] advanced OpenAL 1.1 driver
* [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) {{Dead link|date=January 2016}}
* [https://github.com/Raulshc/OpenAL-EXT-Repository OpenAL extension repository] (maintained by Raulshc as of 2023; with table of supported extensions per implementation)
* [https://conan.io/center/openal/1.19.1/ OpenAL package] forin Conan, a C++] package manager
 
{{Creative Technology}}
Line 157 ⟶ 164:
[[Category:Computer libraries]]
[[Category:Cross-platform software]]
[[Category:Formerly open-source or free software]]
[[Category:Linux APIs]]
[[Category:Video game engines]]