De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

OpenAL ( Open Audio Library ) es una interfaz de programación de aplicaciones de audio (API) multiplataforma . Está diseñado para la reproducción eficiente de audio posicional tridimensional multicanal. Su estilo de API y sus convenciones se parecen deliberadamente a las de OpenGL . OpenAL es una biblioteca de audio ambiental en 3D, que puede agregar realismo a un juego al simular la atenuación (degradación del sonido a lo largo de la distancia), el efecto Doppler (cambio de frecuencia como resultado del movimiento) y las densidades de los materiales. OpenAL pretendía ser originalmente un estándar abierto y un reemplazo de código abierto para propietarios(y generalmente incompatibles entre sí) API de audio 3D como DirectSound y Core Audio , aunque en la práctica se ha implementado en gran medida en varias plataformas como un envoltorio alrededor de dichas API propietarias o como una bifurcación propietaria y específica del proveedor. Si bien la implementación de referencia más tarde se convirtió en propietaria, existen implementaciones de código abierto como OpenAL Soft disponibles.

Historia [ editar ]

OpenAL fue desarrollado originalmente en 2000 por Loki Software para ayudarlos en su negocio de portar juegos de Windows a Linux . [3] Después de la desaparición de Loki, el proyecto fue mantenido durante un tiempo por la comunidad de software libre / código abierto y se implementó en tarjetas de sonido y placas base NVIDIA nForce. Ahora está alojado (y desarrollado en gran parte) por Creative Technology con el apoyo continuo de Apple , [4] Blue Ripple Sound a través de su Rapture3D OpenAL Driver, [5] y desarrolladores individuales de código abierto.

Si bien la carta de OpenAL dice que habrá una "Junta de Revisión de Arquitectura" (ARB) modelada en la ARB de OpenGL, nunca se ha formado tal organización y la especificación de OpenAL generalmente se maneja y discute por correo electrónico en su lista de correo pública.

Desde la versión 1.1, la implementación de Creative se ha convertido en propietaria, y las últimas versiones en licencias gratuitas aún están accesibles a través del repositorio de código fuente de Subversion del proyecto . Sin embargo, OpenAL Soft es una alternativa de código abierto ampliamente utilizada.

Estructura y funcionalidad de la API [ editar ]

La funcionalidad general de OpenAL está codificada en objetos fuente , búferes de audio y un solo oyente . Un objeto fuente contiene un puntero a un búfer, la velocidad, posición y dirección del sonido y la intensidad del sonido. El objeto del oyente contiene la velocidad, la posición y la dirección del oyente y la ganancia general aplicada a todo el sonido. Los búferes contienen datos de audio en formato PCM , ya sea de 8 o 16 bits , en formato monoaural o estéreo . El motor de renderizado realiza todos los cálculos necesarios en cuanto a atenuación de distancia, efecto Doppler , etc.

El resultado neto de todo esto para el usuario final es que en una aplicación OpenAL escrita correctamente, los sonidos se comportan de forma bastante natural a medida que el usuario se mueve a través del espacio tridimensional del mundo virtual. Desde la perspectiva de un programador, se requiere muy poco trabajo adicional para que esto suceda en una aplicación gráfica 3D basada en OpenGL existente.

A diferencia de la especificación OpenGL, la especificación OpenAL incluye dos subsecciones de la API : el núcleo que consta de las llamadas a la función OpenAL reales y la API ALC (Contexto de biblioteca de audio) que se utiliza para administrar contextos de renderizado, uso de recursos y bloqueo en una plataforma cruzada. manera. También hay una biblioteca 'ALUT' (Audio Library Utility Toolkit) que proporciona funciones de 'conveniencia' de nivel superior, exactamente análogas a ' GLUT ' de OpenGL .

Para proporcionar funcionalidad adicional en el futuro, OpenAL utiliza un mecanismo de extensión. De este modo, los proveedores individuales pueden incluir sus propias extensiones en las distribuciones de OpenAL, comúnmente con el propósito de exponer funcionalidades adicionales en su hardware propietario. Las extensiones se pueden promover al estado ARB (Junta de revisión de arquitectura), lo que indica una extensión estándar que se mantendrá para compatibilidad con versiones anteriores. Las extensiones ARB tienen la posibilidad de agregarse a la API principal después de un período de tiempo.

