본문으로 이동

OpenAL

위키백과, 우리 모두의 백과사전.
OpenAL
원저자로키 소프트웨어(Loki Software)
개발자크리에이티브 테크놀로지
안정화 버전
1.1 (설치 프로그램 2.1.0.0)[1] / 2009년 11월(16년 전)(2009-11)
프로그래밍 언어C
운영 체제15개 운영체제
참조: 지원 플랫폼
종류애플리케이션 프로그래밍 인터페이스
라이선스
  • 샘플 구현: v1.1부터 사유, v1.1 이전에는 LGPL, 초기 버전은 BSD[2]
  • "OpenAL" 상표: 불분명, 크리에이티브 랩스(Creative Labs, Inc.)가 보유
웹사이트www.openal.org 위키데이터에서 편집하기

OpenAL(Open Audio Library[3][4], 오픈 오디오 라이브러리)은 크로스 플랫폼 오디오 애플리케이션 프로그래밍 인터페이스(API)이다. 다채널 3차원 위치 오디오의 효율적인 렌더링을 위해 설계되었다. API 스타일과 관례는 OpenGL의 것을 의도적으로 닮게 만들었다. OpenAL은 환경 3D 오디오 라이브러리로, 음향 감쇠(거리에 따른 소리의 감소), 도플러 효과(움직임에 따른 주파수 변화), 물질의 밀도 등을 시뮬레이션하여 게임의 사실감을 더해준다.

OpenAL은 원래 다이렉트사운드코어 오디오와 같이 사유이며(일반적으로 서로 호환되지 않는) 3D 오디오 API를 대체할 개방형 표준오픈 소스 소프트웨어를 목표로 했으나, 실제로는 여러 플랫폼에서 해당 사유 API를 감싸는 래퍼 라이브러리나 벤더 특정적인 사유 포크 형태로 주로 구현되었다. 이후 참조 구현은 사유화되고 유지보수가 중단되었지만, OpenAL Soft와 같은 오픈 소스 구현체를 사용할 수 있다.

역사

[편집]

OpenAL은 2000년에 마이크로소프트 윈도우 게임을 리눅스이식하는 사업을 돕기 위해 로키 소프트웨어에 의해 처음 개발되었다.[5] 로키(Loki)가 폐업한 후, 이 프로젝트는 한동안 자유 소프트웨어 공동체/오픈 소스 공동체에 의해 유지되었으며, 엔비디아 nForce 사운드 카드 및 메인보드에 구현되었다. 2012년경까지 크리에이티브 테크놀로지에 의해 호스팅되고 주로 개발되었다.

1.1(2009년) 버전 이후 크리에이티브의 샘플 구현은 사유로 전환되었으며, 자유 라이선스의 마지막 릴리스는 프로젝트의 아파치 서브버전 소스 코드 저장소를 통해 여전히 접근할 수 있다. 그러나 OpenAL Soft는 널리 사용되는 오픈 소스 대안이며 활발하게 유지보수 및 확장되고 있다.

OpenAL 규약에는 OpenGL ARB를 모델로 한 "아키텍처 검토 위원회"(Architecture Review Board, ARB)가 있을 것이라고 명시되어 있지만, 실제로는 그러한 조직이 형성된 적이 없으며 OpenAL 사양은 일반적으로 공개 메일링 리스트의 이메일을 통해 처리되고 논의된다.

크리에이티브에서 호스팅한 원래 메일링 리스트인 openal-devel은 2003년 3월부터 2012년 8월경까지 운영되었다.[6] 심플 다이렉트미디어 레이어를 개발한 로키 출신의 라이언 C. 고든은 2014년 1월에 OpenAL.org에서 새로운 메일링 리스트와 웹사이트를 시작했다.[7] 2023년 2월 현재 리스트는 계속 사용 중이다.

API 구조 및 기능

[편집]

