示例#1
0
        private void MIDIInputReceived(object sender, MIDIMessage e)
        {
            var msgBytes    = BitConverter.GetBytes(e.wMsg);
            var param1bytes = BitConverter.GetBytes(e.dwParam1);
            var param2bytes = BitConverter.GetBytes(e.dwParam2);

            var command  = param1bytes[0];
            var note     = param1bytes[1];
            var velocity = param2bytes[2];


            Log($"Received local MIDI data: 0x{e.dwParam1.ToString("X")}");

            // Loopback MIDI
            if (metroCheckBoxLoopbackMIDI.Checked)
            {
                vMIDI.sendCommand(e.Data);
            }

            // Check if connected
            if (client == null)
            {
                return;
            }
            if (client.Connected)
            {
                // Send data to remote
                Log("Sending data ...");
                try
                {
                    stream.Write(e.Data, 0, e.Data.Length);
                    stream.Flush();
                    Log("Sent data!");
                }
                catch (Exception ex)
                {
                    Log("Couldn't send data! " + ex.Message);
                }
            }
        }
示例#2
0
        private void MidiProc(IntPtr hMidiIn,
                              int wMsg,
                              IntPtr dwInstance,
                              int dwParam1,
                              int dwParam2)
        {
            // Receive messages here
            var data = BitConverter.GetBytes(dwParam1);
            var e    = new MIDIMessage()
            {
                Data = new byte[]
                {
                    data[0],
                    data[1],
                    data[2]
                },
                wMsg     = wMsg,
                dwParam1 = dwParam1,
                dwParam2 = dwParam2
            };

            MIDIInputReceived?.Invoke(this, e);
        }