Added music theory API. Check Melanchall.DryWetMidi.MusicTheory namespace. Also NoteDefinition, IntervalDefinition and OctaveDefinition classes were renamed to Note, Interval and Octave respectively and moved to this new namespace.
Added General MIDI Level 1/2 support API. Check Melanchall.DryWetMidi.Standards namespace.
Added SetProgram method to PatternBuilder class. This method can be used in conjunction with the new GM 1/2 support API mentioned above.
Added AddNotes, AddChords and AddTimedEvents methods to TimedEventsManagingUtilities, NotesManagingUtilities and ChordsManagingUtilities classes respectively.
Added ToFile and ToTrackChunk methods to TimedEventsManagingUtilities, NotesManagingUtilities and ChordsManagingUtilities classes respectively.
Added Clone method to Note, Chord and TimedEvent classes.
Added TimeAs and LengthAs non-generic methods where the desired type of result should be passed as an argument of the TimeSpanType type. Added non-generic versions of methods inside TimeConverter and LengthConverter classes that take TimeSpanType too.
Implemented IComparable, IComparable<T> and IEquatable<T> on time span classes.
Added MakeNotes method to the NotesManagingUtilities class which iterates through the specified collection of TimedEvent returning Note for Note On/Note Off events pairs and original TimedEvent for all other events.
Time and length conversions between different representations were significantly speeded up.
Eliminated unnecessary resorting in ValueLine.Values getter.
Eliminated reordering in GetNotes, GetChords and GetTimedEvents methods.
FourBitNumber and SevenBitNumber moved to the Melanchall.DryWetMidi.Common namespace.