Logic Pro X MIDI CC#88 question

Sorry if this is a newbie-ish question, but I can't seem to find a satisfactory answer...

MIDI CC#88 was adopted as "High-Resolution MIDI Velocity" by the MIDI powers-that-be a few years ago, so that you can have nearly 16,000 MIDI velocities instead of the standard 128 (whether this is actually useful is another debate). I have a MIDI controller (VAX77) that transmits MIDI CC#88, and Pianoteq responds to it, so far so good. The problem is other synths (both hardware and softsynths) utilize MIDI CC#88 for other functions- for example on the Novation Peak it is assigned to Amplitude Envelope Sustain Level. If I have the VAX77 sending MIDI CC#88 messages to the Peak, I will get random Sustain levels. In the meantime, the Peak also is a marvelous MIDI controller to assign to softsynths, but MIDI CC#88 is hardwired into its firmware. So what I need to do is:

1) Somehow filter MIDI CC#88 output from the VAX77 to everything except Pianoteq.
2) Still allow the Peak to send MIDI CC#88 to everything else so that I can use it to control software.

Everywhere I look it seems to be an all-or-none proposition; I imagine the solution involves diving deep into the environment, but I am not sure how to implement this. Any help or shove in the right direction would be greatly appreciated.

Peter Ostry

Staff member
First, think about that generally:

Even if a Synth can process CC88 velocity, you can hear this increased resolution only at very low velocity levels. Actually starting at levels, where a real Grand Piano does not sound at all because you simply do not apply enough pressure to the key. With "normal" velocity I think you cannot tell the difference between velocity 91 and 92 for example and definitely not in an fluently played piece. No need for finer resolution. I would say, for a piano synth like Pianoteq the 14-bit resolution could make sense for velocities 0-15 or so. Is this the velocity range of your interest? In other words, do you compose/play piano pieces where a velocity of 5 or 7 makes a difference and where you really do not want to handle this via the volume? Otherwise it’s not worth the efforts.


"CC88 velocity" is a short term for sending velocity as LSB/MSB. First comes CC88 as LSB (Least Significant Byte), followed by a note whose velocity gets interpreted as MSB (Most Significant Byte). This was suggested by the MMA, but it is neither a MIDI functionality nor a resolution extension but rather a suggestion for an optional function manufacturers may use. Since CC and Note are different MIDI events, they cannot get combined in any way. You send much more data for your notes and additionally, if you don't filter CC88, other synths or DAW automation may get crazy (what you describe as your problem).

However, here are three suggestions to solve or partially solve your problem:

On the VAX77, turn "CC88 velocity" only on to play Pianoteq. Turn it off for everything else. As I learn from the manual, it is just one setup parameter.

—— or ——

Logic Environment, Layer "Click & Ports":

At the Physical Input you can use the Sum port and individual ports. Normally everything comes in at the Sum port. But if you connect a cable to an individual port, you get this signal here and it does no longer go to the Sum port. This is the only port-dependent splitter we have in the Environment. If your VAX77 and your Peak Controller have their own MIDI ports, you can:
  1. Filter CC88 at the Sum port (use a transformer for filtering)
  2. Allow everything at the VAX77 port (cable this port directly to the sequencer)
  3. Allow everything at the Peak port (cable this port directly to the sequencer)
I think this is the best solution:​

—— or ——

Logic Environment, Layer "Click & Ports":

If your VAX77 and Peak controller do not have their own MIDI ports, you can switch the incoming path according to your needs. Not very comfortable of course.

Connect a Cable Switcher to the Sum port of the Physical Input object. Cable the first outlet to a transformer where you filter out CC88 and then to the Sequencer Input. The second outlet of the Cable Switcher goes directly to the Sequencer Input. Cable Switcher position 0 selects the path "no CC88" which is your normal mode. If you click on the Cable switcher it goes to position 1 and everything goes to the sequencer, which is your Pianoteq/Peak mode.

If you want you can add an on/off button or control the cable switcher by some button in the Logic mixer. Unfortunately you cannot switch automatically because Logic does not tell you if a Pianoteq track is selected or not. Automatic switching by track automation is not desirable because you would need controller data for that in every track.


You can store an Environment patch within your usual Logic templates.

Warning: If you connect cables to individual ports at the Physical Input, check the Environment everytime you change your MIDI setup, after turning devices on/off or after removing/adding MIDI devices. The port list in the Physical Input can change and your short port-cables may get deleted. In such a case just draw new cables. The better solution is to use a multiport MIDI interface for all devices where this port-juggling does not happen.

Thank you for your thorough and detailed reply!

First- I agree that High Resolution MIDI Velocity may be superfluous, or at best subliminal. But since I have a setup where I could implement it, I thought I would pursue it. It may be a complete waste of time, and if I just turn it off at the VAX77 problem completely solved. The one danger with the VAX77 is that I am aware of a colleague who bricked his VAX77 while working in setup mode, so I want to avoid that as much as possible (though Eddie Jobson toured with with four VAX77s for years without any problems).

Given that, I do happen to have separate MIDI ports for everything, so I will work with the solution you provided above. My understanding of the Environment is very rudimentary, boarding on nonexistent, so I will look at this as a desperately needed learning opportunity.