Wwise SDK 2023.1.8
|
게임에 상호작용 음악을 만들 때, 그 음악의 박자와 관련한 정보가 필요할 수 있습니다. 음악 알림을 이용해 사운드 엔진으로부터 이 정보를 요청할 수 있습니다. 박자는 현재 재생 중인 주요 음악 세그먼트에 의해 결정됩니다. 세그먼트에는 다양한 박자표가 있을 수 있어, 현재 재생 중인 음악에 따라 박자가 바뀌게 됩니다. 재생 중인 음악이 없는 경우, 아무런 알림도 없습니다.
음악 콜백에는 다음과 같이 두 가지 타입이 있습니다.
음악에 대한 마커 알림을 받고자 할 경우, 애플리케이션을 설계할 때 고려해야 할 특정한 요소들이 있습니다.
이벤트 종료 알림을 받고자 하는 경우에는 AK_EndOfEvent
| AK_MusicSyncBeat
를 사용해야 합니다. 플래그가 비트별로 배타적이기 때문입니다.
AK_MusicSyncBar
알림만 처리하는 경우, 다른 이벤트 타입을 받으면 반환해야합니다.in_pCallbackInfo
를 적절한 정보의 구조체 타입으로 형변환해야 합니다. 음악 알림의 경우, AkMusicSyncCallbackInfo 가 됩니다.AK_MusicSyncBeat
와 AK_MusicSyncBar
를 둘 다 등록하면 마디당 네 개의 박자 알림과 그 마디 자체에 대한 알림 하나를 받게 됩니다. 시간 '0' 또한 대부분의 경우 한 박자와 한 마디로 계산되며, AK_MusicSyncEntry
도 마찬가지입니다. 즉, 마디, 박자, 도입 지점을 등록하면 음악이 시작될 때 세 개의 콜백을 연달아 받게 됩니다.AK_MusicSyncExit
알림은 현재 세그먼트의 맨 끝에 다다랐을 때에만 전송됩니다. 만약 음악이 현재 세그먼트가 끝나기 전에 다른 세그먼트로 전환되면 AK_MusicSyncExit
알림을 보내지 않습니다.위에서 언급한 콜백 함수를 이용해 음악 재생목록의 다음 요소 선택을 수작업으로 직접 관리할 수 있습니다. 그러기 위해 다음 플래그를 추가합니다.
이 이벤트 타입을 받으면 콜백 함수가 in_pCallbackInfo
매개 변수를 AkMusicPlaylistCallbackInfo 타입으로 형변환해야 합니다.
playlistID
멤버가 활성화된 재생목록 노드를 표시합니다. 사운드 엔진은 재생목록 노드에서 다음 요소를 선택해 콜백 함수가 호출되기 전에 재생합니다. 이 선택은 uPlaylistSelection
와 uPlaylistItemDone
멤버에 포함돼있습니다. uPlaylistItemDone
을 0으로 설정하면 uPlaylistSelection
가 재생목록 노드에서 다음으로 재생할 요소를 결정합니다. uPlaylistItemDone
가 0으로 설정돼있지 않으면 현재 재생목록 노드가 종료됩니다 (이 경우 그 상위 노드가 활성화 노드로 됨). uPlaylistSelection
와 uPlaylistItemDone
멤버 모두 콜백 함수에 의해 변경할 수 있습니다.
현재는, 버퍼가 하드웨어로 전달될 때 알림을 보냅니다. 즉, 알림을 보낼 때와 실제 재생될 때 사이에 일정한 상수 지연이 있다는 것을 의미합니다. 이는, 애플리케이션이 마커와 관련된 정보를 모으고, 해당 마커에 연결된 사운드가 실제 재생되기 전에 이를 처리할 수 있는 충분한 시간이 됩니다.
이 지연 시간은 플랫폼별로 다르다는 점에 유의하세요.
마커의 콜백은 사운드 엔진의 주요 스레드에서 처리됩니다. 즉, 애플리케이션이 알림으로부터 필요한 모든 정보를 모은 후 즉각 반환해야한다는 뜻입니다. 만약 특정 처리가 필요한 경우, 알림으로부터 관련 정보를 복사해온 후 별도의 스레드에서 실행해야 합니다.
애플리케이션이 스레드를 너무 오래 붙잡고 있으면 사운드 엔진이 언더런(underrun) 상태로 들어가고 출력 재생이 중단될 수 있습니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요