//returns track names public string[] GetTrackNames() { var names = new string[TrackCount]; var messages = file.GetMetaEventsOfType(MidiMetaType.TrackName).GetEnumerator(); for (int i = 0; i < TrackCount; ++i) { string name; if (messages.MoveNext()) { if (messages.Current.Event.ExtraDataLength > 0) { name = ""; foreach (var d in messages.Current.Event.ExtraData) { name += (char)d; } } else { name = "Untitled"; } } else { name = "Untitled"; } names[i] = $"Track {i + 1}: {name}"; } return(names); }
public Midi(string filepath) { if (File.Exists(filepath)) { if (Path.GetExtension(filepath).ToLower() == ".mid") { using (var fileStream = new FileStream(filepath, FileMode.Open)) { file = MidiMusic.Read(fileStream); //get tempo information from the midi var t = file.GetMetaEventsOfType(MidiMetaType.Tempo).GetEnumerator(); t.MoveNext(); } } else { throw new IOException("Incorrect file type."); } } else { throw new IOException("File doesn't exist."); } }