Problem with a transposing expression map entry

I having a problem with my new expression map for CSS/CSSS:

I have a playing technique for harmonics, which correctly triggers the articulation in CSS using a key switch.

However, harmonics play back one octave higher in CSS. For this reason I’ve added -12 transposition for the natural harmonic 1 -technique in the expression map.

But even though the articulation triggers correctly, the -12 transposition won’t do anything.

I will send the files soon, but just wanted to ask if someone has encountered similar problem and perhaps knows where the solution could be.

are you sure this is only with CSS? The “o” in Dorico represents rather artificial harmonics as they can be played on any note as can the CSS ones and with this symbol, the sounded note is always an octave higher than the notated pitch, irrespective of the library used.

If that’s not exactly what you mean, then I’ll let one of the string playing experts take over…

With strings a harmonic notated with "o " means open string harmonic and it should play from that register. With instruments like double bass and harp there are different traditions, but at least cello, viola and violin should sound always from the written register.

Attached is my expression map, if someone would like to help me with the problem:

CSS Expression map vol. (2.6 KB)

Happy new year!

sorry, I probably wasn’t very clear – the point I was trying to make is that, to the best of my knowledge, CSS solo strings only support artificial harmonics, as do most other libraries (though there are some natural harmonics in VSL for instance) . To distinguish in the notation between artificial and natural, you go to the Properties of the relevant note and change the symbol of the natural harmonic to the artificial if required. There is no change in the playback. For what it’s worth, I have programmed the harmonic as CC58,51 which is a different method but I tested yours and it also works fine so that’s not an issue.
artificial harmonics|690x431

Ah, sorry I didn’t understand what you meant with the first post!

Did the harmonic play back from the written register or one octave higher when you tested it?

I’d like to have it so that the sound from CSS matches the notation, now it plays back one octave higher and I wasn’t able to correct it in the expression map. I’ll investigate this again when I’m with a computer!

I’ve discussed this with my violin playing wife just to confirm my reasoning – the harmonics in the CSS always play back an octave higher than notated as there is not a distinction made between natural and artificial harmonics in this (and many other) library. The idea of transposing down -12 makes some sense to me but I would then expect both notated and played notes would go down an octave. I can confirm that, like you, nothing at all seems to happen. So on this specific desire to ensure that a natural harmonic marking actually matches the marked pitch, I don’t know. Of course it actually sounds an octave higher anyway but I understand you want the score to follow convention of notating the base pitch rather than the harmonic overlay.

Thank you for looking into this!

I think I know what the problem is:

Dorico already uses the transposing for the harmonics to achieve correct playback - that’s why it doesn’t work in expression maps.

All of these harmonics send correct midi data to CSS:

But CSS plays them back one octave higher, because that’s how it is mapped (unfortunately).

So my feature request for the dorico team is that “transpose” entry would be enabled for the harmonics in the expression maps (for these situations where the harmonics are mapped in wrong octave in the VST library)

I managed to solve the problem by editing this multiscript for CSS:

AVO - CSS Control Panel (8.8 KB)

After my edits, the script transposes midi input down 12 semitones if the harmonic articulalation is selected.

The original script can also be downloaded from here:

The main purpose of this script is that it delays midi for the correct amount for each individual articulation. So everything from CSS plays back in correct rhythmic position, but delayed by 330 ms. That means that if you have other instruments, you have to delay them as well by 330 ms inside dorico. This can be done in the dorico mixer with a delay plugin for each track separately (even the click).

It would be still great if dorico expression maps would handle the transposition of harmonics natively, if that is possible to implement. By this I mean, that after dorico automatically calculates the sounding pitch for any harmonic, the user could still switch this result in the expression maps with the transpose function. At the moment it doesn’t seem to work with harmonics:

Good to hear you’re sorted. I was planning to look at the question of Kontakt scripting for the CSS Solo strings but am a complete novice in this. Could you confirm which Delay you’re using as I don’t see anything in Dorico which can be set in ms?

There is this mono delay that you can set as an insert in dorico -mixer.

VEPro has this matrix mixer, altough you need three or four of them in a chain because the maximum value is 100 ms…

If someone knows a plugin, that does easily a delay of 330ms, I’d be glad to know about it!

I have valhalla vintageverb -plugin, which I can find both from dorico and VEPro mixers. So if there is out there a similar plugin that does just plain delay of 330ms, that would be optimal solution for VEPro (to use this script).

Thanks for that — I realised I had to switch off the synch in “monodelay” to get to see and set the delay! But I get strange results anyway. I don’t really find in general there’s a problem to solve with CSS though if you add piano as in my my current project, then the parts somewhat more often sound out of synch. But not as much as expected and for the most part can be fixed with manual offsets.

