MIDI events are posted by calling the AK::SoundEngine::PostMIDIOnEvent() function. The following code shows examples of:
#include "Wwise_IDs.h" // IDs generated by Wwise // After Sound Engine initialization, register a global callback function. // Be sure to register for callback just before the message queue is processed; // this will ensure that any newly posted MIDI events are processed during // the current frame (i.e. immediately after we exit our callback function). AK::SoundEngine::RegisterGlobalCallback( &MIDICallback, AkGlobalCallbackLocation_PreProcessMessageQueueForRender ) // Obtain Sound Engine audio settings. These are required to determine the time // equivalent of one audio frame. AkAudioSettings audioSettings; AK::SoundEngine::GetAudioSettings( audioSettings ); (...) // Callback function used to post MIDI events. void MIDICallback( bool in_bLastCall ) { // Post MIDI event(s) if required. // Take extra care to ensure this code is thread-safe. // For this example, assume we need to post the note-on and note-off // events for the same note. AkMIDIPost aPosts[2]; const AkUInt8 byNote = 60; const AkUInt8 byChan = 0; // Range 0-15 mapped to MIDI channel range 1-16. const AkUInt32 uOnSamples = 0; // Note will start at beginning of current frame. const AkUInt32 uOffSamples = uOnOffset + audioSettings.uNumSamplesPerFrame / 2; // Note will end mid-frame. // Note-on AkMIDIPost& noteOn = aPosts[0]; noteOn.byType = AK_MIDI_EVENT_TYPE_NOTE_ON; noteOn.byChan = byChan; noteOn.NoteOnOff.byNote = byNote; noteOn.NoteOnOff.byVelocity = 72; // random velocity noteOn.uOffset = uOnSamples; // Note-off AkMIDIPost& noteOff = aPosts[1]; noteOff.byType = AK_MIDI_EVENT_TYPE_NOTE_OFF; noteOff.byChan = byChan; noteOff.NoteOnOff.byNote = byNote; noteOff.NoteOnOff.byVelocity = 0; // not used for note-off noteOff.uOffset = uOffSamples; AkUniqueID eventID = AK::SoundEngine::GetIDFromString( "MIDIEventName" ); AK::SoundEngine::PostMIDIOnEvent( eventID, REGISTERED_MIDI_GAME_OBJECT, aPosts, 2 ); }
Refer to Integration Details - Events for more information regarding events. Refer to Integration Details - MIDI for more information regarding MIDI.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요