OpenAL의 일반적인 기능은 소스 객체, 오디오 버퍼 및 단일 리스너(listener)로 인코딩된다. 소스 객체는 버퍼에 대한 포인터, 소리의 속도, 위치, 방향 및 소리의 강도를 포함한다. 리스너 객체는 리스너의 속도, 위치, 방향 및 모든 소리에 적용되는 일반 게인(gain)을 포함한다. 버퍼는 8비트 또는 16비트모노럴 또는 스테레오 형식의 펄스 부호 변조(PCM) 데이터를 포함한다. 렌더링 엔진은 거리 감쇠, 도플러 효과 등에 필요한 모든 계산을 수행한다.

최종 사용자의 입장에서 이 모든 것의 결과는, 올바르게 작성된 OpenAL 애플리케이션에서 사용자가 가상 세계의 3차원 공간을 이동할 때 소리가 매우 자연스럽게 작동한다는 것이다. 프로그래머의 관점에서는 기존 OpenGL 기반 3D 그래픽 애플리케이션에서 이를 구현하기 위해 추가적인 작업이 거의 필요하지 않다.

OpenGL 사양과 달리 OpenAL 사양은 두 가지 서브섹션 API를 포함한다. 실제 OpenAL 함수 호출로 구성된 코어와, 크로스 플랫폼 방식으로 렌더링 컨텍스트, 리소스 사용 및 잠금을 관리하는 데 사용되는 ALC(Audio Library Context) API이다. 또한 OpenGL의 'GLUT'과 유사하게 상위 수준의 편의 기능을 제공하는 'ALUT'(Audio Library Utility Toolkit) 라이브러리도 있다.

향후 추가적인 기능을 제공하기 위해 OpenAL은 확장 메커니즘을 활용한다. 따라서 개별 벤더는 사유 하드웨어의 추가 기능을 노출하기 위해 자체 확장을 OpenAL 배포판에 포함할 수 있다. 확장은 ARB(Architecture Review Board) 상태로 승격될 수 있으며, 이는 하위 호환성을 위해 유지될 표준 확장을 의미한다. ARB 확장은 일정 기간이 지난 후 코어 API에 추가될 가능성이 있다.

고급 디지털 신호 처리 및 하드웨어 가속 사운드 효과를 위해 EFX(Effects Extension) 또는 환경 음향 확장(EAX)을 사용할 수 있다.

한계

[편집]

OpenAL의 단일 리스너 모델은 단일 인간 사용자에 맞춰져 있으며, 인공지능이나 로봇 시뮬레이션 또는 협업 음악 공연과 같은 다수의 인간 참여자에게는 적합하지 않다.[8] 이러한 경우에는 다중 리스너 모델이 필요하다. OpenAL은 소리 전파 지연도 고려하지 않는다(음속도플러 효과에만 사용됨). 음원까지의 거리는 진폭 효과(감쇠)로만 변환될 뿐 지연으로 변환되지는 않는다. 따라서 해당 기능이 별도로 추가되지 않는 한 OpenAL을 도달 시간 차이 계산에 사용할 수 없다.[9]

OpenAL의 풀 스피드 이점을 누리려면 벤더/하드웨어 전용 구현이 필요하지만, 이는 오픈 소스로 공개되는 경우가 드물다. 지원되는 많은 플랫폼은 사실 OpenAL을 플랫폼의 네이티브(종종 사유인) 오디오 API로 호출을 변환하는 래퍼 라이브러리로 구현한다. 윈도우에서 벤더 전용 구현이 감지되지 않으면 OpenAL을 다이렉트사운드(제네릭 소프트웨어) 또는 다이렉트사운드3D(제네릭 하드웨어)로 변환하는 wrap_oal.dll 래퍼 라이브러리로 대체된다. 윈도우 비스타 이후 다이렉트사운드3D가 제거됨에 따라 최신 버전의 윈도우에서는 제네릭 하드웨어 가속이 사실상 중단되었다.[10][11]

지원 플랫폼

[편집]

