EDIT: Figured it out. Turns out you use an if statement for each type of callback you can then implement functionality in them.
// Start is called before the first frame update
void Start()
{
uint CallbackType = (uint)(AkCallbackType.AK_MusicSyncBeat | AkCallbackType.AK_MusicPlaylistSelect);
MusicEvent.Post(gameObject, (uint)CallbackType, CallbackFunciton);
}
void CallbackFunciton(object in_cookie, AkCallbackType in_type, object in_info)
{
//this if statment is called every time MusicSyncBeat is triggered via wwise and then the items inside are compleated
if(in_type == AkCallbackType.AK_MusicSyncBeat)
{
AkMusicSyncCallbackInfo info = (AkMusicSyncCallbackInfo)in_info;
playingBPM = 60 / info.segmentInfo_fBeatDuration;
print("BPM: " + playingBPM);
}
//this if statment is called every time MusicPlaylistSelect is triggered via wwise and then the items inside are compleated
if (in_type == AkCallbackType.AK_MusicPlaylistSelect)
{
AkMusicPlaylistCallbackInfo playlistInfo = (AkMusicPlaylistCallbackInfo)in_info;
activePlaylistItem = playlistInfo.playingID;
currentSelection = playlistInfo.uPlaylistSelection;
print("Playlist Item: " + activePlaylistItem + " , Playlist Selection: " + currentSelection);
}
}
To those that find this, I am still working how to use the different aspects, but the following will allow you use multiple callbacks at once. Found it in the WAG code, special thanks to the programmer I am working with for a game jam! I'll try to remember to update this once I get the latter part working. Note this is in C# in Unity.
void Start()
{
uint CallbackType = (uint)(AkCallbackType.AK_MusicSyncAll | AkCallbackType.AK_MusicPlaylistSelect);
MusicEvent.Post(gameObject, (uint)CallbackType, CallbackFunciton);
}
void CallbackFunciton(object in_cookie, AkCallbackType in_type, object in_info)
{
AkMusicSyncCallbackInfo info = (AkMusicSyncCallbackInfo)in_info;
playingBPM = 60 / info.segmentInfo_fBeatDuration;
print(playingBPM);
}