Articulo de referencia

OpenAL

{{cite web |title=OpenAL: Cross Platform 3D Audio |url=https://openal.org/downloads/ |website=openal.org}} "},"latest release date":{"wt":"{{Start date and age|2009|11}}"},"prog...

OpenAL ( Open Audio Library [ 3 ] [ 4 ] ) es una interfaz de programación de aplicaciones (API) de audio multiplataforma . Está diseñada para la renderización eficiente de audio posicional tridimensional multicanal. Su estilo y convenciones de API se asemejan deliberadamente a los de OpenGL . OpenAL es una biblioteca de audio 3D ambiental que puede añadir realismo a un videojuego u otro entorno virtual simulando la atenuación (degradación del sonido con la distancia), el efecto Doppler (cambio de frecuencia como resultado del movimiento) y las densidades de los materiales.

OpenAL se concibió originalmente como un estándar abierto y una alternativa de código abierto a las API de audio 3D propietarias (y generalmente incompatibles entre sí), como DirectSound y Core Audio . Sin embargo, en la práctica, se ha implementado en diversas plataformas principalmente como una capa de abstracción sobre dichas API propietarias o como una bifurcación propietaria específica de cada proveedor. Si bien la implementación de referencia posteriormente se convirtió en propietaria y dejó de recibir mantenimiento, existen implementaciones de código abierto disponibles , como OpenAL Soft .

Historia

OpenAL fue desarrollado originalmente en 2000 por Loki Software para facilitar la adaptación de juegos de Windows a Linux . [ 5 ] Tras 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. Creative Technology lo alojó (y desarrolló en gran medida) hasta aproximadamente 2012.

Desde la versión 1.1 (2009), la implementación de ejemplo de Creative se ha convertido en propietaria, aunque las últimas versiones con licencias libres siguen estando disponibles a través del repositorio de código fuente Subversion del proyecto . Sin embargo, OpenAL Soft es una alternativa de código abierto muy utilizada que continúa recibiendo mantenimiento y ampliando sus funcionalidades.

Si bien los estatutos de OpenAL establecen que habrá una "Junta de Revisión de Arquitectura" (ARB, por sus siglas en inglés) inspirada en la ARB de OpenGL, dicha organización nunca se ha formado y la especificación de OpenAL generalmente se maneja y discute por correo electrónico en su lista de correo pública.

La lista de correo original, openal-devel, alojada por Creative, estuvo activa desde marzo de 2003 hasta aproximadamente agosto de 2012. [ 6 ] Ryan C. Gordon, un veterano de Loki que luego desarrolló Simple DirectMedia Layer , inició una nueva lista de correo y un sitio web en OpenAL.org en enero de 2014. [ 7 ] A febrero de 2023, la lista sigue en uso.

Estructura y funcionalidad de la API

La funcionalidad general de OpenAL se basa en objetos fuente , búferes de audio y un único oyente . Un objeto fuente contiene un puntero a un búfer, la velocidad, la posición y la dirección del sonido, así como su intensidad. El objeto 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 , de 8 o 16 bits , en formato monofónico o estéreo . El motor de renderizado realiza todos los cálculos necesarios para la atenuación por distancia, el efecto Doppler , etc.

El resultado final para el usuario es que, en una aplicación OpenAL bien programada, el sonido se comporta de forma muy natural a medida que el usuario se desplaza por el espacio tridimensional del mundo virtual. Desde la perspectiva del programador, se requiere muy poco trabajo adicional para lograr esto en una aplicación gráfica 3D existente basada en OpenGL.

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 las funciones de OpenAL, y la API ALC (Audio Library Context), que se utiliza para gestionar los contextos de renderizado, el uso de recursos y el bloqueo de forma multiplataforma. También existe una biblioteca 'ALUT' (Audio Library Utility Toolkit) que proporciona funciones de conveniencia de nivel superior, exactamente análogas a la ' GLUT ' de OpenGL.

Para ofrecer funcionalidades adicionales en el futuro, OpenAL utiliza un mecanismo de extensiones. De este modo, los proveedores pueden incluir sus propias extensiones en las distribuciones de OpenAL, generalmente para habilitar funcionalidades adicionales en su hardware propietario. Las extensiones pueden obtener la certificación ARB (Architecture Review Board), lo que indica que son extensiones estándar que se mantendrán para garantizar la compatibilidad con versiones anteriores. Las extensiones ARB tienen la posibilidad de incorporarse a la API principal tras un periodo de tiempo.

Para el procesamiento avanzado de señales digitales y efectos de sonido acelerados por hardware, se pueden utilizar las extensiones de efectos (EFX) o las extensiones de audio ambiental (EAX).

Limitaciones

El modelo de oyente único en OpenAL está diseñado para un solo usuario humano y no es adecuado para inteligencia artificial, simulaciones robóticas ni múltiples participantes humanos, como en las interpretaciones musicales colaborativas. [ 8 ] En estos casos, se requiere un modelo de múltiples oyentes. OpenAL tampoco tiene en cuenta los retrasos en la propagación del sonido (la velocidad del sonido se utiliza únicamente 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 utilizar para cálculos de diferencia de tiempo de llegada a menos que se agregue esa funcionalidad por separado. [ 9 ]

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

Plataformas compatibles

La API está disponible en las siguientes plataformas y sistemas operativos : [ 12 ] Android (compatible con OpenSL ES ), AmigaOS 3.x y 4.x, [ 13 ] Bada , BlackBerry 10 , [ 14 ] BlackBerry PlayBook , BSD , iOS (compatible con 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 , Windows Multimedia API y Windows Multimedia Device (MMDevice) API), MorphOS , OpenBSD , [ 15 ] Solaris , QNX y AROS . [ 16 ]

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

Aplicaciones

Juegos

Se sabe que los siguientes videojuegos utilizan OpenAL:

Otras aplicaciones

  • Blender : utiliza OpenAL para su editor de vídeo.
  • 3DMark06 – Herramienta de evaluación comparativa para jugadores
  • Dolphin (emulador) – Emulador de GameCube y Wii
  • Vanda Engine [ 28 ] – utiliza OpenAL 1.1 para simular sonidos 2D y 3D
  • Proyecto de croquet [ 29 ]
  • Bino [ 30 ] - Software de reproducción de vídeo que admite vídeo 3D estereoscópico y vídeo multipantalla.

Implementaciones

OpenAL SI
La implementación de ejemplo de OpenAL es la implementación original, de Loki, y actualmente no recibe mantenimiento.
OpenAL Soft
OpenAL Soft es una implementación de software multiplataforma con licencia LGPL. La biblioteca está diseñada como una actualización/reemplazo gratuito y compatible con la implementación de ejemplo OpenAL, ahora obsoleta y propietaria. OpenAL Soft admite salida mono, estéreo (incluyendo HRTF y UHJ), 4 canales, 5.1, 6.1, 7.1 y formato B. Admite recursos ambisónicos. [ 31 ] [ 32 ]
AeonWave-OpenAL
AeonWave-OpenAL es una capa de emulación OpenAL con licencia LGPL que aprovecha la aceleración de hardware proporcionada por la biblioteca de audio 4D AeonWave, de pago pero de bajo coste, para Linux y Windows, creada por Adalin BV. El autor afirma que la implementación de AeonWave-OpenAL reproduce audio 3D de cinco (en un AMD Athlon 64 X2 ) a siete (en un Intel Atom N270 ) veces más rápido que OpenAL SI u OpenAL Soft en las mismas condiciones. [ 33 ] Mediante el uso de la biblioteca AeonWave, esta implementación admite HRTF, así como sonido envolvente espacializado para hasta ocho altavoces.
Controlador OpenAL de Rapture3D
El controlador Rapture3D OpenAL es una implementación de software comercial, no libre y exclusiva para Windows, creada por Blue Ripple Sound . La biblioteca está diseñada como un reemplazo directo de alto rendimiento para otras implementaciones. Incluye: [ 34 ]
  • Ruta de audio de punto flotante de 32 bits.
  • Conversión de frecuencia de muestreo de alta calidad (utilizada para diversos fines, incluido el efecto Doppler).
  • Efectos y filtros de alta calidad.
  • Compatibilidad con fuentes de sonido multicanal (incluidos los recursos codificados mediante Ambisonics ).
  • La única limitación en cuanto al número de fuentes o efectos es la potencia de la CPU; puede procesar cientos de fuentes de sonido y múltiples efectos en hardware relativamente antiguo.
  • Bus Ambisonics de orden superior (HOA) que funciona hasta en el cuarto orden.
Apple OpenAL [ 35 ]
Apple incluye una implementación de OpenAL en macOS e iOS. Se trata de una capa muy delgada sobre la función 3D Mixer (kAudioUnitSubType_3DMixer) del sistema operativo. Esta implementación fue escrita originalmente por Ryan C. Gordon para sistemas Altivec Mac OS X. [ 36 ]
MojoAL
Implementación completa de OpenAL 1.1, pequeña (de un solo archivo), construida sobre SDL2 por Ryan C. Gordon. [ 37 ]

Véase también

Referencias

  1. "OpenAL: Audio 3D multiplataforma" . openal.org .
  2. "Licencia OpenAL" . Archivado del original el 30 de diciembre de 2012. Consultado el 10 de noviembre de 2012 .
  3. Hall, John (2001). Programación de juegos para Linux . No Starch Press. pág. 63. ISBN  978-1-886411-49-4.
  4. Wilde, Martin (2004). Programación de audio para juegos interactivos . Taylor & Francis. pág. 11. ISBN  978-1-136-12581-2.
  5. "Press release with regards to OpenAL" (Press release). Archived from the original on 2016-03-06. Retrieved 2011-07-18.
  6. "Wayback Machine prefix query: openal-devel archive". Retrieved 25 April 2023.{{cite web}}: Cite uses generic title (help)Archive index at the Wayback Machine
  7. "The openal January 2014 Archive by thread". openal.org.
  8. Wozniewski, Mike; Settel, Zack; Cooperstock, Jeremy (2007). "User-specific audio rendering and steerable sound for distributed virtual environments"(PDF). Proceedings of International conference on auditory displays (ICAD). Retrieved August 5, 2012.
  9. Open Source FPS Game Alien Arena 2009 Released #28412367
  10. Enumeration with OpenAL on Windows
  11. OpenAL® and Windows Vista™
  12. "OpenAL – Platforms". Retrieved May 10, 2012.
  13. "Archived copy". se.aminet.net. Archived from the original on 16 March 2018. Retrieved 6 June 2022.{{cite web}}: CS1 maint: archived copy as title (link)
  14. "blackberry/OpenAL 路 GitHub". Github.com. Retrieved January 14, 2013.
  15. "OpenAL for OpenBSD". Archived from the original on 2012-03-18. Retrieved 2011-07-18.
  16. "OpenAL/alut/ogg/vorbis [Forum – Development (General)". AROS-Exec. Archived from the original on May 26, 2013. Retrieved June 16, 2013.
  17. "Overview". 0 A.D. Game Info. Wildfire Games. Archived from the original on September 26, 2013. Retrieved December 5, 2012.
  18. 123456789101112131415161718192021222324252627"Games". OpenAL.org.
  19. 1 2 "Foro de software SCS" . Archivado del original el 5 de junio de 2019. Recuperado el 5 de junio de 2019 .
  20. "HPL Engine – Mod DB" . 11 de mayo de 2010. Consultado el 20 de noviembre de 2012 .
  21. "Solución de problemas: Reinstalar OpenAL : Beamdog" . Consultado el 29 de mayo de 2014 . 
  22. "Bit.Trip Runner - PCGamingWiki" . Consultado el 8 de octubre de 2022 .
  23. "Sitio web de ioquake3" .
  24. "Blue Ripple Sound" . Consultado el 23 de septiembre de 2017 .
  25. "Blue Ripple Sound" . Consultado el 23 de septiembre de 2017 .
  26. "Modulaatio Games" . Archivado del original el 6 de septiembre de 2012.
  27. "Juegos OpenAL compatibles" . Sonido Blue Ripple .
  28. "Motor Vanda" . Archivado del original el 9 de mayo de 2017. Consultado el 18 de mayo de 2017 .
  29. Thalmann, Florian; Gaelli, Markus (2006). "Jam Tomorrow: Generación colaborativa de música en croquet usando OpenAL". Jam Tomorrow: Generación colaborativa de música en croquet usando OpenAL - Publicación de la conferencia IEEE . pp. 73–78 . CiteSeerX 10.1.1.67.8139 . doi : 10.1109/C5.2006.22 . ISBN   978-0-7695-2563-1. S2CID 5577203 . 
  30. Lambers, Martin. "Bino: reproductor de vídeo 3D gratuito - Acerca de" . bino3d.org .
  31. "OpenAL Soft – Software de audio 3D" . openal-soft.org . Consultado el 4 de enero de 2014 .
  32. "Repositorio Git de OpenAL Soft" . Consultado el 26 de diciembre de 2013 .
  33. Hofman, Erik (9 de mayo de 2012). " [ Openal-devel ] Anuncio: Lanzamiento de AeonWave-OpenAL 1.1.7" . Recuperado el 9 de diciembre de 2012. Las pruebas han demostrado que AeonWave-OpenAL procesa el audio cinco veces más rápido (en un procesador AMD Athlon-64 X2) y hasta siete veces más rápido (en un procesador Intel Atom-N270) que OpenAL-Soft y OpenAL-Sample. Procesar 32 sonidos en el Atom-N270 (el máximo para OpenAL-Soft) ahorra 1 vatio de consumo de energía continua según powertop.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  34. "Desarrolladores" . Blue Ripple Sound Limited. 2009. Consultado el 24 de enero de 2011 .
  35. "Navegador de código fuente" .
  36. "Una implementación de OpenAL para MacOS X" . icculus.org .
  37. "MojoAL" . icculus.org .
  • Sitio web oficial de OpenAL

Implementaciones:

  • OpenAL Soft
  • AeonWave-OpenAL
  • Controlador avanzado OpenAL 1.1 para Rapture3D

Recursos para desarrolladores:

  • Tutoriales de OpenAL en DevMaster.net (Nota: estos tutoriales muestran un ligero desfase temporal, por ejemplo, al utilizar funciones obsoletas como alutLoadWAVFile).
  • Repositorio de extensiones de OpenAL (mantenido por Raulshc desde 2023; con tabla de extensiones compatibles por implementación)
  • Paquete OpenAL en Conan, un gestor de paquetes de C++.
Obtenido de " https://en.wikipedia.org/w/index.php?title=OpenAL&oldid=1354019377 "