public static string MessageToString(IMidiMessage message) { switch (message.MessageType) { case MessageType.Channel: var cm = (ChannelMessage)message; return(cm.Command.ToString() + " Ch: " + cm.MidiChannel.ToString() + " Nr: " + cm.Data1.ToString() + " Value: " + cm.Data2.ToString()); case MessageType.SystemExclusive: var syx = (SysExMessage)message; string result = "SysEx Message: "; foreach (byte b in syx) { result += string.Format("{0:X2} ", b); } return(result); case MessageType.SystemCommon: var sym = (SysCommonMessage)message; return(sym.SysCommonType.ToString() + " Data 1: " + sym.Data1.ToString() + " Data 2: " + sym.Data2.ToString()); case MessageType.SystemRealtime: var rm = (SysRealtimeMessage)message; return("Realtime Mesage: " + rm.SysRealtimeType.ToString()); case MessageType.Meta: return("Meta Message"); case MessageType.Short: var sm = (ShortMessage)message; return("Short Message"); } return(message.ToString()); }