private void Callback(IntPtr midiInHandle, MidiInterop.MidiInMessage message, IntPtr userData, IntPtr messageParameter1, IntPtr messageParameter2) { switch (message) { case MidiInterop.MidiInMessage.Open: case MidiInterop.MidiInMessage.Close: case MidiInterop.MidiInMessage.LongData: case MidiInterop.MidiInMessage.LongError: case (MidiInterop.MidiInMessage) 967: case (MidiInterop.MidiInMessage) 968: case (MidiInterop.MidiInMessage) 969: case (MidiInterop.MidiInMessage) 970: case (MidiInterop.MidiInMessage) 971: case MidiInterop.MidiInMessage.MoreData: break; case MidiInterop.MidiInMessage.Data: if (this.MessageReceived != null) { this.MessageReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32())); return; } break; case MidiInterop.MidiInMessage.Error: if (this.ErrorReceived != null) { this.ErrorReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32())); } break; default: return; } }
private void Callback(IntPtr midiInHandle, MidiInterop.MidiInMessage message, IntPtr userData, IntPtr messageParameter1, IntPtr messageParameter2) { switch (message) { case MidiInterop.MidiInMessage.Open: // message Parameter 1 & 2 are not used break; case MidiInterop.MidiInMessage.Data: // parameter 1 is packed MIDI message // parameter 2 is milliseconds since MidiInStart if (MessageReceived != null) { MessageReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32())); } break; case MidiInterop.MidiInMessage.Error: // parameter 1 is invalid MIDI message if (ErrorReceived != null) { ErrorReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32())); } break; case MidiInterop.MidiInMessage.Close: // message Parameter 1 & 2 are not used break; case MidiInterop.MidiInMessage.LongData: // parameter 1 is pointer to MIDI header // parameter 2 is milliseconds since MidiInStart if (SysexMessageReceived != null) { MidiInterop.MIDIHDR hdr = (MidiInterop.MIDIHDR)Marshal.PtrToStructure(messageParameter1, typeof(MidiInterop.MIDIHDR)); // Copy the bytes received into an array so that the buffer is immediately available for re-use var sysexBytes = new byte[hdr.dwBytesRecorded]; Marshal.Copy(hdr.lpData, sysexBytes, 0, hdr.dwBytesRecorded); SysexMessageReceived(this, new MidiInSysexMessageEventArgs(sysexBytes, messageParameter2.ToInt32())); // Re-use the buffer - but not if we have no event handler registered as we are closing MidiInterop.midiInAddBuffer(hMidiIn, messageParameter1, Marshal.SizeOf(typeof(MidiInterop.MIDIHDR))); } break; case MidiInterop.MidiInMessage.LongError: // parameter 1 is pointer to MIDI header // parameter 2 is milliseconds since MidiInStart break; case MidiInterop.MidiInMessage.MoreData: // parameter 1 is packed MIDI message // parameter 2 is milliseconds since MidiInStart break; } }
private void Callback(IntPtr midiInHandle, MidiInterop.MidiInMessage message, IntPtr userData, IntPtr messageParameter1, IntPtr messageParameter2) { switch (message) { case MidiInterop.MidiInMessage.Open: // message Parameter 1 & 2 are not used break; case MidiInterop.MidiInMessage.Data: // parameter 1 is packed MIDI message // parameter 2 is milliseconds since MidiInStart if (MessageReceived != null) { MessageReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32())); } break; case MidiInterop.MidiInMessage.Error: // parameter 1 is invalid MIDI message if (ErrorReceived != null) { ErrorReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32())); } break; case MidiInterop.MidiInMessage.Close: // message Parameter 1 & 2 are not used break; case MidiInterop.MidiInMessage.LongData: // parameter 1 is pointer to MIDI header // parameter 2 is milliseconds since MidiInStart break; case MidiInterop.MidiInMessage.LongError: // parameter 1 is pointer to MIDI header // parameter 2 is milliseconds since MidiInStart break; case MidiInterop.MidiInMessage.MoreData: // parameter 1 is packed MIDI message // parameter 2 is milliseconds since MidiInStart break; } }