Can Cantabile incorporate Poly Aftertouch as one of the Target Output options?


Is it possible to add PolyAftertouch into the list of Cantabile target options in the MIDI Filter?

So far, I can only find it as a source: Aftertouch to Controller Map > Aftertouch of a specific note

A reverse of that would be really helpful (and essential for me) : send target “To” > Controller Kind > Polyphonic Pressure (where the Controller value is not greyed out like in “Channel Pressure”).

Would be even nicer to have it in the Binding > Choose MIDI Event Kind : Polyphonic Pressure

It will be useful as Access Virus and a host of Native Instruments plugins and controllers, amongst others, all send and receive PolyAT.

Are there reasons for this currently limited implementation? Or can we expect this be added in future updates?

Thank you for such wonderful program!



Hi tksense,

Not sure I’m following. Sounds like you’re trying to map after touch to polyphonic after touch - which are the same thing so what’s the point?

To be clear in Cantabile,

  • After Touch refers to the change in pressure on a single note as it’s held. (aka Polyphonic Aftertouch)
  • Channel Pressure refers to one value representing pressure across all keys on the keyboard.

You can probably map between the two using two MIDI filters via an unused intermediate CC.

eg: this would map after touch to channel pressure:




Hi Brad,

I would like Cantabile to output Polyphonic Aftertouch (per note) in the MIDI filter.

Currently, Cantabile has these options:
CC Coarse
CC fine
NRPN Coarse
NRPN fine
RPN Coarse
RPN fine
Channel Pressure
Pitch Bend
Program Number
Song Select

But I would love one extra option in this list : Polyphonic Pressure / Polyphonic Aftertouch.

It will be useful in many ways. Here are two examples:

In Access Virus B, C, and Powercore, MIDI poly pressure message is used in the same way CC is.

This manual has clear details on how the Virus implements Polyphonic Pressure Messages as the Bank B parameters in addition to the Bank A parameters controllable by CC. (page 104, 109-112)

With Poly Aftertouch in the MIDI Filter, we can then translate incoming CC messages into Polyphonic Pressure Messages in order to access the Virus’s Bank B parameters in real-time.

Integration with Native Instruments:

MIDI controllers by Native Instruments also have Polyphonic aftertouch message among its available controller types for MIDI output. It is described in page 326 of this manual:

NI Reaktor also receives polyphonic aftertouch messages in addition to CC. Reaktor is only capable of receiving 128cc’s per “instrument”, hence, Poly Pressure offers an additional 128 controllers, making it a total of 256 controller messages Reaktor can receive per instrument (instead of making a second instrument in the “ensemble” that receives MIDI from another channel).

As you can see, Polyphonic Aftertouch offers another set of continuous controllers with 16 channels and 127 controllers each, just like CC.

If you can implement Poly Aftertouch also in the Binding’s MIDI Event Kind, then we can use Poly Aftertouch messages, output by one of the many popular Native Instruments MIDI controller for example, to control Cantabile’s internal functions - and still have the full 16 channels of CC available for outboard gears. *This will avoid overlapping assignments and accidents of unwanted CC being sent to MIDI instruments and vice versa.

We can also see more clearly what is doing what by seeing a PolyAT versus a CC assigned to the MIDI Event Kind in the Binding window. This will help us be extra organized in our own MIDI assignments.

So, I hope this will be an easy new feature you can add!
It will be like what you already have in the controller kind “Channel Pressure”, only to have “controller” not greyed out anymore, and so we can pick from controller 0-127.

Cantabile is a wonderful program, thank you so much!


Hi @tksense

Still not exactly clear on how you expect this to work.

The problem here is that polyphonic after touch has a note number associated with it. So… say you want to map channel pressure to polyphonic after touch - which note number(s) would be sent with the after touch message?



Hi Brad,

The Polyphonic Aftertouch here is used exactly like how you would use CC. You can consider this as an extra set of Control Change messages available in the MIDI spec.

Type : Control Change Message
Channel : Ch 1 -16
Parameters : CC 0 - 127
Values : variable 0-127

Type : Polyphonic Aftertouch Message
Channel : Ch 1 -16
Parameters : note# 0 - 127
Values : variable 0-127

As detailed above, both Access Virus and Native Instruments have elected to use Poly Aftertouch in addition to CC as a means of communication between devices.

Let’s say I use a Native Instruments MIDI controller to control a MIDI instrument as well as Cantabile’s transport functions. I can use PolyAT exclusively for any binding in the group “Cantabile” (only PolyAT, absolutely no CC assignments here), which leaves me with all sixteen channels of CC intact and available to use for outboard MIDI devices.

In this scenario, when I see on my MIDI controller or in the binding list under “Event” that I am triggering PolyAT messages versus CC, I’ll be instantly clear whether I am manipulating Cantabile or my sound modules.

A clear advantage is that Cantabile will never respond to unwanted CC messages coming from any MIDI devices.

For example, I may suddenly score a friend’s new synthesizer and put it in my Cantabile rig. But when I turn some knobs, it may be sending CC22 which, unbeknownst to me, also gets its way to the Cantabile binding via some internal software routing, this could change my Cantabile settings by accident.

But if Cantabile does not respond to CC at all, then I will be very sure about not having any such risk!

On the flip side, when I send control message from my MIDI controller, it could be routed to many MIDI instruments at once. If I use PolyAT instead of CC to operate Cantabile, even if such message gets simultaneously sent to all my MIDI gears, most likely nothing bad will happen!

PolyAT will make control assignments much easier to organise, because now we have two types of messages with 16 channels each (total of 32 x 128 controllers). In the aforementioned case, I can focus my attention on setting the right CCs between MIDI gears with a peace of mind that they will never interfere with my computer side of MIDI assignments. I also can have more flexibility in using a particular controller number across more channels without having to crunch some numbers into the same channel. (for example, if I need to control 32 volumes, I can assign cc7 16 times, and note7 another 16 times, without having to use another controller number.)

If PolyAT is easy to implement, I just think the reward ratio is high!

If you’re curious to test what I mean, you can download Native Instruments’ “Controller Editor” and see how Poly Pressure Message can be assigned to knobs and buttons of the long list of MIDI controllers they make. Among them, a used Maschine mk1 now can be had for very cheap !




So basically you want to convert all CC events on a particular MIDI channel to after touch events where the CC number is the note number?

Sounds a little extreme but I’m open to the idea and probably pretty easy to implement.

Anyone else have thoughts on this?


Yes, CC > polyAT would be one of the ways to use it; but it can be used many other ways too in the MIDI filter and the binding event kind - with extra advantage, as I explained above.

I am particularly looking to use it with Sysex decoder because 128 CC’s per channel are not enough for MIDI gears that tend to have very many parameters. (multitimbral instruments usually have 16 channels of a synth plus effect sections. Some even have drum sections.)

Let’s say I want to visually read a patch dump or a perforamnce dump from a MIDI device, there would be hundreds or thousands of bytes involved. On the receiving end, I have found Reaktor to be a good device panel that can receive CC, but it also receives PolyAT. So with some efforts, I can create a comprehensive interface of my hardware MIDI instruments on Reaktor.

In order to display current parameters, I’ll have to request a patch/performance sysex dump from my MIDI device. Now with the sysex decoder, cantabile can output messages that Reaktor can understand, namely CC, and hopefully PolyAT in the future.

The advantage here, again, is that PolyAT is very specific to my own internal assignments. If these messages get their way to other ports, nothing bad will happen!