public void CallMessageReceived(MIDIPacketListPtr pktlist, IntPtr readProcRefCon, IntPtr srcConnRefCon) { if (MessageReceived == null) { return; } var packets = new List <MidiPacket> (); for (var p = CoreMidiInterop.MIDIPacketListInit(pktlist); p != IntPtr.Zero; p = CoreMidiInterop.MIDIPacketNext(p)) { var packet = Marshal.PtrToStructure <MIDIPacketNative> (p); packets.Add(new MidiPacket(packet.TimeStamp, packet.Length, packet.Data)); } MessageReceived(this, new MidiPacketsEventArgs { Packets = packets.ToArray() }); }
public void CallMessageReceived(MIDIPacketListPtr pktlist, IntPtr readProcRefCon, IntPtr srcConnRefCon) { if (MessageReceived == null) { return; } var packets = new List <MidiPacket> (); var list = Marshal.PtrToStructure <MidiPacketListNative> (pktlist); var p = pktlist + 4; for (int i = 0; i < list.NumPackets; i++) { var packet = Marshal.PtrToStructure <MIDIPacketNative> (p); packets.Add(new MidiPacket(packet.TimeStamp, packet.Length, p + 10)); p = CoreMidiInterop.MIDIPacketNext(p); } MessageReceived(this, new MidiPacketsEventArgs { Packets = packets.ToArray() }); }