예제 #1
0
        private void HandleNoOp(object state)
        {
            IntPtr     headerPtr = (IntPtr)state;
            MidiHeader header    = (MidiHeader)Marshal.PtrToStructure(headerPtr, typeof(MidiHeader));

            byte[] midiEvent = new byte[SizeOfMidiEvent];

            for (int i = 0; i < midiEvent.Length; i++)
            {
                midiEvent[i] = Marshal.ReadByte(header.data, header.offset + i);
            }

            // If this is a NoOp event.
            if ((midiEvent[EventTypeIndex] & MEVT_NOP) == MEVT_NOP)
            {
                // Clear the event type byte.
                midiEvent[EventTypeIndex] = 0;

                NoOpEventArgs e = new NoOpEventArgs(BitConverter.ToInt32(midiEvent, EventCodeOffset));

                context.Post(new SendOrPostCallback(delegate(object s)
                {
                    OnNoOpOccurred(e);
                }), null);
            }
        }
예제 #2
0
        private void OnNoOpOccurred(NoOpEventArgs e)
        {
            EventHandler <NoOpEventArgs> handler = NoOpOccurred;

            if (handler != null)
            {
                handler(this, e);
            }
        }