Convert velocity to expression

Hi, I’m looking for an easy solution.
A composer sent me a MIDI and pdf files of a song they need to create. Their notation software doesn’t use CC#11 for changing dynamics. It uses velocity instead. It’s 31 instruments score of 22 pages, so a lot of work. Is there a way to convert velocity to CC#11 easily so I don’t have to spend two days recreating dynamics manually bar after bar checking with their dynamics symbols in the score?

Hi,

Do I understand you right, you want to change the MIDI Note Velocity to the MIDI CC11 value? Use the powerful and awesome Logical Editor:

Filter Target
( Type Is | Equal | Note | And 
 Value 2 (Velocity) | Bigger | 0 )

Action Target
Type | Set to fixed Value | Controller
Value 1 | Set fixed value | CC 11 (Expression)

Function
Insert

This will insert MIDI CC11 at the place of every single MIDI Note On (to exclude MIDI Note Off, we use the " Value 2 (Velocity) | Bigger | 0" line) where the value of the MIDI CC11 will be the same as the MIDI Note On Velocity.

2 Likes

Wonderful! Huge time saver! Thank you, Martin.

And, is there a solution for going in the reverse direction?

Change the Velocity of each note to the most recent value of Expression?

Hi,

Unfortunately not because you cannot get the value of the previous/last event and us it as parameter. You can make soma actions based on the previous/last events:

Filter Target
( Type is | Equal | Note | And
Last Event | Equal | Value 1 | 11/B-2 )
...

So this one will wait for MIDI CC11 followed by MIDI Note. Then you can change the MIDI Note parameters the common way (like Value 2 | Set to fixed value/Use Value 1/Add…), but you can’t use any of the previous MIDI CC value.

Thank you very much, Martin. That is very helpful.

The reason I want to be able to do this is that when composing I often create a single dynamic curve that represents the overall dynamics in the piece. Then, I copy that curve to many instruments as a starting point for further editing. That’s simple enough for most instruments, but for piano and other similar instruments, that curve belongs in the velocity lane.

The closest workaround I could come up with is:

  1. Change all velocities on the piano track to 1 (to make them nearly invisible on screen)
  2. Copy general dynamic curve to the modulation lane, CC1
  3. Logical editor as follows:

Filter
Type Is | Equal | Controller
Value 1 | Equal | CC1

Action
Type | Set to Fixed Value | Note
Value 1 | Set to Fixed Value | 0 (C-2)

Transform

  1. There is now a velocity curve on the screen matching the modulation curve. By hand tracing it with either the draw or curve tools, the velocities of the original notes are changed to match.
  2. Delete notes with a pitch of C-2.

If anyone sees an easier way, I’m interested.

Thanks again for your help, Martin.

Chris Trimble

Hi,

I’m just thinking… I don’t know, if this leads to somewhere, but this is the way, how to transfer the MIDI CC curve to the inserted MIDI Notes, where the Velocity will be the same as the MIDI CC value.

Filter Target
( Type is | Equal | Controller | And
Value 1 | Equal | 11 )

Action Target
Type | Set to fixed value | Note
Value 1 | Set to fixed Value 0

Function
Insert

Now you get MIDI Notes Pitch 0 with the velocities of the MIDI CC11 curve. And the question is, how to transform the velocities of these notes to the velocities of the wanted notes…?

Hi Martin,

I am trying to use this preset in real-time with the Input Transformer.
CC1 is now velocity controlled, however since the notes are now transformed, they won’t trigger the instrument any longer.
My goal is to simply add a layer to the velocity so that it also controls the dynamics of each notes.
Think of it as an additional branch, I don’t want the original inputted data to be filtered out completely, I still need the notes to pass through.
Is there any way to do this ?

Update :
As a workaround I can use a second MIDI Track that sends notes to the instrument at the same time.
Now it works like I wanted, but in fact it doesn’t sound good at all, as the dynamics fader jumps abruptly between notes. Is there a way to smooth this out, for example adding some sort of glide to the new value, for example 200 ms?

Hi,

Use Insert instead of Transform (I don’t know if this option is also available in the Input Transformer; maybe this is the MIDI Insert only; but you can use the MIDI Insert instead of the Input Transformer and enable the “Record” in the MIDI Insert slot to record the resulting data to the track).

But I’m afraid the volume is going to jump. There is no way how to get a linear values from the Velocity Note A to Velocity Note B. Cubase doesn’t know the upcoming Velocity ahead.

The only way I can imagine is to record the MIDI CCs and get the values from the Notes Velocities and then change the whole MIDI CC curve from Jump to Ramp. This might work, I would say (sorry, I’m not at my DAW at this moment, I cannot test it for you right now).

Thanks for your input Martin,

The smooth transition I’m trying to achieve is for the emulated CC from the Input Transformer, not for the Velocity. But in any case I understand that this is not possible in real time right now.
I could indeed record the data on the track and switch the curve to Ramp, and that would possibly work, but that’s not real-time.
I’ll try to experiment with this tomorrow as well as with the MIDI Insert.

I wish this could be considered in a future major update as an improved Input transformer :
The possibility to have a “Glide” feature for the Transform Action, although I’m well aware that the use cases are limited to a few libraries and certain patches whose dynamics are exclusively controlled by a fader.

For example, with the additional “Glide” action, I could set a glide amount in milliseconds with which the new CC value takes X ms to transition from Note A to Note B.
Exactly the same as with a synth, the glide only happens when hitting note B.
And if we hit a new note in the middle of the glide, either up or down, the new glide starts from there.

Maybe you know about Virharmonic.
These are solo strings libraries, but what’s unique about them is that the dynamics are directly controlled by velocity. Under the hood it works the same as what I have described above, except it is adaptive; if you play fast the dynamics change fast, and if you play slower the transition becomes slower.

In this possible feature request I’m only asking for a basic glide just to remove the abrupt jump in volume/dynamics between notes when using this particular Input Transformer Preset.
I believe such a feature would greatly benefit Spitfire libraries and many others. It would be a real game-changer in the expressiveness of these libraries.
If needed I’ll post this in a separate topic.

That was awesome. Thanks!