stringtranslate.com

AbiertoAL

OpenAL ( Open Audio Library ) es una interfaz de programación de aplicaciones (API) de audio multiplataforma . Está diseñado para una representación eficiente de audio posicional tridimensional multicanal. Su estilo y convenciones de API se parecen deliberadamente a los de OpenGL . OpenAL es una biblioteca de audio ambiental 3D que puede agregar realismo a un juego simulando la atenuación (degradación del sonido a lo largo de la distancia), el efecto Doppler (cambio de frecuencia como resultado del movimiento) y densidades de materiales.

OpenAL pretendía originalmente ser un estándar abierto y un reemplazo de código abierto para las API de audio 3D propietarias (y generalmente incompatibles entre sí) como DirectSound y Core Audio , aunque en la práctica se ha implementado en gran medida en varias plataformas como un contenedor alrededor de dichas API propietarias. o como una bifurcación patentada y específica del proveedor. Si bien la implementación de referencia luego pasó a ser propietaria y no recibió mantenimiento, hay implementaciones de código abierto disponibles como OpenAL Soft.

Historia

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. Fue alojado (y desarrollado en gran medida) por Creative Technology hasta alrededor de 2012.

Desde 1.1 (2009), la implementación de muestra de Creative se ha vuelto propietaria, [ cita necesaria ] y las últimas versiones en licencias gratuitas aún son accesibles a través del repositorio de código fuente Subversion del proyecto . Sin embargo, OpenAL Soft es una alternativa de código abierto ampliamente utilizada y se mantiene y amplía activamente.

Si bien los estatutos de OpenAL dicen que habrá una "Junta de Revisión de Arquitectura" (ARB) inspirada en OpenGL ARB, [ cita necesaria ] nunca se ha formado tal organización y la especificación OpenAL generalmente se maneja y discute por correo electrónico en su correo público. lista.

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

Estructura y funcionalidad de API

La funcionalidad general de OpenAL está codificada en objetos fuente , buffers de audio y un único 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, posición y 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 para la atenuación de la distancia, el 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 funciones OpenAL reales y la API ALC (Audio Library Context) que se utiliza para gestionar contextos de representación, 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 fin de exponer funcionalidad adicional 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 procesamiento avanzado de señales digitales y efectos de sonido acelerados por hardware, se pueden utilizar EFX (Extensión de efectos) o extensiones de audio ambiental (EAX).

Limitaciones

El modelo de oyente único 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 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 sólo se traduce en un efecto de amplitud (atenuación) y no en un retraso. Por lo tanto, OpenAL no se puede utilizar para calcular la diferencia horaria 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 proveedor/hardware 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 del proveedor, se recurrirá a la biblioteca contenedora wrap_oal.dll que traduce OpenAL a DirectSound (software genérico) o DirectSound3D (hardware genérico); la eliminación de este último desde Windows Vista en adelante ha roto efectivamente la aceleración de hardware genérica en las versiones modernas de Windows. [8] [9]

Plataformas compatibles

La API está disponible en las siguientes plataformas y sistemas operativos : [10] Android (compatible con OpenSL ES ), AmigaOS 3.x y 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 , Windows Multimedia API y Windows Multimedia Device (MMDevice) API), 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

Juegos

Se sabe que los siguientes videojuegos utilizan OpenAL:

Otras aplicaciones

Implementaciones

AbiertoAL SI
La implementación de muestra de OpenAL es la implementación original de Loki y no se mantiene actualmente.
OpenAL suave
OpenAL Soft es una implementación de software multiplataforma con licencia LGPL. La biblioteca está pensada como una actualización/reemplazo compatible y gratuito para la implementación de muestra de OpenAL, ahora obsoleta y propietaria. OpenAL Soft admite salida mono, estéreo (incluidos HRTF y UHJ), 4 canales, 5.1, 6.1, 7.1 y formato B. Se admiten activos ambisónicos. [29] [30]
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 , no gratuita pero de bajo costo, para Linux y Windows creada por Adalin BV. El autor afirma que la implementación de AeonWave-OpenAL renderiza 3D audio 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. [31] Al utilizar la biblioteca AeonWave, esta implementación admite HRTF y sonido envolvente espacializado para hasta ocho altavoces.
Controlador Rapture3D OpenAL
El controlador Rapture3D OpenAL es una implementación de software comercial, no gratuita , solo para Windows realizada por Blue Ripple Sound. La biblioteca está pensada como un reemplazo directo de alto rendimiento para otras implementaciones. Cuenta con: [32]
  • Ruta de audio de coma flotante de 32 bits.
  • Conversión de frecuencia de muestreo de alta calidad (utilizada para diversos fines, incluido el desplazamiento Doppler).
  • Efectos y filtros de alta calidad.
  • Soporte para fuentes de sonido multicanal (incluidos recursos codificados con Ambisonics ).
  • El único límite en la cantidad de fuentes o efectos es la potencia de la CPU; puede representar cientos de fuentes de sonido y múltiples efectos en hardware relativamente antiguo.
  • Autobús Ambisonics (HOA) de orden superior que funciona hasta el cuarto orden.
