Skip to content

DryWetMIDI 1.1.0

Compare
Choose a tag to compare
@melanchall melanchall released this 07 Jul 12:28
· 1227 commits to master since this release

DryWetMIDI 1.1.0 provides a lot of new features. See short description of most notable changes below.

High-level data managing

DryWetMIDI 1.1.0 introduces new namespace – Melanchall.DryWetMidi.Smf.Interaction – that contains a lot of new objects which purpose is to provide a way to manage MIDI data at the higher level. Key features provided by classes from this namespace are:

Events managers

Now you can work with absolute time of MIDI events and manage specific events via dedicated events managers:

Custom time objects

All times are presented in a MIDI file as some integer values meaning of which is defined by the time division of the file. In practice it can be more useful to operate by time expressed in more understandable format such as hours, minutes and seconds. DryWetMIDI provides now following time classes:

Custom length objects

As with time DryWetMIDI provides custom class for lengthMetricLength for hours, minutes, seconds.

Minor changes

  • MidiEvent doesn't implement ICloneable now. It still has Clone method but now it returns MidiEvent instead of object.
  • NoteEvent class added as the base class for NoteOnEvent and NoteOffEvent.
  • TrackChunkUtilities static class added with extension methods for TrackChunk:
    • IEnumerable<TrackChunk> GetTrackChunks(this MidiFile midiFile);
    • TrackChunk Merge(this IEnumerable<TrackChunk> trackChunks);
    • IEnumerable<TrackChunk> Explode(this TrackChunk trackChunk).
  • IndexOf method added to EventsCollection and ChunksCollection.