public MidiEvent(int absoluteTicks, IMidiMessage message) { MessageType = message.MessageType; MessageData = Int32.MinValue; byteData = null; this.AbsoluteTicks = absoluteTicks; Deleted = false; Data2 = Data1 = Int32.MinValue; MetaType = Midi.MetaType.Unknown; Command = ChannelCommand.Invalid; if (MessageType == Midi.MessageType.Channel) { SetChanMessageData((message as ChannelMessage).Message); } else if (MessageType == Midi.MessageType.Meta) { var msg = (message as MetaMessage); this.byteData = msg.GetBytes(); this.MetaType = msg.MetaType; Text = msg.Text ?? ""; } else if (MessageType == Midi.MessageType.SystemRealtime) { this.realtimeType = (message as SysRealtimeMessage).SysRealtimeType; Text = GetText(); } else if (MessageType == Midi.MessageType.SystemExclusive) { var sysEx = message as Midi.SysExMessage; this.MessageData = sysEx.Status; byteData = message.GetBytes(); Text = GetText(); } else { MessageData = (message as ShortMessage).Message; Data1 = ShortMessage.UnpackData1(MessageData); Data2 = ShortMessage.UnpackData2(MessageData); byteData = message.GetBytes(); Text = GetText(); } }
private void HandleMIDI(IMidiMessage msg) { lock (Link) { foreach (byte data in msg.GetBytes()) { Link.Send(data); } } }
private void ParseSysExMessage(IMidiMessage message, MidiEvent @event) { OnSystemExclusiveParsed(message.GetBytes()); HandledMidiEvent?.Invoke(this, new MidiEventArgs(@event)); }