Problem Solving With Velocity Curves In Logic Pro X

Learn all about how velocity curves in Logic Pro X can be used to provide a number of excellent solutions to some real head scratchers.  

As you all probably know, MIDI velocity data is part of each MIDI note message that’s played and recorded. It corresponds to how hard (technically, how fast) the note was played, and it almost always has a significant effect on the sound. Most virtual instruments are programmed to mimic the behavior of real acoustic instruments in this regard. When a note is played harder, corresponding to a higher velocity, the sound of the virtual instrument changes in the same way a real one would—it’s louder, brighter, and, often has a sharper attack. Of course, this is a critical aspect of a dynamic musical performance, and that’s where problems can crop up.

When a patch for a virtual instrument is created, the programmer or sound designer has to set the velocity response of that instrument, so a performer playing on his/her keyboard will hear the changes in level and tone he expects to hear, as he varies his musical dynamics in performance. The first problem is that everyone has a different model of MIDI keyboard/controller, and they all have very different velocity responses! With some (unweighted) keyboards, even a fairly light touch will generate high MIDI velocities, making it very hard for players with a slightly heavier touch to play quieter passages expressively and convincingly. Other (weighted) keyboards might have to be really pounded to achieve the highest velocities, making it difficult for players with a softer touch to generate the loud, bright, sharp notes needed when the music really kicks. 

Fig. 1 MIDI Velocity Curves (from an E-MU keyboard).

Fig. 1 MIDI velocity curves (from an E-MU keyboard).

Some physical keyboard controllers have onboard velocity curve settings to help match controller response to instrument response, and this often does the trick for live performance, but there’s another situation where velocity issues frequently come up. Let’s say a musician brings his Logic project to another studio, where they have some third-party instruments that he prefers to the ones he used when he recorded the MIDI performances. He wants to re-direct his MIDI sequence tracks to some of these instruments, taking advantage of their superior sound and realism, but when he does, he finds they don’t respond the same way to the velocities in the recorded MIDI performance. So the sound of the new instrument is great, but the mismatched velocity response makes the performance sound clunky and amateurish. Obviously, a controller’s velocity curves won’t be of any help here, but fortunately, Logic itself has several ways to adjust velocities, either for live playing, or for pre-recorded MIDI tracks, as in this last scenario. One method involves a trip to the Environment, so I’ll skip over that one for now, and cover two approaches which are much more straightforward to implement.

Method #1

Velocity levels can be remapped in the MIDI Region Inspector pane, to the left of the Main (Arrange) area. 

Fig. 2 The MIDI Region Inspector in Logic: Velocity & Dynamics settings.

Fig. 2 The MIDI Region Inspector in Logic: Velocity & Dynamics settings.

To change the velocity response of a MIDI region to match a different instrument’s response, you can use the Velocity and Dynamics settings. Velocity simply adds or subtracts overall velocity to the values in the recorded MIDI Region. But Dynamics is kind of a velocity compressor/expander. Since MIDI velocity values range from 0–127, this control pivots around the halfway point—64. Dynamics settings below 100% will lower the loudest velocities and raise the lowest ones, in effect making the performances sound more tightly controlled. Values above 100% do the opposite—raise the highest velocities further, and lower the lower ones, for a more dynamic performance. The velocity setting can offset the modified performance, until all the velocities are well matched to the expected response from the instrument. This velocity re-mapping can even be applied to live incoming MIDI performances, by deselecting all MIDI regions, until the Inspector title, at the top, says “Region: MIDI Thru”.

Method #2

The second approach utilizes the new Velocity Processor MIDI plug-in. One would be inserted in an instrument track, and when you open it, you’ll see three options for velocity re-mapping, via the “Mode” popup, in the middle.

Fig. 3 The Velocity Processor MIDI plug-in.

Fig. 3 The Velocity Processor MIDI plug-in.

“Comp./Exp.” is the most flexible. It lets you visually dial up any velocity response curve, which, as you can see, re-maps the velocities just as most keyboard controllers with that option do. But the velocity mapping in this MIDI plug-in will also be applied to any pre-recorded MIDI Regions on that track, as well as to live incoming MIDI performance data.

Fig. 4 The Velocity Processor: Comp./Exp. Mode: Dial up a custom velocity curve.

Fig. 4 The Velocity Processor: Comp./Exp. Mode: Dial up a custom velocity curve.

The second option, “Value/Range”, lets you compress, reverse, or fix the velocity response, when necessary.

Fig. 5 The Velocity Processor: Value/Range Mode: Fix, reverse, or compress the velocity range.

Fig. 5 The Velocity Processor: Value/Range Mode: Fix, reverse, or compress the velocity range.

The third option, “Add/Scale”, works exactly like the Velocity and Dynamics settings in the MIDI region Inspector pane: Scale = Dynamics, and Add = Velocity. 

Fig. 6 The Velocity Processor: Add/Scale Mode: Compress/Expand & offset the velocity range.

Fig. 6 The Velocity Processor: Add/Scale Mode: Compress/Expand & offset the velocity range.

The nice thing about the MIDI plug-in is that it can be saved with an instrument patch, so if most of your virtual instruments respond properly to your keyboard’s velocity, but you have one or two that don’t, you can re-map the velocities just for those instruments, or patches, and re-save the mapped version, which will then respond as it should, every time you recall the new mapped patch, in any project.

So, with these various ways to tweak and re-map MIDI velocities, Logic really does have all the bases covered, when it comes to getting the most out of virtual instruments—one of these methods should surely do the trick, any time a MIDI velocity issue rears its head!

Joe is a musician, engineer, and producer in NYC. Over the years, as a small studio operator and freelance engineer, he's made recordings of all types from music & album production to v/o & post. He's also taught all aspects of recording and music technology at several NY audio schools, and has been writing articles for Recording magaz... Read More

Discussion

greg88rx
I love this, but. . . how can I apply these changes to the original source MIDI file itself for export with the corrected velocities for playback on a different device independent of my mac running logic pro x?
Joe A
Of the two options described in this article, the first would be the one to use if you'll need to "render" the changes (It's more difficult to render the effects of a MIDI plug-in) -- Velocity tweaks in the Inspector area can easily be made permanent by right-clicking on the Region and choosing MIDI->Normalize. Though I didn't get into it in this article, you can also use a Transformer to tweak Velocities.. Transformers can be realtime, patched into the track in the Environment, or non-realtime (via the Transform window), applied to a selected Region (or Regions). There, for example, you could set up an Exponential Velocity Operation which would scale Velocities between minimum & maximum; optionally test it out with a realtime Transformer, and then use those settings to print the new curve to the MIDI data in the Regions via the Transform window before exporting.

Want to join the discussion?

Create an account or login to get started!