DryWetMIDI 1.1.0
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:
- TimedEventsManager to manage MIDI events by absolute time;
- NotesManager to manage notes of a MIDI file;
- ChordsManager to manage chords of a MIDI file;
- TempoMapManager to manage tempo map of a MIDI file.
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:
- MetricTime for hours, minutes, seconds;
- MusicalTime for bars, beats, ticks.
Custom length objects
As with time DryWetMIDI provides custom class for length – MetricLength for hours, minutes, seconds.
Minor changes
MidiEvent
doesn't implementICloneable
now. It still hasClone
method but now it returnsMidiEvent
instead ofobject
.NoteEvent
class added as the base class forNoteOnEvent
andNoteOffEvent
.TrackChunkUtilities
static class added with extension methods forTrackChunk
:IEnumerable<TrackChunk> GetTrackChunks(this MidiFile midiFile)
;TrackChunk Merge(this IEnumerable<TrackChunk> trackChunks)
;IEnumerable<TrackChunk> Explode(this TrackChunk trackChunk)
.
IndexOf
method added toEventsCollection
andChunksCollection
.