이 API는 다음 컴퓨팅 플랫폼운영체제에서 사용할 수 있다:[12] 안드로이드 (OpenSL ES 지원), 아미가OS 3.x 및 4.x,[13] 바다, 블랙베리 10,[14] 블랙베리 플레이북, BSD, iOS (코어 오디오 지원), IRIX, 리눅스 (ALSA, OSS, PortAudio펄스오디오 지원), 맥 OS 8, 맥 OS 9맥 OS X (코어 오디오), 마이크로소프트 윈도우 (다이렉트사운드, Windows Multimedia API 및 Windows Multimedia Device (MMDevice) API 지원), 모르프OS, OpenBSD,[15] 솔라리스, QNX, AROS.[16]

지원되는 게임 장치는 예를 들어 게임큐브, 플레이스테이션 2, 플레이스테이션 3, 엑스박스, 엑스박스 360, Wii, 플레이스테이션 포터블 등이 있다.

응용 분야

[편집]

게임

[편집]

다음 비디오 게임들은 OpenAL을 사용하는 것으로 알려져 있다:

기타 애플리케이션

[편집]
  • 블렌더 – 비디오 에디터에 OpenAL을 사용
  • 3DMark06 – 게이머용 벤치마킹 도구
  • 돌핀 (에뮬레이터) – 게임큐브 및 Wii 에뮬레이터
  • Vanda Engine[28] – 2D 및 3D 사운드 시뮬레이션을 위해 OpenAL 1.1 사용
  • Croquet Project[29]
  • Bino[30] - 입체 3D 비디오 및 다중 디스플레이 비디오를 지원하는 비디오 플레이어 소프트웨어

구현체

[편집]
OpenAL SI
OpenAL Sample Implementation은 로키가 만든 원래 구현체이며 현재는 유지보수되지 않는다.
OpenAL Soft
OpenAL Soft는 LGPL 라이선스의 크로스 플랫폼 소프트웨어 구현체이다. 이 라이브러리는 현재 사용되지 않고 사유화된 OpenAL Sample Implementation을 대체할 자유 호환 업데이트로 제작되었다. OpenAL Soft는 모노, 스테레오(HRTF 및 UHJ 포함), 4채널, 5.1, 6.1, 7.1 및 B-Format 출력을 지원한다. 앰비소닉 자산이 지원된다.[31][32]
AeonWave-OpenAL
AeonWave-OpenAL은 LGPL 라이선스의 OpenAL 에뮬레이션 레이어로, Adalin B.V.가 제작한 리눅스 및 윈도우용 저비용 비자유 4D 오디오 라이브러리인 AeonWave의 하드웨어 가속 기능을 활용한다. 저자는 AeonWave-OpenAL 구현이 동일한 조건에서 OpenAL SI 또는 OpenAL Soft보다 5배(AMD 애슬론 64 X2에서)에서 7배(인텔 아톰 N270에서) 더 빠르게 3D 오디오를 렌더링한다고 주장한다.[33] AeonWave 라이브러리를 사용하여 이 구현은 HRTF뿐만 아니라 최대 8개 스피커까지의 공간화된 서라운드 사운드를 지원한다.
Rapture3D OpenAL Driver
Rapture3D OpenAL Driver는 Blue Ripple Sound가 제작한 비자유 상용 윈도우 전용 소프트웨어 구현체이다. 이 라이브러리는 다른 구현체를 대체할 고성능 드롭인 교체용으로 의도되었다. 주요 기능은 다음과 같다:[34]
  • 32비트 부동 소수점 오디오 경로.
  • 고품질 샘플 레이트 변환(도플러 이동을 포함한 다양한 용도로 사용).
  • 고품질 효과 및 필터.
  • 다채널 음원 지원(앰비소닉(Ambisonics)을 사용하여 인코딩된 자산 포함).
  • 소스나 효과의 수에 제한이 없으며 CPU 성능에만 달려 있고, 비교적 오래된 하드웨어에서도 수백 개의 음원과 다중 효과를 렌더링할 수 있다.
  • 최대 4차(fourth order)까지 실행되는 고차 앰비소닉(HOA) 버스.
