Idea for expression map conditions (for legato)


Sorry for the double post, but I felt that this could maybe be it’s own thread…

I’ve been making expression maps for cinematic studio strings, which have a really well sampled legato. The library uses note velocities to pick the length for legato transition and CC1 for dynamics. The exception is the first note of a phrase, which uses velocity for the first attack.

The library has 4 different legatos: slow, medium, fast and portamento. Each of these require a different offset for the “second” note.

After some fiddling around, it seems that the legato could be automated if in the expression maps there where these additional conditions:

First note of a phrase = note after a rest

Subsequent note of a phrase = note after a different note

Repeated note = note after the same note

Previous note length = length condition of a previous note

I also came up with an idea how this could be implemented using dorico’s existing functionality:

If the note length parameter would have also a “slot” for silence (value 0), most of the above conditions could be derived by looking at the note length parameter some amount of “ticks” before the start of a note:

-if it’s 0, then the note is the first of a phrase

-if it’s anything else (very short, short, medium…), then it’s a subsequent note

So just one condition, previous note length (values 0, very short, short, medium, long, very long) would be enough to create a working expression map for different legatos in Cinematic Studio Strings. Different types of legatos could be then assigned based on the length of the previous note and the problem of defining the first note of a phrase would be solved.

Of course this is just from a point of view of one individual library, but I guess same principles apply to many other libraries as well?

Anyway, I just wanted to share my idea, hope that it could be helpful in some way! :slight_smile:

I think its an interesting idea - I think maybe assuming that a note preceded by a rest is the beginning of the phrase might be usable for legato - but not necessarily accurate for all situations. I could see various articulations on the previous note mattering. So maybe it’s a few pieces of data on the previous note…

I’m not happy with the result of triggering repetition for the libraries I use. To me for some techniques its almost like you’d want the ability to insert a bit of variance somewhat like humanizing does - but not necessarily for velocity. Maybe Note performer really does have it right by delaying a little and looking at what came before - but that it needs that AI rather than static conditions? If Note performer and a high end sample library had a baby…