Poly aftertouch possible via filter?

I saw this and it made me wonder if via filtering this is possible?
How To Add Poly Aftertouch To Any Keyboard - YouTube

Hi @So_Godly,

time ago, I wrote a ReaJS script just for that (or something similar, in the video there are no details about which note is given AT). My script uses the Channel AT information and sends it as Poly AT, using the last note played as note information.

You can find the latest version here (see the start of the thread for details):

The idea started while discussing the GX-80 by Cherry Audio:

It would be easy, I guess, to implement it as a filter, maybe @brad has already logged it in trello but it would require some interest in it from the community to give it higher priority.

Gabriel

1 Like

@cdv_gabriel I’m certainly open to porting your script to a Cantabile MIDI filter if you’re happy for me to do so.

Does the script ever send MIDI based on timing? Cantabile MIDI filters can only send MIDI in response to receiving MIDI and not based purely on timing.

Hi @brad,

I would be glad if you could port my script into a filter.
I have checked my code and basically it is divided into two parts (two while loops).

The first part is a loop whose body is executed only on a midi receive. I seem to remember that it looks for all midi messages contained in a buffer. It deals with them (expecially with note on/offs and channel pressure) and generates poly-AT basing on the last held note for each channel pressure message. When all messages have been dealt with, it exits from the loop. There is also some logic to deal with the attack and release phases: when the latched note changes, the transition can be smoothed out (a “lag” behaviour like in an ARP 2600…a low pass filter!). During the attack and release phases, poly-AT messages are generated by the second part of the script. This behaviour can be switched off if desired.

The second part was added to deal with transitions. In order to produce smooth transitions of poly-AT values when the latched note changes (attack: from 0 to the channel pressure value, release: from the channel pressure value to zero), I added the possibility to have an attack and a release phase. This part generates poly-AT messages by itself, with a selectable time spacing, and it is timed using the offset within the buffer. The attack time ends when the auto-generated poly-AT value reaches the current channel pressure value; the release time ends when the poly-AT reaches zero.
From what you say, I guess that the attack and release parts could be impossible to implement in a filter.
Maybe the first part could be implemented, one needs to latch the last NOTE ON information and convert incoming channel pressure messages into poly-AT messages, using the last note information to fill the poly-AT note field.

Let me know if you need any further information.

Gabriel

1 Like

Hrm, unfortunately that sounds like it won’t work in Cantabile’s MIDI Filter framework. Probably best left as a reajs script.