Apple OpenAL[35]
애플은 macOS와 iOS에서 OpenAL 구현체를 제공한다. 이는 운영체제의 3D Mixer(kAudioUnitSubType_3DMixer) 기능 위에 얹혀진 매우 얇은 레이어이다. 이 구현은 원래 Altivec 맥 OS X 시스템을 위해 라이언 C. 고든이 작성했다.[36]
MojoAL
라이언 C. 고든SDL2 위에 구축한 초소형(단일 파일) 전체 OpenAL 1.1 구현체이다.[37]

같이 보기

[편집]

각주

[편집]
  1. OpenAL: Cross Platform 3D Audio. openal.org.
  2. OpenAL License. 2012년 12월 30일에 원본 문서에서 보존된 문서. 2012년 11월 10일에 확인함.
  3. Hall, John (2001). Programming Linux Games. No Starch Press. 63쪽. ISBN 978-1-886411-49-4.
  4. Wilde, Martin (2004). Audio Programming for Interactive Games. Taylor & Francis. 11쪽. ISBN 978-1-136-12581-2.
  5. Press release with regards to OpenAL (보도 자료). 2016년 3월 6일에 원본 문서에서 보존된 문서. 2011년 7월 18일에 확인함.
  6. Wayback Machine prefix query: openal-devel archive. 2023년 4월 25일에 확인함.아카이브 색인 - 웨이백 머신
  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). 2012년 8월 5일에 확인함.
  9. Open Source FPS Game Alien Arena 2009 Released #28412367
  10. Enumeration with OpenAL on Windows
  11. OpenAL® and Windows Vista™
  12. OpenAL – Platforms. 2012년 5월 10일에 확인함.
  13. Archived copy. se.aminet.net. 2018년 3월 16일에 원본 문서에서 보존된 문서. 2022년 6월 6일에 확인함.
  14. blackberry/OpenAL 路 GitHub. Github.com. 2013년 1월 14일에 확인함.
  15. OpenAL for OpenBSD. 2012년 3월 18일에 원본 문서에서 보존된 문서. 2011년 7월 18일에 확인함.
  16. OpenAL/alut/ogg/vorbis [Forum – Development (General). AROS-Exec. 2013년 5월 26일에 원본 문서에서 보존된 문서. 2013년 6월 16일에 확인함.
  17. Overview. 0 A.D. Game Info. Wildfire Games. 2013년 9월 26일에 원본 문서에서 보존된 문서. 2012년 12월 5일에 확인함.
  18. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Games. OpenAL.org.
  19. 1 2 SCS Software forum. 2019년 6월 5일에 원본 문서에서 보존된 문서. 2019년 6월 5일에 확인함.
  20. HPL Engine – Mod DB. 2010년 5월 11일. 2012년 11월 20일에 확인함.
  21. Troubleshooting: Reinstall OpenAL : Beamdog. 2014년 5월 29일에 확인함.
  22. Bit.Trip Runner - PCGamingWiki. 2022년 10월 8일에 확인함.
  23. ioquake3 website.
  24. Blue Ripple Sound. 2017년 9월 23일에 확인함.
  25. Blue Ripple Sound. 2017년 9월 23일에 확인함.
  26. Modulaatio Games. 2012년 9월 6일에 원본 문서에서 보존된 문서.
  27. Compatible OpenAL Games. Blue Ripple Sound.
  28. Vanda Engine. 2017년 5월 9일에 원본 문서에서 보존된 문서. 2017년 5월 18일에 확인함.
  29. 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. 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: free 3D video player - About. bino3d.org.
  31. OpenAL Soft – Software 3D Audio. openal-soft.org. 2014년 1월 4일에 확인함.
  32. OpenAL Soft Git repository. 2013년 12월 26일에 확인함.
  33. Hofman, Erik (2012년 5월 9일). [Openal-devel] Announcement: AeonWave-OpenAL 1.1.7 released. 2013년 1월 19일에 원본 문서에서 보존된 문서. 2012년 12월 9일에 확인함. 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.
  34. Developers. Blue Ripple Sound Limited. 2009. 2011년 1월 24일에 확인함.
  35. Source Browser.
  36. An OpenAL implementation for MacOS X. icculus.org.
  37. MojoAL. icculus.org.

외부 링크

[편집]