DryWetMIDI 6.1.0
This release focuses on unifying API to work with different MIDI objects.
Tools
First of all, new tool added – Repeater
. It allows repeat MIDI data specified number of times with different options applied.
Also, some old tools were unified into single ones:
TimedEventsQuantizer
,NotesQuantizer
andChordsQuantizer
have been replaced by newQuantizer
tool which can quantize objects of different types simultaneously. More than that, it can now quantize start and end times at the same time, applying randomization if specified (and thusRandomizer
tool is now obsolete). More info in the Quantizer article.NotesSplitter
andChordsSplitter
have been replaced by newSplitter
tool which can split objects of different types simultaneously. Also all methods fromMidiFileSplitter
class have been moved to theSplitter
one. More info in the Splitter articles.
Objects managers
Also the work has been done on unifying separate manager classes for each object type. So now TimedEventsManager
, NotesManager
and ChordsManager
classes are now obsolete. You should use TimedObjectsManager
class now which can manage objects of different types simultaneously. More info in the Objects managers article.
New features and improvements
Clone
method has been moved from separate classes (likeNote
orTimedEvent
) toITimedObject
interface.Split
method has been moved from separate classes (likeNote
orChord
) toILengthedObject
.- Added
SetTime
method toTimedObjectUtilities
(SetTime
withinTimedEventsManagingUtilities
is obsolete now). - Added
SetLength
method toLengthedObjectUtilities
(SetTimeAndLength
methods withinNotesManagingUtilities
andChordsManagingUtilities
are obsolete now). - Added
MoveToStart
method toPatternBuilder
class. - Added parameter of
RepeatSettings
type toPatternBuilder
'sRepeat
methods. - Added
Note
methods by a note string toPatternBuilder
. - Added
Chord
methods by a chord string toPatternBuilder
. - Changed default value of the
Playback.InterruptNotesOnStop
property totrue
. - Parsing of
MusicTheory.Note
ignores case now. - Parsing of
Chord.GetNames
method supports7b9
,add11
,7#11
,7+11
,7(#11)
and7aug11
chords now (see complete list of supported chords here). - Added
TimeType
property to thePlaybackCurrentTimeWatcher
. - Constructor of the
PlaybackCurrentTimeWatcher
is now public so you can create different watchers. - Added
WatchOnlyRunningPlaybacks
property to thePlaybackCurrentTimeWatcherSettings
. - Added
SetPlaybackTimeType
method to thePlaybackCurrentTimeWatcher
. - Added
Note
's constructor by pair of timed events. - Added parameter of the
TimedEventDetectionSettings
type to timed events managing methods. - Added
Constructor
andTimedEventDetectionSettings
properties toNoteDetectionSettings
. - Added
Constructor
property toChordDetectionSettings
.
Small changes and bug fixes
- Added new total properties for
MetricTimeSpan
(#144). - Handled big internal values within time spans conversions.
- Fixed:
NotEnoughBytesPolicy
is ignored on reading some events. - Fixed:
TrackChunk
is written on saving toSingleTrack
format even if there are no track chunks in a file. - Fixed: PInvokeStackImbalance exception on native calls in 32-bit app (#142).
- Fixed: Native binaries are visible in IDE solution explorer (#158).
- Fixed:
Playback
position jumps on speed changing. - Fixed:
GetObjects
methods sometimes return not all objects if uncompleted chord encountered.