menu
Version
2016.2.6.6153
2024.1.3.8749
2023.1.11.8682
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.3.8749
2023.1.11.8682
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
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.
Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageRegister your project and we'll help you get started with no strings attached!
Get started with Wwise