Expression Maps - some key switches working / others not

Hi Folks,

Using the guidelines articulated in the Dorico manual and video tutorial, I’ve created an expression map for a banjo library I’m running through Kontakt. Some of the key switches I’m using though aren’t activating certain sounds (mute, pluck positions) while other key switches are working perfectly (hammer-ons, pull-offs, slides). I’ve tested all the key switches in Kontakt stand-alone mode and they work just fine. I’ve triple checked my CC#'s and they all correspond to the numbers provided in the library’s documentation.

Does anyone have any insight?

Thanks much, all,


Kontakt has a major bug re: CC timing - it feels free to reorder CC messages and in fact almost always places them after the note-on if they arrive at the ‘same time’ (i.e. are received in the same buffer window, even though MIDI is a serial protocol and DAWs/notation programs send messages in a particular order). This presents a serious problem for expression/artic maps and notation programs that, unlike humans playing controllers, send the control and note messages in tight succession.

I’ve reported the problem here:

You can see if this is your problem by inserting the little KSP utility script that prints. You’ll see the note-on then the CC, even though Dorico sends them in the other order (which you can verify using any other MIDI monitor prior to hitting Kontakt).

I strongly urge anyone suffering from this to report it to NI.

Though if NI’s fix is simply “use 100% NI software” that might not achieve much.

Since NI doesn’t appear to even have a plan to support VST3, you are probably doomed to trying to play catch-up if you want to mix NI and Steinberg.

Just my personal opinion, of course.

Do you have a project and expression map that reproduces the problem that you can attach here? (you’ll need to zip it up first) Dorico does try to output the key switches a couple of ticks early, but maybe this isn’t enough for Kontakt.

In my experience it’s Library (rather than Kontakt) dependent… would be nice if we were able to adjust the number of ticks ourselves … :sunglasses:

We consumers, Kontakt library devs, and DAW/Notation system devs shouldn’t have to adjust anything. What Kontakt is doing is wrong, its MIDI CC handling is broken.

Thanks so much, everyone. Very good to hear that I’m not alone.

Rich, I will add to the chorus of frustrated NI key-switchers. Can you direct me in running the aforementioned KSP utility script? And where do I find / how do I use a MIDI monitor? I don’t have experience with either.

Paul, will send a file. I’m assuming “Export library” on the expressions map page will export a sendable expression map?

Thanks again, everyone,


In Kontakt, immediately above the UIs for any instruments you have loaded is a bar that says MultiRack on the left. On the right side of that bar is a button labeled KSP. Click that and the KSP pane will open. On the left side there is a Preset button, navigate to Factory|Utilities|Midi Monitor. It is important to note that what you see there is after Kontakt has reordered things. You need an independent monitor to see the truth.

For a MIDI monitor (and many other purposes) I use Plogue Bidule. Also if you send the output of Dorico to a DAW most of them have monitoring facilities. It would be super useful if Dorico had a monitor that let you see what it is sending to VSTs.

It would be more useful to have a minimal project that that shows some playing techniques that are not switching as expected. The expression map is included in the project so if you can just cut down your existing one then that would contain everything needed.

Here you go, Paul.

A couple odd things about this file:

  1. I exported the expression maps and added them to the app data folder per Daniel’s instructions here:

However, when I created the attached test file for you (attached), the banjo expression map didn’t load with all of the settings that were part of the original map. Some of the playing techniques (“Pull-off” and “Harmonic”) were replaced with pt.user.user and a whole string of numbers, which upon research I’ve learned is just Dorico’s internal unique identifier. Trouble is though, for those playing techniques with the pt.user.user identifier, they aren’t listed in the playing techniques menu in write mode. In the original file, they are there, so something was clearly lost in translation.

  1. Another thing that didn’t transfer was the transpose setting I had given each technique in the original map (should be -12 for each).

The pluck positions, which are notes sampled at various distances from the bridge of the banjo, which has obvious implications for timbre. Mute is now working, when it wasn’t before.

Thanks again for your help,

Kontakt (444 KB)

I’ve had a look at this score and it’s hard for me to see what is and isn’t working as I don’t have this library and the playing technique symbols aren’t shown as expected (I think you can make these available in other projects by pressing ‘Save as Default’ in the Playing Techniques editor).

However, there are a couple of techniques you can use to help diagnose what’s going on. Firstly, in Play Mode press the button to show the Playing Techniques lane. This will show you which switch is used in the expression map, and for how long. For instance I can see that ‘Pluck 1’ applies only to the first note. I don’t know if that’s intentional, but there are two different types of techniques: articulations (which apply only to the note they’re attached to) and directions (which are ‘sticky’ and last until another that resets them). So you can scroll through to find the keyswitches in the expression map that Dorico is inferring at each point. That will help in working out whether the problem is in the playing technique or in the expression map.