Para un procesamiento avanzado de señales digitales y efectos de sonido acelerados por hardware, se puede utilizar EFX (extensión de efectos) o extensiones de audio ambiental (EAX).

Limitaciones [ editar ]

El modelo de un solo oyente en OpenAL está diseñado para un solo usuario humano y no es apto para inteligencia artificial o simulaciones robóticas o múltiples participantes humanos como en actuaciones musicales colaborativas. [6] En estos casos, se requiere un modelo de escucha múltiple. OpenAL tampoco tiene en cuenta los retrasos en la propagación del sonido (la velocidad del sonido se usa solo para el efecto Doppler ). La distancia a una fuente de sonido solo se traduce en un efecto de amplitud (atenuación) y no en un retraso. Por lo tanto, OpenAL no se puede usar para los cálculos de diferencia de tiempo de llegada a menos que esa funcionalidad se agregue por separado. [7]

Para aprovechar OpenAL a toda velocidad , se necesita una implementación específica de hardware / proveedor y rara vez se publican como código abierto. De hecho, muchas plataformas compatibles implementan OpenAL como un contenedor que simplemente traduce las llamadas a la API de audio nativa y, a menudo, propietaria de la plataforma. En Windows, si no se detecta una implementación específica de un proveedor, recurrirá a la biblioteca contenedora wrap_oal.dll que traduce OpenAL en DirectSound (software genérico) o DirectSound3D (hardware genérico); la eliminación de este último de Windows Vista en adelante ha roto efectivamente la aceleración de hardware genérico en las versiones modernas de Windows. [8] [9]

Plataformas compatibles [ editar ]

La API está disponible en las siguientes plataformas y sistemas operativos : [10] Android (compatible con OpenSL ES ), AmigaOS 3.xy 4.x, [11] Bada , BlackBerry 10 , [12] BlackBerry PlayBook , BSD , iOS (compatible Core Audio ), IRIX , Linux (compatible con ALSA , OSS , PortAudio y PulseAudio ), Mac OS 8 , Mac OS 9 y Mac OS X( Core Audio ), Microsoft Windows (compatible con DirectSound , API de multimedia de Windows y API de dispositivo multimedia de Windows (MMDevice)), MorphOS , OpenBSD , [13] Solaris , QNX y AROS . [14]

Los dispositivos de juego compatibles son, por ejemplo: GameCube , PlayStation 2 , PlayStation 3 , Xbox , Xbox 360 , Wii y PlayStation Portable .

Aplicaciones [ editar ]

Juegos [ editar ]

Se sabe que los siguientes videojuegos utilizan OpenAL:

  • 0 d.C. [15]
  • Protocolo alfa
  • Ejército de Estados Unidos: Operaciones [16]
  • American Truck Simulator [17]
  • Amnesia: El descenso oscuro [18]
  • Asalto armado [16]
  • Puerta de Baldur: Edición mejorada [19]
  • Campo de batalla 2 [16]
  • Campo de batalla 2142 [16]
  • BioShock [16]
  • Colin McRae: DiRT [16]
  • Doom 3 [16]
  • Euro Truck Simulator 2 [17]
  • FlightGear [16]
  • ioquake3 [20]
  • Jedi Knight II: Jedi Outcast [16]
  • Caballero Jedi: Academia Jedi [16]
  • Mari0 [16]
  • Mass Effect (videojuego) [21]
  • OpenArena[16]
  • Orbz[16]
  • Penumbra: Overture[16]
  • Postal 2[16]
  • Prey[16]
  • Psychonauts[16]
  • Quake 4[16]
  • Race Driver: Grid[22]
  • Regnum Online[16]
  • Running With Rifles[23]
  • S.T.A.L.K.E.R.[16]
  • System Shock 2[24]
  • The Dark Mod[16]
  • Tremulous[16]
  • Unreal II: The Awakening[16]
  • Unreal Tournament 2003[16]
  • Unreal Tournament 2004[16]
  • Unreal Tournament 3[16]
  • War§ow[16]
  • Wurm Online[16]

