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();
            }
        }
예제 #2
0
 private void HandleMIDI(IMidiMessage msg)
 {
     lock (Link) {
         foreach (byte data in msg.GetBytes())
         {
             Link.Send(data);
         }
     }
 }
예제 #3
0
 private void ParseSysExMessage(IMidiMessage message, MidiEvent @event)
 {
     OnSystemExclusiveParsed(message.GetBytes());
     HandledMidiEvent?.Invoke(this, new MidiEventArgs(@event));
 }