You are here

Add new comment

I don't see the necessity for all this complication.

The legato effect (and its close relation, articulation) would only ever be applied to a series of notes selected by the user. In other words, the user is entirely in control of what (s)he considers to be a melodic line. If there are other, unselected notes in the same time-space, this does not matter at all. The user has not selected them, so they will be unaffected.

The required effect is simply described. The selected notes should be regarded as a series, arranged in chronological order of their respective NoteOn events. The existing timing of the corresponding NoteOff events is irrelevant: whether note X's NoteOff comes before or after or at the same time as note (X+1)'s NoteOn event is irrelevant.

What then needs to happen is that the NoteOff event of every selected note except the final one is changed to occur at the same time as the NoteOn event of the next note. None of the NoteOn events should be altered, and neither NoteOn or NoteOff of the final note is changed.

In the case of the articulation effect, the principle is the same, except that here the user specifies a time interval that should occur between each note's NoteOff and the following note's NoteOn. In other words, the final result would be the same as in the legato case, except that all the NoteOff events (apart from the final note) would occur sooner. I suggest, though, that the option of having a "negative gap" (i.e. an overlap) should also be available. Why restrict the user? There might be the odd occasion when this is useful.

I emphasise that the original lengths of the notes, as well as any considerations of pitch and any other unselected notes, are entirely irrelevant to the action required.