다이렉트사운드
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
다이렉트사운드는 응용 프로그램이 소리를 생성하고 재생할 수 있도록 사운드 카드 드라이버와 응용 프로그램 간 인터페이스를 제공하는 사용자 모드 API이다. 1995년에 처음 소개되었으며, 여러 오디오 스트림을 지원하고 여러 응용 프로그램이 동시에 사운드 카드에 액세스할 수 있게 하여 혁신적인 기술로 여겨졌다. 다이렉트사운드는 샘플 속도 변환 및 오디오 믹싱 기능을 제공하며, 링 버퍼 개념을 사용하여 스트리밍 및 정적 버퍼를 관리한다. 하드웨어 가속을 지원하는 사운드 카드에서는 로컬 메모리를 활용하지만, 그렇지 않은 경우 소프트웨어 믹싱을 사용한다. 다이렉트사운드3D는 3D 오디오를 표준화하기 위해 다이렉트엑스에 추가된 기능으로, 개발자들이 표준화된 API를 사용할 수 있게 해준다. EAX는 DirectSound 및 DirectSound3D의 확장 기능으로, 하드웨어 가속 버퍼에 사운드 효과 처리를 제공한다. Windows 95/98/Me에서는 커널 모드 드라이버로 구현되었지만, Windows Vista부터는 오디오 스택이 변경되어 DirectSound는 에뮬레이션 모드로 실행된다. Windows 8에서는 WASAPI를 통해 하드웨어 오프로딩이 가능해졌지만, DirectSound의 하드웨어 인터페이스는 구현되지 않았다. 다이렉트사운드는 Windows CE 5.0부터 제거되었다. Windows Vista 이후 Creative ALchemy, IndirectSound, DSOAL 등의 대체 구현이 등장했으며, 마이크로소프트는 Xbox 360과 Windows를 통합하기 위해 XAudio를 도입했다.
더 읽어볼만한 페이지
- DirectX - Direct2D
Direct2D는 마이크로소프트에서 개발한 2D 그래픽 API로, 낮은 수준의 추상화, 고품질 텍스트 렌더링, 안티앨리어싱, 하드웨어 가속, 높은 DPI 지원 등의 특징을 가지며 다양한 분야에서 활용된다. - DirectX - 다이렉트쇼
DirectShow는 마이크로소프트에서 개발한 윈도우 기반 멀티미디어 프레임워크이자 API로, 필터 그래프를 통해 비디오 재생, 오디오 녹음, 편집, 인코딩 등 다양한 작업을 처리하며, 뛰어난 코덱 확장성을 가지지만 복잡한 구조와 코덱 충돌 문제가 있다. - 라이브러리 - 바이너리 재컴파일러
- 라이브러리 - 동적 링크 라이브러리
동적 링크 라이브러리(DLL)는 윈도우 운영체제에서 프로그램 실행 시 필요한 코드와 데이터를 제공하며, 여러 프로그램에서 공유되어 메모리 효율성을 높이고 모듈성을 향상시키는 라이브러리 형식이다.
다이렉트사운드 |
---|
2. 기능
다이렉트사운드는 사용자 모드 API로, 응용 소프트웨어와 사운드 카드 드라이버 간의 인터페이스를 제공하여 응용 프로그램이 소리를 생성하고 음악을 재생할 수 있도록 해준다. 1995년에 처음 소개되었을 때, 다이렉트사운드는 여러 개의 동시 오디오 스트림을 지원하고 여러 응용 프로그램이 동시에 사운드 카드에 액세스할 수 있도록 함으로써 혁신적인 기술로 여겨졌다. 그 전에는 게임 개발자들이 자체 오디오 렌더링 엔진을 소프트웨어로 구현해야 했다.
'''다이렉트사운드3D'''('''DirectSound3D''', DS3D)는 마이크로소프트 다이렉트엑스 시스템의 추가 기능으로 마이크로소프트 윈도우의 3D 오디오를 표준화하기 위해 고안되어 1996년 다이렉트엑스 3에 첫 선을 보였다.[18]
EAX는 하드웨어 가속 버퍼에 사운드 효과 처리를 제공하는 DirectSound 및 DirectSound3D의 확장 기능이다.
다이렉트사운드는 무제한의 오디오 소스에 대해 샘플 속도 변환 및 오디오 믹싱(음량 및 팬)을 제공한다. 하지만 실제 한계는 하드웨어 오디오 소스의 수와 소프트웨어 믹서의 성능이다.
다이렉트사운드 아키텍처는 "링 버퍼" 개념을 특징으로 하며, 이 버퍼는 순환적으로 계속 재생된다. 응용 프로그램 프로그래머는 사운드 버퍼를 생성한 다음 "읽기 커서"를 통해 상태를 지속적으로 쿼리하고 "쓰기 커서"로 업데이트한다. 배경 음악과 같은 연속적인 소리를 담는 "스트리밍" 버퍼와 짧은 소리를 담는 "정적" 버퍼, 두 가지 유형의 버퍼가 있다.
지원되는 사운드 카드에서는 DirectSound가 "하드웨어 가속" 버퍼, 즉 로컬 사운드 카드 메모리에 배치하거나 시스템 메모리에서 사운드 카드가 액세스할 수 있는 버퍼를 사용하려고 시도한다. 하드웨어 가속을 사용할 수 없는 경우 DirectSound는 시스템 메모리에 오디오 버퍼를 생성하고 순수하게 소프트웨어 믹싱을 사용한다.
일부 후기 DOS 시대의 "웨이브테이블" 사운드 카드, 예를 들어 사운드 블라스터 AWE32 및 그래비스 울트라사운드는 DSP를 탑재했는데, 이는 디지털 음악 악기에서 차용한 것이다. 이러한 카드는 여러 오디오 스트림을 버퍼링하고 온보드에서 믹싱하는 데 사용할 수 있는 로컬 메모리를 갖추어 CPU 부하를 줄이고 사운드 품질을 크게 향상시켰다. 그러나 이는 하드웨어를 직접 프로그래밍하는 DOS에서만 가능했으며, 이중 버퍼링의 복잡성 때문에 로컬 메모리에서 전체 기능을 갖춘 "하드웨어 가속"은 이러한 카드에서 구현되지 않았다. 사운드 블라스터 라이브!, Audigy 및 X-Fi와 같은 후기 카드는 시스템 메모리 버퍼에 직접 액세스할 수 있다.
3. DirectSound3D
다이렉트사운드3D는 소프트웨어 개발자들이 오디오 카드 제조업체에 맞춰 개별적인 코드를 작성할 필요 없이 단일의 표준화된 오디오 API를 짤 수 있게 해 준다.[18]
다이렉트엑스 5에서 다이렉트사운드3D는 서드 파티 3D 오디오 알고리즘을 사용하는 사운드 카드들이 마이크로소프트 승인 방식을 통해 다이렉트사운드3D를 제대로 가속할 수 있게 도와 준다. 이것은 별도의 3D 오디오 라이브러리를 요구하지 않게 해 준다.[18]
다이렉트엑스 8의 시작과 더불어, 다이렉트사운드와 다이렉트사운드3D (DS3D)는 DirectMusic영어와 통합되어 '''다이렉트엑스 오디오'''로 일컫게 된다.[18] DirectSound 3D의 3D 음원은 에코, 리버브 등의 환경음을 모방하는 효과와 리스너의 위치와 음원 (모노)의 위치 관계를 간편하게 계산하는 라이브러리가 주체이다. 기존의 스테레오 PCM 음원의 팬과 볼륨을 직접 조절하여, 음원의 위치(음상)를 표현했지만, 이를 라이브러리로 흡수한 것이다. 따라서 실제 공기 중을 전달하는 소리의 물리 현상 자체를 시뮬레이션하여 계산하는 것은 아니며, 차폐나 반사 등은 고려되지 않는다.
4. EAX
5. 운영체제 지원
5. 1. Windows 95/98/Me
Windows 95, 98 및 Me에서 DirectSound 믹서 구성 요소와 사운드 카드 드라이버는 모두 커널 모드 VxD 드라이버(Dsound.vxd)로 구현되어 오디오 하드웨어에서 사용되는 기본 버퍼에 직접 액세스할 수 있었다.[4] 따라서 사용자 모드 API와 기본 하드웨어 간에 가능한 가장 낮은 지연 시간을 제공했지만, 경우에 따라 불안정성과 블루 스크린 오류를 발생시키기도 했다.
Windows 98은 WDM 오디오 및 ''커널 오디오 믹서'' 드라이버(KMixer)를 도입하여 고품질 샘플 레이트 변환과 커널 스트리밍을 통해 동시 오디오 스트림의 디지털 믹싱, 라우팅 및 처리를 가능하게 했다.[4] WDM에서 DirectSound는 소프트웨어 기반 KMixer로 데이터를 보낸다. Windows 98 Second Edition은 DirectSound 하드웨어 버퍼링, DirectSound3D 하드웨어 추상화, 캡처 스트림용 KMixer 샘플 레이트 변환(SRC), 멀티채널 오디오 지원 및 DirectMusic 도입을 추가하여 WDM 오디오 지원을 개선했다.[4] 오디오 하드웨어가 하드웨어 믹싱(하드웨어 버퍼링 또는 DirectSound 하드웨어 가속이라고도 함)을 지원하는 경우 DirectSound는 렌더링 장치에 직접 버퍼링한다. DirectSound 스트림이 하드웨어 믹싱을 사용하는 경우 KMixer 및 해당 지연이 우회된다.[5] Windows 98 및 Windows Me에서는 WDM 오디오 드라이버가 선호되었지만 VxD 드라이버 모델과의 호환성은 유지되었다.
Windows 드라이버 모델(WDM)은 Windows 98부터 사용할 수 있었지만, 이를 사용한 오디오 카드 제조업체는 거의 없었다. KMixer는 내부 버퍼링으로 인해 상당한 처리 지연 시간(당시 시스템에서 30ms)을 유발했다. Windows 98에는 이러한 실시간 멀티미디어 데이터 스트림 처리 요구 사항을 해결하기 위한 WDM 스트리밍 클래스 드라이버(Stream.sys)도 포함되어 있다.[4] 사운드 카드가 시스템에서 제공하는 포트 클래스 드라이버 ''PortCls.sys''와 함께 사용하기 위한 사용자 지정 드라이버를 사용하거나, 스트리밍 클래스 드라이버와 함께 사용하기 위한 미니 드라이버를 구현하는 경우, 애플리케이션은 KMixer를 완전히 우회하고 커널 스트리밍 인터페이스를 대신 사용하여 지연 시간을 줄일 수 있다.
5. 2. Windows 2000/XP
마이크로소프트는 Windows 2000에서 WDM 오디오 드라이버와 커널 믹서 구성 요소(KMixer)를 도입하여 Windows NT에서도 동일한 WDM 기반 오디오 스택을 구현했다.[6] Windows XP에서는 개선된 커널 스트리밍 클래스 드라이버인 ''AVStream''이 도입되었다.[7] Windows XP부터는 USB 마이크용 음향 에코 제거, 노이즈 감소, 어레이 마이크 지원과 같은 DirectSound 캡처 효과 처리를 위한 하드웨어 가속도 추가되었다.[7]
5. 3. Windows Vista/7
Windows Vista는 완전히 재작성된 ''유니버설 오디오 아키텍처''를 기반으로 하는 오디오 스택을 특징으로 한다. 재설계된 오디오 스택의 아키텍처 변경으로 인해 DirectSound에서 오디오 드라이버로 직접 가는 경로는 존재하지 않는다.[8] DirectSound, DirectMusic 및 MME와 같은 다른 API는 WASAPI 세션 인스턴스로 에뮬레이션된다. DirectSound는 Microsoft 소프트웨어 믹서에서 에뮬레이션 모드로 실행된다. 에뮬레이터는 하드웨어 추상화가 없으므로 하드웨어 DirectSound 가속이 없으며, DirectSound 가속에 의존하는 하드웨어 및 소프트웨어는 성능 저하가 있을 수 있다. 응용 프로그램과 실제 시스템 하드웨어에 따라 성능 저하가 눈에 띄지 않을 수 있다. DirectSound3D를 사용하여 재생되는 하드웨어 3D 오디오 효과의 경우 재생할 수 없으며, 이는 EAX 확장과의 호환성을 깨뜨린다.[9]
ASIO 및 OpenAL과 같은 타사 API는 Windows Vista의 이러한 아키텍처 변경의 영향을 받지 않으며, 오디오 드라이버와 직접 인터페이스하기 위해 IOCtl을 사용한다. 하드웨어 가속 고품질 3D 위치 오디오를 활용하려는 응용 프로그램의 해결책은 OpenAL을 사용하는 것이다. 그러나 이것은 제조업체가 하드웨어에 대한 OpenAL 드라이버를 제공하는 경우에만 작동한다.[10]
Windows에는 또 다른 Kernel Streaming이라는 API가 있으며, 믹서를 거치지 않고 사운드 장치에 접근할 수 있다. 이 방법으로 ASIO4ALL이라는 프로젝트가 ASIO를 지원하지 않는 장치에서 ASIO를 사용할 수 있게 해준다.
또 다른 방법으로는, 애플리케이션이 사용하는 오디오 스택을 교체하여 OpenAL을 사용하게 하는 방법이 있다. 이 방법으로 Creative Labs사의 ''Creative ALchemy Project''라는 기술이 DirectSound의 가속을 지원한다.
5. 4. Windows 8
Windows 8의 WASAPI 오디오 스택은 Vista에서 도입된 소프트웨어 처리 외에도 오디오 카드로 여러 오디오 스트림을 "하드웨어 오프로딩"하여 믹싱 및 효과 처리를 지원하도록 도입되었지만,[11][12] 해당 기능은 Windows 런타임 앱에서만 사용할 수 있다.[13] DirectSound 및 DirectMusic의 사운드 카드 드라이버에 대한 하드웨어 인터페이스는 구현되지 않았다.
5. 5. Windows CE
다이렉트사운드 지원은 윈도우 CE 4.2 버전까지 가능했지만, 5.0부터 제거되었다.[14] 윈도우 CE 6.0 또한 다이렉트사운드를 지원하지 않으며, 대신 응용 프로그램이 웨이브폼 오디오 API를 사용하도록 다시 작성되도록 권장한다.[14]
6. 대체 구현
Windows Vista에서 DirectSound가 제거된 후 몇 가지 대체 구현이 등장했다.
사운드 블라스터의 ''Creative ALchemy''(2007)는 EAX와 같은 DirectSound3D 및 오디오 효과의 하드웨어 가속을 제공한다.[15] Creative ALchemy는 DirectSound3D 호출을 가로채어 사운드 블라스터 X-Fi 및 사운드 블라스터 Audigy와 같은 지원 하드웨어에서 처리될 수 있도록 OpenAL 호출로 변환한다. 소프트웨어 기반의 크리에이티브 오디오 솔루션의 경우, ALchemy는 OpenAL을 전혀 사용하지 않고 내장된 3D 오디오 엔진을 활용한다.
통합된 HD 오디오 코덱 제조업체인 리얼텍은 ALchemy와 유사한 3D SoundBack이라는 제품을 가지고 있다. PC 사운드 카드 칩셋 제조업체인 C-Media도 Xear3D EX라는 솔루션을 가지고 있지만, 사용자 개입 없이 백그라운드에서 DirectSound3D 호출을 투명하게 가로채는 방식으로 작동한다.
IndirectSound는 하드웨어 가속을 사용하지 않고 XAudio2를 사용하여 DirectSound 3D를 에뮬레이션하는 프리웨어 라이브러리이다.[16]
DSOAL은 OpenAL을 사용하여 DirectSound 3D 및 EAX를 에뮬레이션하는 오픈 소스 라이브러리이다. 하드웨어 가속 OpenAL 구현 또는 OpenAL Soft (HRTF 제공)를 사용할 수 있다.[17]
7. XAudio
마이크로소프트는 Xbox 360과 Windows를 통합하기 위해 새로운 애플리케이션을 '''XAudio''' 및 '''XACT'''와 같은 Xbox와 동등한 오디오 API로 이전하도록 적극적으로 활동하고 있다.[21] '''XAudio2'''는 크로스 플랫폼(Windows 및 Xbox)에서 공통으로 사용할 수 있는 저레벨 오디오 API이며, 디지털 신호 처리를 최적화하도록 설계된 Xbox 전용 API인 XAudio API를 더욱 발전시킨 것이다. XAudio2는 Windows XP나 Windows Vista, 그리고 Xbox 360에서 이용할 수 있다. Windows XP에서는 DirectSound를, Windows Vista에서는 WASAPI (새로운 오디오 스택)를, 그리고 Xbox에서는 콘솔 하드웨어 레이어를 사용하여 구현되었다。 XAudio2는 XACT를 통해 하이 레벨 오소링/재생을 할 수 있으며, X3DAudio 라이브러리를 통해 3D 기능을 제공한다. XACT 엔진은 하이 레벨 오디오 라이브러리이며, '''X3DAudio'''는 Windows와 Xbox의 두 플랫폼 모두에서 이용 가능한 공간 음향용 헬퍼 라이브러리이다.
XAudio2는 XACT와 같은 하이 레벨 오디오 API를 위해 신호 처리를 사용하여 특별한 효과를 낸다.
XAudio2의 주요 기능은 다음과 같다.
- "소리"에서 음성 데이터를 분리
- 서브 믹싱
- Multi-rate processing
- 음성별 필터링
- Programmable voices
- 효과 처리, 샘플 레이트 변환 (SRC)
- 소프트웨어 DSP
- 강화된 서라운드 사운드 (멀티 채널)와 명시적인 멀티 채널 패닝/매핑
- 네이티브 압축 데이터 지원
- Xbox 360에서의 XMA
- Windows에서의 ADPCM
- 기타 확장 형식 (xWMA[22][23])
- 분리 가능하고 대체 가능한 라이브러리를 통한 3D 오디오 처리. XAudio2는 멀티 채널 스피커를 다루며, X3DAudio 라이브러리는 스피커 볼륨과 다른 다양한 파라미터를 입력하여, 출력과 리스너의 좌표를 변형할 수 있다.
Windows 8용 소프트웨어 개발 키트인 Windows SDK 8.0 이후 Windows SDK와 DirectX SDK가 통합되었지만, 그 과정에서 XACT가 폐지되었다. 또한 Windows 8에서 데스크톱 앱에서는 여전히 DirectSound를 이용할 수 있지만, Windows 스토어 앱 (WinRT 앱)에서는 DirectSound를 이용할 수 없고, XAudio2만 이용할 수 있다[24]。
Windows 7 및 이전 OS에서 XAudio2를 이용하기 위해서는 DirectX 최종 사용자 런타임 또는 DirectX SDK를 설치해야 하며, XAudio2 v2.7까지만 사용할 수 있지만, Windows 8 이후에는 XAudio2 v2.8[25]이, 그리고 Windows 10에는 XAudio2 v2.9가 표준 탑재되어 있다.
참조
[1]
간행물
The Evolution of DirectX
https://books.google[...]
1998-10
[2]
웹사이트
DirectSound Capture Effects: MSDN
http://msdn.microsof[...]
[3]
웹사이트
DirectShow FAQ
http://msdn.microsof[...]
[4]
웹사이트
DirectSound Driver Models
http://msdn.microsof[...]
[5]
웹사이트
Overview of DirectSound Hardware Acceleration
http://msdn.microsof[...]
[6]
웹사이트
CakeWalk - Windows Pro Audio Roundtable
http://www.cakewalk.[...]
[7]
웹사이트
Exposing Hardware-Accelerated Capture Effects
http://msdn.microsof[...]
[8]
웹사이트
Techreport article on Vista-ready soundcards
http://techreport.co[...]
2008-01-15
[9]
웹사이트
Creative Technology - Support - Audio in Windows Vista
http://support.creat[...]
[10]
웹사이트
OpenAL and Windows Vista
http://www.openal.or[...]
2008-01-10
[11]
웹사이트
Audio Offloading: Exposing Hardware-Offloaded Audio Processing in Windows
http://msdn.microsof[...]
[12]
웹사이트
Windows Driver Kit - Windows Developer Preview - New for Audio Drivers
http://msdn.microsof[...]
[13]
웹사이트
Implementation Overview - Windows drivers {{!}} Microsoft Docs
http://msdn.microsof[...]
[14]
웹사이트
Windows CE 5.0 removed functionality
http://msdn2.microso[...]
[15]
웹사이트
Creative ALchemy website
http://www.soundblas[...]
[16]
웹사이트
IndirectSound
https://www.indirect[...]
[17]
웹사이트
DSOAL: A DirectSound DLL replacer that enables surround sound, HRTF, and EAX support via OpenAL Soft
https://github.com/k[...]
2023-04-20
[18]
웹사이트
DirectX 8.0 の紹介
https://msdn.microso[...]
[19]
웹사이트
[特集]Vista買うのはまだ早い!(3)ゲームサウンド編
https://www.4gamer.n[...]
[20]
웹사이트
【4Gamer.net】[レビュー]Creative ALchemy
https://www.4gamer.n[...]
[21]
웹사이트
コア オーディオの概要
https://msdn.microso[...]
[22]
웹사이트
Windows と Xbox 360 の違い
https://msdn.microso[...]
[23]
웹사이트
XAudio2 Versions - Win32 apps | Microsoft Learn
https://learn.micros[...]
[24]
웹사이트
Desktop Games on Windows 8.x | Games for Windows and the DirectX SDK blog
https://walbourn.git[...]
[25]
웹사이트
XAudio2 and Windows 8 | Games for Windows and the DirectX SDK blog
https://walbourn.git[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com