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); } } }
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); }