My keyboard can generate Mono-Aftertouch but my synth (Hydrasynth) will accept (… and loves) Polyphonic-Aftertouch. I noticed that I can apply a filter in GP and map Aftertouch to something. I would like to map it to Polyphonic-Aftertouch but it is disabled. ??
Polyphonic aftertouch requires a note number along with the pressure but channel pressure (aka monophonic aftertouch) doesn’t provide a note number, that’s why you can’t map it directly. You’d have to get very clever with GPScript to do something useful here.
Thanks for the clarification. Now, I just a need someone like @PianoPaul to write a general script that maps Mono to Poly
You can use @ before the name
so @pianopaul
Do you have something in mind?
Transform “normal” Aftertouch into Poly-Aftertouch (that requires a note number along with the pressure)
I suppose you could keep track of the most recent note played and use that for poly pressure but I’m not sure how musically useful that is
Yes, but with only one aftertouch information available for all notes what to do?
So your idea would be to use aftertouch only for one single note, the last played?
The problem is not to create notes with poly-aftertouch, but to figure out with aftertouch value to add to each note when there is only one aftertouch ribon for all keys.
It depends what @Phil would like to do with poly/-aftertouch understanding that it has to be a capacity of the MIDI controller. We could “freeze” the aftertouch for all notes but the higher of a chord and control the after-touch only for this one and at the same time control the aftertouch of the lowest key with a MIDI pedal controller. Well, we can do a lot of crazy things and not sure this make sense, but we cannot have a different aftertouch value when pressing keys differently if the controller has not one aftertouch sensor per key.
Looks like the answer comes down to “what is most musical”. @David-san , can you try a few scripts and see what works for you … assuming you have a standard keyboard with only mono-aftertouch?
May you can test with this script:
Var
MIN : MidiInBlock
MM : MidiMessage
NN : Integer
VV : Integer
CH : Integer
On NoteOnEvent(m : NoteMessage) from MIN
SendNow(MIN,m)
NN = GetNoteNumber(m)
VV = GetVelocity(m)
CH = GetChannel(m)
if IsAfterTouch(m) then
MM = MakeMidiMessage(160 + CH, NN, VV)
SendNow(MIN, MM)
end
End
//Called when an aftertouch (channel pressure) message is received at some MidiIn block
On AfterTouchEvent(m : AfterTouchMessage) from MIN
MM = MakeMidiMessage(160 + CH, NN, VV)
SendNow(MIN, MM)
End
@pianopaul - I will give it a try this evening … Thank you
I am not in a position for testing this and I am perhaps wrong, but I would say that there is no chance to get an aftertouch message within a note ON event callback:
Regarding the aftertouch callback itself:
As for a given played note VV is constant after the note is played, is it not rather:
MM = MakeMidiMessage(160 + CH, NN, GetAfterTouchValue(m))
While I like the idea, I am not sure what is the use case for this… play chords with constant aftertouch while playing single notes with aftertouch? I am curious what @Phil will do with it…
Well, if you have ever experimented with the “Highest only” option of the MIDI In block, you can imagine playing a solo with your right hand while holding down chords with left hand and the aftertouch would only apply to your solo notes.
Just one idea.
Yes, that’s what I imagined. But, this particular use case could perhaps be reroduced without scripting with two different MIDI blocks with and without blocking the after touch.
I don’t see how…if you send an aftertouch message by itself, it would still impact all notes
One MIDI in block for the left hand split with aftertouched blocked and one MIDI in block for the right hand split with aftertouch alllowed:
Could it be that you blocked the Note OFF event in your MIDI in block?
Did you actually try that? If you use aftertouch (i.e, channel pressure, no note number), then all notes that you played with your left hand will still be impacted by the incoming aftertouch message.