Another useful technique is to export the track as MIDI, as this will contain all the keyswitches from the expression map with the same timing that is used in playback. You can then look at this in a DAW to check it’s outputting the switches you expect. Or you can do it in Dorico by adding another instrument, switch to play mode and then just drag and drop the MIDI file to the first bar of the empty instrument. This will then show you the keyswitches so you can compare them to the source instrument.

eg see this:

I suspect though that you might be bumping up against a current limitation in Dorico in that it’s not possible yet to specify mutual exclusion groups in expression maps, so Dorico has no way of knowing whether Pluck 1 and Pluck 2 are additive, or alternative. This is an area we hope to improve in future versions.

You may definitely have to modify the nature of the PTs, as Paul says. You do that here:

Then a PT will be in effect until the next one. Since this area of D. is not yet fully developed you will have to terminate one PT with nat. before a new one takes effect. (e.g. Pluck 1 - nat. - pLuck 2). (Also I seem to recall that you may have to reenter the PT once you’ve modified them…)

Paul / Fratveno,

Thank you both. Your explanation of articulations vs. directions (with the “nat” reset) was very helpful. I changed each of the playing techniques to “direction” and a lot of things cleared up immediately. I also did the MIDI import into an empty instrument, and all key switches were arranged appropriately. Things are starting to behave.

It remains a bit of a mystery though why my banjo expression map didn’t load with all of the settings that were part of the original map, and why some playing techniques (“Pull-off” and “Harmonic”) were replaced with the “pt.user.user.########…” identifier, and also aren’t listed in the playing techniques menu in write mode, particularly since other new techniques carried over just fine. Also, the transposition info for each technique didn’t carry through.

My suspicion is that it has something to do with the '‘Save as Default’ button in the Playing Techniques editor. But I did that for each technique before I exported the expression map. Also, it is hard to tell whether pressing ‘Save as Default’ actually took. The star turns blue only for as long as you’re actually clicking on it, then immediately returns to it’s normal color. Not sure if this is supposed to change in anyway to indicate that it’s been saved as the default.

Thanks again for your help,


Also, what is the distinction between ‘Duration - Has Duration / Has No Duration’ option (in the Playing Techniques Editor), and ‘Articulation Type - Articulation / Direction’ option (in the Playback Playing Techniques Editor)?

I just started a new test project. Now ALL of my techniques in the expressions map are replaced with the “pt.user.user.########…” identifier, which means that none of these playing techniques are listed in the playing techniques menu in write mode.

Any advice / insight very appreciated.



I think you are running up against some current limitations, or at least some parts of the application that aren’t fully integrated yet. In the application there are actually two slightly different things when we refer to ‘Playing Techniques’. Internally, ‘Playing Techniques’ are the IDs of each entry in an expression map, but ‘Playing Technique Appearances’ are the symbols and text items that you create in the score, which are mapped to the underlying Playing Technique IDs. Currently if you have custom Playing Technique objects, PT Appearance objects and custom expression maps then I don’t think they don’t all get exported together.

For the moment, it may be that the most reliable way of re-using your custom playing techniques and expression maps is to use the current project as a template. I do think that it’s possible to get the same effect using ‘Save as Default’, but I suspect that it depends on the order that you do it for the playing technique (appearances) and then the expression map.

As for the distinction between the different duration options - that’s a placeholder for logic that we don’t yet have. It will be used when we have the ability to map lines onto playing techniques, because these can explicitly mark the region over which they appear.

FWIW, I’ve always ended up with IDentifiers only when importing expression maps that reference Custom Playing Techniques, even if these were previously “starred” (saved as default) … :frowning:

I think you can avoid this problem by exporting the expression maps to a doricolib file and then importing that on new scores that need those expression maps.

Thanks Paul (and Fratveno). Helpful to understand that this is where the program is at right now. Your suggested standby work-around is a good one. I’ll go ahead and do that.

With regard to ‘Save as Default’, is the behavior I described typical? Where the star only turns blue during the actual click of the mouse? Is there a way to determine whether or not something has been saved as a default?

Last question: Paul, you mentioned mapping lines onto playing techniques as a future functionality. Do you expect this functionality in the next Dorico update?

All best, and thanks again,


That’s exactly what i’ve been doing, and it doesn’t work for custom techniques. It does work for the Dorico default techniques though…