Wwise SDK 2023.1.8
|
오디오 장치 플러그인은 오디오 처리 과정에서 가장 엔드포인트라고 할 수 있습니다. 일반적인 오디오 장치는 OS 사운드 시스템이겠지만, 추가적인 하드웨어나 드라이버를 통해 더 다양한 출력을 사용할 수도 있습니다. 싱크 플러그인의 역할은, 최종 믹스된 오디오 샘플을 받아 장치가 이해할 수 있는 형태로 전송하는 일입니다.
사운드 엔진 단에서 오디오 장치 플러그인을 작성할 때 AK::IAkSinkPlugin
interface 를 구현하는 과정이 포함됩니다. 여기서는 이 인터페이스에 국한된 함수들만 다루도록 하겠습니다. 다른 플러그인 타입에서도 사용되는 인터페이스 컴포넌트와 관련한 더 많은 정보는 사운드 엔진 플러그인 만들기 를 참고하세요 ( AK::IAkPlugin
interface ). 또한 예제 코드의 AkSink 플러그인도 제공하고 있으니 참고해보세요 ( 예제 ).
오디오 장치는 항상 사용하는 플러그인(Audio Device ShareSet)과 특정 장치 ID를 통해 지정됩니다. 이 장치 ID는 Wwise 사운드 엔진과는 아무 관련이 없으며, 다만 플러그인을 구현하는 사람이 같은 타입이 여럿 존재하는 장치들을 쉽게 구분할 수 있도록 하기 위한 목적입니다. 장치 ID는 AK::SoundEngine::Init
과 AK::SoundEngine::AddOutput
에서 사용되는 AkOutputSettings::idDevice
매개 변수를 통해 게임으로 전송됩니다. 예를 들어 한 오디오 장치 플러그인이 특정 컴퓨터에서 Windows의 오디오 장치에 접근하려고 할 때 여러 개의 Windows 장치를 발견할 경우가 있습니다.
만약 자신의 장치가 다른 장치들과 구분되지 않아도 무방하다면, 이 매개 변수를 무시해도 됩니다. 그러나 이러한 구현을 위해서는 idDevice
매개 변수가 0
일 때 선택되는 "기본 장치"를 반드시 지원해야 한다는 개념을 인지하고 있어야 합니다. 처음 사용 가능한 장치로 할 지 아니면 0
를 받았을 때 선택되는 특정 장치로 할 지는 플러그인 프로그래머의 선택에 달렸습니다.
싱크 플러그인은 사용 가능한 오디오 장치의 열거를 지원하기 위해 추가 정적 함수를 등록할 수 있습니다. 이 함수의 목적은 저작 툴에서 사용자가 선택 가능한 장치를 채워넣거나 AK::SoundEngine::GetDeviceList
호출을 통해 런타임에서 장치 열거를 할 수 있도록 하기 위해서입니다. 이 함수는 선택 사항입니다. 이 함수를 적용하지 않으면 플러그인은 필요시 'default' 출력으로 초기화합니다. 필요한 경우, 플러그인 매개 변수 생성 함수 후 추가 정적 함수를 제공해야 합니다. 플러그인 생성에 사용되는 다른 정적 함수에 대한 더 자세한 정보는 사운드 엔진 플러그인 만들기 를 참고하세요.
아래는 실제 존재하지는 않는 MyPlugin이라는 싱크 플러그인의 장치 열거를 구현하는 한 예제입니다. MyPlugin 네임스페이스의 함수들과 클래스들은 실제 플러그인 구현의 플레이스홀더입니다.
플러그인
장치 열거는 채울 장치의 최대 개수와 AkDeviceDescription
의 선할당된 배열로 Wwise에 의해 호출됩니다. 장치 이름의 최대 길이는 AK_MAX_PATH
(256 자)입니다. 올바르게 채워진 장치 디스크립션의 개수를 반영하도록 값(io_maxNumDevices
)을 수정해야 합니다. 제시된 장치 디스크립션 배열 포인터가 null이면 채워 넣을 장치 설명의 숫자를 반영하도록 개수를 수정해야 호출자가 out_deviceDescriptions
에 대해 적절한 메모리 양을 할당할 수 있습니다.
참고: 이 사운드 엔진 구현은 이전의 저작 전용 플러그인과 동등한 AkGetSinkPluginDevices 를 대체하여 모든 지원 플랫폼에 대해 장치 열거를 구현할 수 있으며 AK::SoundEngine::GetDeviceList 로 런타임에 호출할 수 있습니다. |
참고: 이 함수는 모든 플랫폼에서 컴파일됩니다. 플랫폼에 특화된 장치 열거를 다루기 위해서는 적절한 매크로를 사용해야 하며 (예: AK_WIN , AK_LINUX , 등), 아무 구현도 정의돼있지 않은 플랫폼에서 AK_NotImplemented 를 반환해야 합니다. |
다른 플러그인과 마찬가지로, 싱크 플러그인 또한 해당하는 저작 DLL이 필요합니다. 모든 플러그인에 대해 공통으로 적용되는 Wwise 저작 컴포넌트 기본 설정에 대한 정보는 플러그인 라이브러리 형식 저작하기 을(를) 참고하세요.
참고: AkGetSinkPluginDevices 는 현재 사용 중단되었습니다. 장치 열거를 구현하려면 위의 사운드 엔진 컴포넌트 섹션을 참고하세요. |
플러그인의 Wwise 부분을 구현하고 ( 오디오 플러그인의 Authoring(저작) 부분 작성하기 ) 사운드 엔진 부분을 구현한 다음, 다음과 같이 단계별로 자신의 플러그인을 시험해볼 수 있습니다.
AK::SoundEngine::GetIDFromString
에 의해 부여됩니다.예시:
또 다른 방법으로, AK::SoundEngine::AddOutput
로 자신의 Audio Device 플러그인을 사용해도 됩니다.
AK::SoungEngine::GetDeviceList
를 이용하여 자신의 플러그인에 대해 장치 열거를 검사해볼 수 있습니다.
더 자세한 정보는 다음 섹션을 참조하세요.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요