There are many problems with expression maps and Cubase/Dorico’s implementation of them. But more generally, there is the problem with presuming that something like “expression maps” are the right answer for getting from a score to sounds in a VI.
There are two parts to the problem, and I think they should be dealt with separately. The first is conveying what is going on in the score - what notes are being played, with what dynamics and articulations, with what directives in the score. IMO this should be done generically and via MIDI - there should be a universal mapping from the score to 6-12 or so MIDI CCs. If you look at the emap for NotePerformer you will see this is exactly what it does (to the extent it can), mapping to 6 or so MIDI CCs, independent of the target instruments. Then it interprets these CC streams internally for each instrument.
There are many essential things that are not currently conveyed. E.g. it is insufficient to say “legato” for slurs, you need to distinguish between a note starting or ending under a slur (Notion can do this). MIDI is a real time protocol invented for use with live controllers, thus ‘note on’ and ‘note off’ pairs delimit notes. But notation programs know the duration of notes in advance, critical information for choosing the right patch or crafting an expressive arc. The duration should be conveyed somehow, e.g. via a 14-bit CC one could convey note durations to 16 seconds with 1ms accuracy. Notation programs also know whether a note is followed by a rest. This should be conveyed (Notion can also do this). Etc.
The generic system should be smart, and only send the corresponding CC when the situation changes (e.g. mute changes, tasto/norm/pont etc), not sending every CC with every note as emaps do. Short of providing a generic system, Dorico could enable us to build our own by at least making it possible to associate messages with exclusion groups and thus avoid emaps with hundreds or thousands of entries.
FWIW you can build a reasonable facsimile of this generic system using Notion’s rules in fewer than 200 lines of XML, or graphically with their rule editor. By comparison, for those who haven’t looked, an export of NotePerformer’s emap for Dorico is over 45,000 lines of XML! This emap was almost certainly generated by a program, thus belying the myth that emaps are an answer for non-programmers. At the scale needed for orchestration, they are not.
The second part of the problem is - given what is happening in the score, what should be done about it? IMO this should invariably be handled via MIDI-transforming scripts, written in e.g. JavaScript or Lua. Any baked-in rule system will eventually run aground due to lack of expressivity (and Cubase style expression maps are just a very weak form of rule system). While not everyone can wrangle script, enough people can for the community to produce a wealth of library support. In an effort to be accessible to all, emaps end up being inadequate for all. A short script can replace a much longer emap, and accomplish a lot more. Scripts can embed conditionals, can be parameterized etc. A script engine with MIDI capability like Logic’s Scripter can do pretty much anything, turn one kind of controller into another, generate new CCs and keyswitches, move or change the duration and velocity of notes etc. Scripts can also make decisions based upon context, like how fast the notes are being played, or whether a note is being repeated. Of course, logic exactly like this is going on inside NotePerformer.
A great way to deliver this power quickly is to add support for VSTs as MIDI plugins. There are already plugins that can transform MIDI like Blue Cat Plug 'n Script, Plogue Bidule, proto-plug etc. Of course, it would be great for Cubase and Dorico to have something like Logic’s Scripter built in.
As it stands, it seems to me that building upon playback support via emaps for Dorico today is like building on sand. Too many things are not implemented, poorly specified etc. Year after year goes by with incremental playback changes not reflecting a coherent vision. Visual CC and velocity editing forms a kind of escape hatch, but it somewhat reflects a failure to deliver on
Dorico helps you to write music notation, automatically producing printed results of exceptional quality — and plays it back with breathtaking realism.
It plays it back with as much realism as you can manually summon by supplementing the notation with a ton of CC editing, using tools that pale compared to those of DAWs. I’m concerned whether Dorico could ever move to a better playback system once people have become dependent upon various current behaviors (e.g. the global playback parameters, exclusion groups and their prioritization, dynamics mapping or lack thereof, etc). If I invest in building on emaps today how do I know my work won’t be negated once Dorico decides and delivers upon how it ought to work?
Dorico is a fabulous notation system, but it is currently (IMO) an inadequate playback system, saved only by the efforts of NotePerformer. Perhaps the marketing should be dialed back to reflect the reality of the product, not its aspirations.