Other applications[edit]

  • Blender – 3D modelling and rendering tool uses OpenAL for its built-in game engine[needs update?]
  • 3DMark06 – Gamer's benchmarking tool
  • Dolphin (emulator) – GameCube and Wii emulator
  • Vanda Engine[25] – uses OpenAL 1.1 to simulate 2D and 3D sounds
  • Croquet Project[26]
  • Bino[27] - Video player software that has support for stereoscopic 3D video and multi-display video

Implementations[edit]

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, 7.1, HRTF, UHJ, and B-Format output.[28][29]
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.[30] 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:[31]
  • 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[edit]

  • OpenCL
  • OpenML
  • OpenMAX AL
  • FMOD
  • Java OpenAL
  • irrKlang
  • Lightweight Java Game Library

References[edit]

  1. ^ "PCGamingWiki downloads". OpenAL. Creative Labs. Archived from the original on December 8, 2017. Retrieved December 7, 2017.
  2. ^ "OpenAL License". Archived from the original on December 30, 2012. Retrieved November 10, 2012.
  3. ^ "Press release with regards to OpenAL" (Press release).
  4. ^ https://opensource.apple.com/tarballs/OpenAL/
  5. ^ http://www.blueripplesound.com/gaming
  6. ^ Wozniewski, Mike; Settel, Zack; Cooperstock, Jeremy (2007), User-specific audio rendering and steerable sound for distributed virtual environments (PDF), retrieved August 5, 2012.
  7. ^ Open Source FPS Game Alien Arena 2009 Released #28412367
  8. ^ Enumeration with OpenAL on Windows
  9. ^ OpenAL® and Windows Vista™
  10. ^ "OpenAL – Platforms". Retrieved May 10, 2012.
  11. ^ http://se.aminet.net/dev/lib/openal-soft.readme[permanent dead link]
  12. ^ "blackberry/OpenAL 路 GitHub". Github.com. Retrieved January 14, 2013.
  13. ^ "OpenAL for OpenBSD".
  14. ^ "OpenAL/alut/ogg/vorbis [Forum – Development (General)". AROS-Exec. Retrieved June 16, 2013.
  15. ^ "Overview". 0 A.D. Game Info. Wildfire Games. Archived from the original on September 26, 2013. Retrieved December 5, 2012.
  16. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab "Games". OpenAL Wiki. Creative Labs. Archived from the original on April 10, 2013.[self-published source?]
  17. ^ a b "SCS Software forum". Archived from the original on June 5, 2019. Retrieved June 5, 2019.
  18. ^ "HPL Engine – Mod DB". Retrieved November 20, 2012.
  19. ^ "Troubleshooting: Reinstall OpenAL : Beamdog". Retrieved May 29, 2014.
  20. ^ "ioquake3 website".
  21. ^ "Blue Ripple Sound". Retrieved September 23, 2017.
  22. ^ "Blue Ripple Sound". Retrieved September 23, 2017.
  23. ^ "Modulaatio Games". Archived from the original on September 6, 2012.
  24. ^ "Compatible OpenAL Games". Blue Ripple Sound.
  25. ^ "Vanda Engine".
  26. ^ Thalmann, Florian; Gaelli, Markus (2006). "Jam Tomorrow: Collaborative Music Generation in Croquet Using OpenAL". Jam Tomorrow: Collaborative Music Generation in Croquet Using OpenAL - IEEE Conference Publication. pp. 73–78. CiteSeerX 10.1.1.67.8139. doi:10.1109/C5.2006.22. ISBN 978-0-7695-2563-1. S2CID 5577203.
  27. ^ [email protected], Martin Lambers. "Bino: free 3D video player - About". bino3d.org.
  28. ^ "OpenAL Soft – Software 3D Audio". openal-soft.org. Retrieved January 4, 2014.
  29. ^ "OpenAL Soft Git repository". Retrieved December 26, 2013.
  30. ^ Hofman, Erik (May 9, 2012). "[Openal-devel] Announcement: AeonWave-OpenAL 1.1.7 released". Archived from the original on January 19, 2013. Retrieved December 9, 2012. 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.
  31. ^ "Developers". Blue Ripple Sound Limited. 2009. Retrieved January 24, 2011.

External links[edit]

  • OpenAL official website
  • 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)[dead link]
  • Rapture3D advanced OpenAL 1.1 driver
  • OpenAL package for C++