I'm writing a MIDI sequencing tool using MusicPlayer and I need to write my events on-the-fly. I find that I can write MIDI events to a running track/sequence but User events don't seem to get written. They only seem to get written if the sequence is stopped.
The basic function I'm using to actually write the events is:
func addUserEventToSequence(event: Event, sequence: MusicSequence, track: MusicTrack) {
var tempEvent = event
withUnsafePointer(&tempEvent) { eventPtr in
let dataPtr: UnsafePointer<MusicEventUserData> = UnsafePointer(eventPtr)
if(MusicTrackNewUserEvent(track, event.timestamp, dataPtr) != noErr)
{
print("Couldn't add feedback event!")
}
}
}
The "Event" struct is very close to MusicEventUserData but adds a few properties. This definitely works when the sequencer is stopped, but it seems to fail when the sequencer's running. Am I missing something?