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?


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)


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.

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?


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:

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

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


  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


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


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…?