개요편집이의 제기
OpenAL Soft는 OpenAL(Open Audio Library) 3D 오디오 API의 소프트웨어 구현체로, Christopher Robinson이 개발한 자유 소프트웨어다. LGPL(GNU 약소 일반 공중 사용 허가서) 라이선스 하에 배포되며, C와 C++20로 작성되어 크로스 플랫폼 환경에서 동작한다. 3차원 가상 공간에서 오디오를 재생하기 위한 기능인 거리 감쇠, 도플러 효과, 지향성 사운드 이미터 등을 제공하며, EFX(Environmental Audio Extensions) 확장을 통해 공기 흡음, 폐색, 환경 리버브 같은 고급 효과도 지원한다. 오디오 스트리밍, 멀티채널 버퍼, 오디오 캡처 기능도 갖추고 있다.[1][2]
역사편집이의 제기
개발 배경과 공개
OpenAL Soft는 독점적인 OpenAL 구현체를 대체할 자유 소프트웨어 구현체로 시작되었다. 초기에는 C 기반으로 개발되었으나, 점차 C++ 현대 표준을 도입하면서 코드베이스를 개선해 왔다. 공식 사이트와 GitHub, repo.or.cz 저장소를 통해 소스 코드와 바이너리를 배포하며, 이슈 트래커를 통해 버그 리포트와 기능 요청을 받는다. IRC 채널(#openal on irc.libera.chat)을 통해서도 사용자 지원을 제공한다.[2]
판본별 변화
공식 사이트에 공개된 최신 안정 버전은 1.25.2다. Wikidata에는 1.0.38, 1.1.93, 1.2.218, 1.3.253, 1.4.270, 1.4.272, 1.5.304, 1.6.372 등 다수의 버전 번호가 기록되어 있다.[1][2]
#### 1.25.2 (1.25.1 대비)
Git 저장소 정보 없이 빌드할 때 라이브러리 버전 문자열 수정
리버브 효과에서 STL 강화 어설션 문제 수정
구형 PipeWire 헤더로 빌드 시 잠재적 충돌 수정
스테레오 이상 WASAPI 입력 장치에서 모노 캡처 시 충돌 수정
std::format 없이 macOS에서 빌드 가능하도록 수정
TSME 출력에서 높이 인코딩 수정
TSME 출력에서 Super Stereo 디코더의 스테레오 분리도 수정
Distortion, Chorus, Flanger, Pitch Shifter, Frequency Shifter 효과에 3D 처리 구현
PipeWire에서 중복 장치 이름 처리 개선
CoreAudio에서 7.1.4 출력 자동 감지 지원 추가
SDL3 백엔드에 캡처 지원 추가
SDL3 백엔드에 장치 추가/제거 이벤트 지원 추가
내보낸 심볼의 가시성을 "protected"에서 기본 "default"로 변경
기본 Super Stereo 너비를 0.46으로 실제 변경[2]
#### 1.25.1 (1.25.0 대비)
OpenSL 및 JACK 백엔드 수정
WASAPI 및 CoreAudio 캡처 수정
OSS v4로 OSS 백엔드 빌드 수정
HRTF 활성화 시 디버그 어설션 수정
특정 리샘플링 비율에서 폴리페이즈 리샘플러의 STL 강화 어설션 수정
Tetraphonic Surround Matrix Encoding을 위한 새로운 스테레오 인코딩 옵션 추가[2]
#### 1.25.0 (1.24.3 대비)
라이브러리 코드베이스를 C++20으로 업데이트
alcIsExtensionPresent를 대소문자 구분 없는 비교로 수정
리버브 전환 시 잠재적 노이즈 수정
특정 출력 모드에서 리버브 팬닝 수정
alGetProcAddressDirect 확장 함수 검색 수정
콜백 버퍼 사용 시 음수 소스 오프셋 수정
루핑 소스에서 드물게 발생할 수 있는 메모리 문제 수정
구형 macOS 버전에서 컴파일 및 실행 문제 수정
Windows에서 환경 변수 값의 유니코드 사용 수정
32비트 MinGW 빌드에서 메모리 정렬 문제 수정
null 문자열을 가진 SOFA 파일에서 sofa-info 충돌 수정
alsoft-config를 Qt6으로 업데이트
STL 강화 빌드 옵션 추가
프로덕션용 성능 검사를 기본적으로 활성화
4차 앰비소닉스 지원 추가
Wave Writer 백엔드에 CAF 파일 지원 추가
C++20 모듈 선택적 지원 추가 (호환되는 컴파일 플래그로 빌드된 프로젝트에서 임포트하여 사용 의도)
ELF 공유 라이브러리 빌드에 .note.dlopen 섹션 추가하여 동적 의존성 기록
헤더를 XML 파일로 변환하고, 스크립트를 통해 헤더(및 모듈) 생성 (다른 언어 바인딩 생성 스크립트 제작 가능)
AL_PANNING_ENABLED_SOFT를 재생 중인 소스에서도 토글 가능하도록 변경
기본 주기 크기를 512 샘플 프레임으로 변경
기본 Super Stereo 너비를 0.46으로 변경[2]
특징과 기능편집이의 제기
렌더링 및 오디오 처리
OpenAL Soft는 소프트웨어 기반으로 3D 오디오 렌더링을 수행한다. 기본적인 3D 오디오 기능으로 거리 감쇠, 도플러 시프트, 지향성 이미터를 제공한다. EFX 확장(ALC_EXT_EFX)을 통해 리버브, 폐색(occlusion), 차단(obstruction) 같은 환경 음향 효과를 구현할 수 있다. 멀티채널 및 부동소수점 포맷 지원(AL_EXT_MCFORMATS, AL_EXT_FLOAT32), B-포맷 앰비소닉스 사운드필드 오디오 버퍼(AL_EXT_BFORMAT)도 지원한다. 출력 포맷으로는 모노, 스테레오, 4채널, 5.1, 7.1, HRTF, UHJ, B-포맷을 지원한다. 1.25.0부터 4차 앰비소닉스도 지원한다. 1.25.2부터 Distortion, Chorus, Flanger, Pitch Shifter, Frequency Shifter 효과에 3D 처리가 구현되었다.[2]
오디오 백엔드
다양한 운영체제와 오디오 시스템을 위한 백엔드를 제공한다. 지원 백엔드로는 PipeWire, PulseAudio, ALSA, WASAPI, OpenSL, CoreAudio, OSS, JACK, DirectSound, WinMM, Solaris, SoundIO, PortAudio, SDL2, SDL3, "Null" 출력, .wav 파일 작성기가 있다. 루프백 장치도 지원하여 다른 오디오 시스템과의 연계 재생이 가능하다. 1.25.2에서 SDL3 백엔드에 캡처 지원과 장치 추가/제거 이벤트 지원이 추가되었으며, CoreAudio에서 7.1.4 출력 자동 감지가 추가되었다. PipeWire 중복 장치 이름 처리도 개선되었다.[2]
지원 플랫폼
Linux, Windows, Android, macOS(OS X), iOS 등 다중 플랫폼에서 동작한다. 크로스 플랫폼 라이브러리로 설계되어 다양한 운영체제에서 일관된 API를 제공한다.[1][2]
빌드 시스템 및 의존성
CMake 3.13 이상을 필요로 하며(이전 버전도 작동 가능하나 미테스트), Autotools는 지원하지 않는다. C++20을 지원하는 대부분의 컴파일러에서 빌드 가능하다. 1.25.0부터 코드베이스가 C++20으로 업데이트되었고, C++20 모듈 선택적 지원이 추가되었다. 헤더는 XML 파일로 관리되며 스크립트를 통해 생성된다. STL 강화 빌드 옵션이 추가되었고, 프로덕션용 성능 검사가 기본 활성화된다. ELF 공유 라이브러리 빌드 시 .note.dlopen 섹션으로 동적 의존성을 기록한다. alsoft-config 도구는 Qt6 기반으로 업데이트되었다.[2]
라이선스 및 요금
GNU 약소 일반 공중 사용 허가서(LGPL) 하에 배포되는 자유 소프트웨어다. 상업적 이용을 포함한 자유로운 사용, 수정, 배포가 가능하며, 라이브러리 자체의 수정 사항은 공개해야 한다. 별도의 요금은 없다.[1][2]
평가편집이의 제기
자료에 구체적인 평가나 논란 내용은 명시되어 있지 않다. 공식 사이트는 이슈 트래커를 통한 버그 리포트와 기능 요청, IRC 채널을 통한 사용자 지원을 안내하고 있다.[2]
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.