Apple OpenAL [33]
Apple envía una implementación de OpenAL en macOS e iOS. Es una capa muy delgada sobre la función Mezclador 3D (kAudioUnitSubType_3DMixer) en el sistema operativo. Esta implementación fue escrita originalmente por Ryan C. Gordon para los sistemas Altivec Mac OS X. [34]
MojoAL
Pequeña implementación completa (de un solo archivo) de OpenAL 1.1 construida sobre SDL2 por Ryan C. Gordon. [35]

Ver también

Referencias

  1. ^ "OpenAL: audio 3D multiplataforma". openal.org .
  2. ^ "Licencia OpenAL". Archivado desde el original el 30 de diciembre de 2012 . Consultado el 10 de noviembre de 2012 .
  3. ^ "Comunicado de prensa sobre OpenAL" (Comunicado de prensa). Archivado desde el original el 6 de marzo de 2016 . Consultado el 18 de julio de 2011 .
  4. ^ "Consulta de prefijo de Wayback Machine: archivo openal-devel" . Consultado el 25 de abril de 2023 .
  5. ^ "El archivo inaugural de enero de 2014 por hilo". openal.org .
  6. ^ Wozniewski, Mike; Settel, Zack; Cooperstock, Jeremy (2007). "Representación de audio específica del usuario y sonido orientable para entornos virtuales distribuidos" (PDF) . Actas de la conferencia internacional sobre pantallas auditivas (ICAD) . Consultado el 5 de agosto de 2012 .
  7. ^ Lanzamiento del juego FPS de código abierto Alien Arena 2009 # 28412367
  8. ^ Enumeración con OpenAL en Windows
  9. ^ OpenAL® y Windows Vista™
  10. ^ "OpenAL - Plataformas" . Consultado el 10 de mayo de 2012 .
  11. ^ "Copia archivada". se.aminet.net . Archivado desde el original el 16 de marzo de 2018 . Consultado el 6 de junio de 2022 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  12. ^ "blackberry/OpenAL · GitHub". Github.com . Consultado el 14 de enero de 2013 .
  13. ^ "OpenAL para OpenBSD". Archivado desde el original el 18 de marzo de 2012 . Consultado el 18 de julio de 2011 .
  14. ^ "OpenAL/alut/ogg/vorbis [Foro - Desarrollo (General)". AROS-Exec. Archivado desde el original el 26 de mayo de 2013 . Consultado el 16 de junio de 2013 .
  15. ^ "Descripción general". 0 Información del juego AD . Juegos de incendios forestales. Archivado desde el original el 26 de septiembre de 2013 . Consultado el 5 de diciembre de 2012 .
  16. ^ abcdefghijklmnopqrstu vwxyz aa ab "Juegos". OpenAL.org .[ fuente autoeditada? ]
  17. ^ ab "Foro de software SCS". Archivado desde el original el 5 de junio de 2019 . Consultado el 5 de junio de 2019 .
  18. ^ "Motor HPL - Mod DB" . Consultado el 20 de noviembre de 2012 .
  19. ^ "Solución de problemas: reinstale OpenAL: Beamdog" . Consultado el 29 de mayo de 2014 .
  20. ^ "Bit.Trip Runner - PCGamingWiki" . Consultado el 8 de octubre de 2022 .
  21. ^ "sitio web de ioquake3".
  22. ^ "Sonido de ondulación azul" . Consultado el 23 de septiembre de 2017 .
  23. ^ "Sonido de ondulación azul" . Consultado el 23 de septiembre de 2017 .
  24. ^ "Juegos de modulación". Archivado desde el original el 6 de septiembre de 2012.
  25. ^ "Juegos OpenAL compatibles". Sonido de ondulación azul .
  26. ^ "Motor Vanda".
  27. ^ Thalmann, Florián; Gaelli, Markus (2006). "Jam Tomorrow: generación de música colaborativa en croquet utilizando OpenAL". Jam Tomorrow: generación musical colaborativa en croquet utilizando OpenAL - Publicación de la conferencia IEEE . págs. 73–78. CiteSeerX 10.1.1.67.8139 . doi :10.1109/C5.2006.22. ISBN  978-0-7695-2563-1. S2CID  5577203.
  28. ^ Lambers, Martín. "Bino: reproductor de vídeo 3D gratuito - Acerca de". bino3d.org .
  29. ^ "OpenAL Soft - Software de audio 3D". openal-soft.org . Consultado el 4 de enero de 2014 .
  30. ^ "Repositorio OpenAL Soft Git" . Consultado el 26 de diciembre de 2013 .
  31. ^ Hofman, Erik (9 de mayo de 2012). "Anuncio [Openal-devel]: lanzamiento de AeonWave-OpenAL 1.1.7". Archivado desde el original el 19 de enero de 2013 . Consultado el 9 de diciembre de 2012 . Las pruebas han demostrado que AeonWave-OpenAL reproduce 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. Renderizar 32 sonidos en el Atom-N270 (el máximo para OpenAL-Soft) ahorra 1 vatio de consumo continuo de energía según powertop.
  32. ^ "Desarrolladores". Sonido Blue Ripple limitado. 2009 . Consultado el 24 de enero de 2011 .
  33. ^ "Navegador de origen".
  34. ^ "Una implementación de OpenAL para MacOS X". icculus.org .
  35. ^ "MojoAL". icculus.org .

enlaces externos

Implementaciones:

Recursos para desarrolladores: