Expression Maps Generator - Create expression maps quickly

Probably working on MIDI2.0, which - when the big players like NI etc adapt - should make the whole concept of key switches obsolete.
So fingers crossed this is going to happen in the next few years.

I heard that MIDI 2.0 will have more than 127 velocity layers
I am like … meeh … what will it change for articulations and keyswitches etc ?
We need delay compensation per note or per articulation

That’s not even close to the capabilities of MIDI2.0. Higher resolution is one thing.

The two main features from my perspective are

  • bi-directional communication. That way you can create a MIDI controller that ask the DAW for the track name and display it on the controller. Yes, some things are possible using NKS for example, but this basically opens up a lot of possibilities. Lose the idea of a controller being a keyboard or some faders. You could for example display the state if a VST on a display and then control the parameters from there - without setting up quick controls!
  • new MIDI messages
    Basically you can now send per note data, i.e., not just velocity and poly pressure (aftertouch) but technically any controller data you like, including pitch bend. You can even just send which articulation this one note should be.

So if you can just assign articulations per node, what’s the point of key switches then?
You’d probably still have to create expression maps to tell Cubase how to display notes in the score editor or whether this is a ā€œdirectionā€ or ā€œper noteā€ articulation, but no more setting up key switches.

I see, let us pray together that this features come into place as soon as possible !

@mk1x86 Does it include the ability to set track delay compensation per articulation ? Or maybe per selected midi region ? Or even per note ?

That would be up to Steinberg, then. If I were to program this, the VST3 would provide an interface for the instruments to send back automation information including delay - something, that CLAP is probably already able to do.

Then it’s up to the DAW developers to have a big enough look-ahead to adjust for note delay

did you try KSP scripts such as VDC to adjust delay compensation per patch inside a single kontakt ?

No. My current setup is to have separate tracks for longs and shorts and adjust note placement manually if needed

Guys! Dumb question probably, but is there a way to import .expressionmap files into this awesome map generator?

Not a dumb question, yet not possible. The editor stores triggers (key switches) per articulation while Cubase stores them per sound slot. While you can always combine triggers from articulations to form a sound slot, you cannot separate them from a sound slot back to the articulations - at least in some cases it would be ambiguous.

So technically it would be possible for a lot of expression maps but it wouldn’t work all the time and it’s a lot of work to support this feature. Let me think about it when I’m back from vacation.

I knew it was more difficult than I thought… Thanks man!

If you use Opus from East West or Halion it is possible, you will see ā€œimport mapā€from the map setup window

Thanks @Vicken but my goal is to import maps in the generator, that’s here: https://expressionmaps.soundsinabox.de/

Hello! This seems like an awesome tool. I have a couple questions, I’m sure I’m doing something wrong.

Also, could someone please explain how groups 1-4 work in Cubase. I’m used to only using the first group. I’ve used Reaticulate in Reaper, but it doesn’t seem to work the same when handling groups.

I have 3 patches in Kontakt, each on a different midi channel. They are all the same. This is simply so I can route long, short, and legato outputs separately.

So, Longs are midi channel 1: Shorts - channel 2: Legato - channel 3.

In addition, this library has 4 different types of release samples, I’m controlling them with specific cc19 values. I have these set to omni to make things simple, so that they change all 3 patches in kontakt.

Notice, I have channel 2 as staccato because it’s a short.

Yet for some reason it shows up as channel 3 when I add it to slots.

Also when I add all these combinations of articulations…for example Tremolo release1, tremolo release2, tremolo release 3, tremolo release 4 etc. for all the articulations in group1 and 2… none of them show in Cubase. I was thinking there would be a huge list to select from.

Everything I try in cubase defaults to the channel 3 legato patch, no matter what I have selected in the articulations lane.

Any help would be appreciated. I’m sure it’s a group issue and I’m doing something incorrectly.

Cheers

Hello echo7.
I think you got the wrong idea about groups. Each group except for group 1 is just a refinement.

Looking at your screenshots, I would choose the following:

Start on the articulation page. Create the following articulations:

Group 1 (main articulation) as ā€œdirectionā€ articulation:

  • Legato
  • Staccato
  • Staccatissimo
  • Spiccato
  • Pizzicato
  • Tremolo
  • Trill WT
  • Trill HT
  • Harmonics
  • Sfz Long
  • Sfz Short
  • Decresc. Long
  • Descresc. Short

Group 2 (as ā€œattributeā€ articulation)

  • Release Natural
  • Release Excited
  • Release Staccato
  • Release Decrescendo

Then,

  • select all short articulations in group 1, set the channel to ch1
  • select all long articulations in group 1, set the channel to ch3
  • Individually select the long articulations and set the appropriate key switch in the ā€œTrigger Keyā€ section. Note, that if you select multiple articulations, you can assign key switches to them chromatically (or only white keys) to speed up the process
  • Individually select the release articulations, and in ā€œTrigger Control Changeā€ set the appropriate CC19 value

Go to the 2nd page:

  • Select all articulations from group 1 → generate slots
  • For each articulation from group 1 where you can use the releases, select the articulation in group 1 and all release articulations → generate slots

That’s it, you’re finished.
In Cubase, you can play all articulations and in addition use the special releases.

BTW: if ā€œRelease naturalā€ is the default release, you should not create an articulation for it. Just do everything as described, omitting the ā€œRelease naturalā€.
Then, when you created the slots on the 2nd page, select all slots without a release articulation and add CC19 to all of them on the right.
This way, in Cubase, if you do not explicitly assign a release, it will just use the default one.

I hope, that helps

@mk1x86 thank you so much for the insight. Following your steps worked!

This particular instrument has a con sordino button that turns all articulations to con sord. What would be the most sophisticated way to implement this, or is it a limitation of Cubase to only have 2 articulations (1 directional, 1 attribute) at a time.

Would I make attributes of all directional articulations with the con sord, then all the releases + consordino mode in order to get this to work?

Best,

Con sordino should be in the 3rd group then.
Basically, everything that can be used in parallel should be in separate groups. Con sordino should be a direction articulation.

1 Like

@mk1x86 Alright I think I get it now. But I still don’t understand some of the group stuff. Why doesn’t the following work.

I have 2 patches on separate midi channels. And 2 groups. First contains a sustain articulation. Second contains a staccato articulation. I would like to run these in parallel. So I can either use plain sustain…or add staccato on top for a sharper attack. With both lanes set to directional, all I’m hearing is the sustain layer.

What is actually chosen only depends on the slot. You cannot send midi data to two channels at the same time so you need to decide. That’s not a limitation of Cubase, though.

Now I got it. Thank you for all the info it’s been quite helpful. And for creating this tool!