# Expression map definitions

Any chance we will get smarter expression map definitions? It would be really useful to have some variables and regular expressions for computing keyswitch and controller values.

Not at present, but we’re open to suggestions on what is useful for the future. Can you give an example of how you would define the variables and regexps to do something useful?

Sure. I’ll use VSL as an example since that is the one I am most familiar with.

VSL instruments are defined as a two dimensional matrix and also a linear set of matrices. So there can be three dimensions of key switch definitions. Also, the key switches are placed in different places on the keyboard to allow for the instrument ranges to be where they make sense. So having a variable that defines the base key switch for the two dimensional matrix and one for the linear matrix would allow one to specify base + offset to get a specific articulation independent of where the key switches start. Currently you need a different expression map for low strings and high strings for example. This would allow one expression map to resolve all instruments of a family.

With the limitation of the two dimensional matrix you often need multiple rows for a given set of articulations. So you might have two rows of 12 cells for con sord, and two rows of 12 cells for senza sord. If I could have a base + 2 operation then I can switch between con sord. and senza sord. with a two expression map definitions (con sord. = base+2, senza sord. = base). This would allow one to define the expression map direction parameters to be orthogonal from the expression map attribute parameters and save a lot of expression map definitions and combinations and potentially solve a lot of fall back scenarios.

Also, if I have an integer divide operation, then I can divide up a CC controller into sections using CC value = (n * (127 / x)) + 1 where x is the number of articulations needed and n is the index of the articulation I want to access. As it is, I need to do this calculation for every expression map definition. So this would just make things easier to think about.

Thanks for getting into the detail. This is something that we can think about longer term. Maybe there’s another way to approach this in the future, such as being able to generate the expression maps programmatically from a Lua plugin, as this may also make it possible to configure the expression maps automatically from other input file (can you export VSL configurations in any kind of easily parseable form?). This would also give you much more expressive power than you would have in the comparatively limited expression map format.

In the meantime it might be quite simple to write a Python script to easily generate all the combinations for the string ranges and articulations (depending on your coding chops of course, but I’m assuming that if you’re asking for complex expressions within an expression map then you must be somewhat familiar!)

Doing this in a plugin would be fine. As would a separate program. I really don’t care how to achieve it, as long as it can be done. You can’t currently get the format information from VSL unfortunately. Maybe you guys could talk them into providing you with a format you can import.

By the way, VSL does have a format that can be exported, evidenced by their iPad app that is capable of figuring out the matrices. It’s just not available to the customer base. But maybe you can partner with them and get access to it.

Notation is not 100% showing how music sounds. P.e. if You look at music of Bach You do not find many instructions, but the musicians know how to articulate it and how to use dynamics. Or - concerning rhythm - in a Jazz lead sheet You cannot “see” the groove that is expected to be performed. These are only two small examples that lead to one final conclusion: Dorico is right to give us the possibility in “Play”-Mode for the Interpretation of the score.

So I tend to ask Daniel and his crew to separate also articulation triggering, modulation, dynamic etc. from musical expressions in the first plan (on a 2nd level You could provide us with a greater flexibility connecting commands and expressions). If I had in Dorico what I have with the Key Editor in Cubase I would be very happy because there You can create a really good playback with all the possibilities You need.

It is indeed our intention that in time you will be able to add arbitrary MIDI events, including potentially things that trigger specific switches etc. within an Expression Map, from Play mode without needing to add any item that will appear at all in Write mode. But this will take some time.

Thank You, Daniel!