コード例 #1
0
        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()
            });
        }
コード例 #2
0
        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()
            });
        }