I don’t see any way to activate the script other than at project level in K5.8. If that’s what you’re supposed to do, then it doesn’t seem to be doing much. What exactly is your procedure?


You have to follow carefully the instructions in his page:

Check that you have these buttons pressed in the control panel (and right channels):

You need to put the multiscript separately for each input channel. The script also does trills for you, if you map them correctly in the expression map.

Notice that the “delay always on” should be selected, as well as all the other delays (delay non-KS CC and delay KS/KS CC):

In my own version of the scriptthe delays work a bit differently from his original.

It’s mostly the medium and slow legato, where you hear the biggest differencies when using the script. I just think it’s nice that I don’t have to change any of the note offsets in Dorico - that way it’s possible to switch between different playback templates.

Here is my expression map that optimized to work with my version of the AVO script:

CSS - VEPro Expression map vol. (3.0 KB)

Any recommendations for improvements are welcome!

1 Like

Ok – after looking at your screenshots, I’ve managed to get the script working correctly I think. There are a few things I’ll need to look at but it seems that overall it gives more predictable results with my own EM than without and certainly the one note trills are a real boon. Many thanks for that!

If just using a string quartet, things would probably work OK as is – no time to try that as yet – but trying to use with a piano is another matter. With the Monodelay for the piano after around half a bar it just seems to keep repeating this half bar with a kind of delayed echo effect which gradually dies out. But this is what delay plug-ins are supposed to do, I thought, (eg here Stereo Delay | Effects and Plug-ins Included in Cubase - YouTube and is certainly not what is wanted in this context. I simply need to tell the piano to use the same general delay as CSS is doing!

If you put the Mix to 100% and Feedback to 0%, the monodelay should just delay the audio for the delay length that is selected. Did you have these settings?

didn’t change the Feedback although it would be logical enough to do that if you understand how Steinberg delay plug-ins work in the first place (and the manual is not very helpful for a novice like me)! Now things work more or less. Curiously, the delay --which I thought was the whole point of the script in the first place – does not often lead to audible timing inaccuracies in Dorico-- and I slowed the playback right down to check so in the end it comes down to which produces the better playback. With the script, the legato overall tends to be more even but there are quite a few issues with the shorter articulations, esp. detache (marcato without overlay) which is absolutely essential with a library containing so few articulations suitable for ostinato and other “passagework”.

I didn’t get on with your own EM --probably I’ve done something wrong somewhere. Do you have any audio examples or scores showing it in action in a string quartet context so I can hear how it should work?

Looks like I’ll probably just continue where I was before but many thanks anyway with the useful tutorial on Kontakt scripting.


I only so far used the script in a context that has lot of legato and not really many marcato passages. But it’s true that if you have in general fast moving music, the script does not do that much (since the delay for shorts and marcato is only 60 ms).

I heard a rumor that CSS might be developing their own script, which would of course be great! I’ve also suggested improvements to Dorico expression maps, that would remove the need for the external multiscript:

I would be very interested to hear what @PaulWalmsley would think about this kind of technical approach - would it make sense or are they going towards a different approach? I think there are also other libraries that would require different offset for first note of legato phrase, so this could be perhaps useful for a larger group of users (not just CSS users).

Can you provide a minimal project that reproduces this problem? I tried a minimal example just using HSSE and the transposition is respected (if you change the transposition to -1 then that it’s very apparent that the transposition is being applied). Could it be the case that a different combination of techniques is being triggered in your expression map, and not the ‘Natural Harmonic 1’ one you have here?

harmonic transposition minimal.dorico (2.1 MB)

We do want to implement a more flexible model for legato in the future, but we don’t know yet what this may look like. It’s certainly a common requirement to treat the first and last notes under a slur differently.


And thank you for looking into this!

You are right, I made a new project and at the beginning the harmonic transposes correctly.

It is actually the add-on technique that causes this problem to happen. After the add-on playing technique is triggered, harmonics will trigger the correct keyswitch but not transpose anymore. I wonder how this behaviour could be fixed?

I’ve attached a minimal project and that demonstrates the problem and also exported the audio.

Harmonic + add on technique.dorico (405.1 KB)

The expression map for Cinematic Studio Strings in that Dorico -file can be shared in the expression maps list, if you so wish. It can be a good starting point for someone using that library with dorico.

I’m also glad to hear if the legato playback is being looked at!

For situations like this, I think it would be beneficial if only the first note would be considered as the “first of a legato chain” in the expression maps:

Screenshot 2021-01-04 at 16.21.57

That is why I suggested a system that would look at the note length/rest -value a few ticks before every note.

One more idea: It would be nice to actually see (and even edit?) the keyswitches created by the expression maps in play mode. Is this something you are also considering for the future?