Whilst playing around with an AKAI MPD26 midi controller I am close to going crazy cause I can’t manage to get the pressure data (aftertouch) of the Pads into vvvv.
I did some research in the forum and there’s almost nothing.
I wonder why? This feature is awesome!
The Pads of the MPD26 are sending Midi notes when pressed. Aftertouch data is sent on a different way: Via channel pressure message or polyphonic pressure message. I can choose between these two in the MPD settings.
Anyhow there seems to be no midi node to read this data.
Am I right?
I hope not.
Hi rozenfranck, if you are talking about releasing finger of the pad, read Key Off signal 's Velocity for the after touch .
If its pushing on the pad, just read the velocity outputted by Midi Key On.
Some hardware have possibility to just toggle their signal, without being pressure sensitiv ( Vel 0 / 127 ). but by default your akai is in Pad mode, pressure sensitiv.
did you check the signal outputed with other softwares ( midi ox, for ex)?
There is MidiShort, i recommand you to use it. you will have data, according to this table:
- define typeNote 0 /* note with pitch, velocity and duration */
- define typeKeyOn 1 /* Note On with pitch, velocity */
- define typeKeyOff 2 /* Note Off with pitch, velocity */
- define typeKeyPress 3 /* Poly Key Pressure with pitch and pressure */
- define typeCtrlChange 4 /* Control Change with controller ID and value */
- define typeProgChange 5 /* Program Change with program ID number */
- define typeChanPress 6 /* Channel Pressure with pressure value */
- define typePitchWheel 7 /* Pitch Bend Change with LSB and MSB values */
- define typeSongPos 8 /* Song Position Pointer with LSB and MSB values*/
- define typeSongSel 9 /* Song Select with song ID number */
- define typeClock 10 /* Timing Clock */
- define typeStart 11 /* Start */
- define typeContinue 12 /* Continue */
- define typeStop 13 /* Stop */
- define typeTune 14 /* Tune Request */
- define typeActiveSens 15 /* Active Sensing */
- define typeReset 16 /* System Reset */
- define typeSysEx 17 /* System Exclusive (only data bytes) */
- define typeStream 18 /* arbitrary midi bytes (data and status codes) */
- define typePrivate 19 /*19..127 Private events for applications internal use*/
- define typeProcess 128 /* used by MidiShare for MidiCall and MidiTask */
- define typeDProcess 129 /* used by MidiShare for MidiDTask */
- define typeQuarterFrame 130 /* Midi time code quarter frame */
- define typeCtrl14b 131
- define typeNonRegParam 132
- define typeRegParam 133
- define typeSeqNum 134 /* MidiFile sequence number */
- define typeTextual 135 /* MidiFile text event */
- define typeCopyright 136 /* MidiFile copyright message */
- define typeSeqName 137 /* MidiFile sequence or track name */
- define typeInstrName 138 /* MidiFile instrument name */
- define typeLyric 139 /* MidiFile lyrics */
- define typeMarker 140 /* MidiFile marker */
- define typeCuePoint 141 /* MidiFile cue point */
- define typeChanPrefix 142 /* MidiFile Midi Channel Prefix */
- define typeEndTrack 143 /* MidiFile end of track */
- define typeTempo 144 /* MidiFile tempo change */
- define typeSMPTEOffset 145 /* MidiFile smpte offset */
- define typeTimeSign 146 /* MidiFile time signature */
- define typeKeySign 147 /* MidiFile key signature */
- define typeSpecific 148 /* MidiFile specific meta event */
- define typePortPrefix 149 /* MidiFile Midi Port Prefix */
- define typeRcvAlarm 150 /* RcvAlam */
- define typeApplAlarm 151 /* ApplAlam */
- define typeReserved 152 /*152..254 reserved for future extensions */
- define typeLastReserved 254 /*152..254 reserved for future extensions */
- define typeDead 255 /* dead Task or DTask */
the data that I was talking about doesn’t concern pushing or releasing of the pad. It concerns the pressure while holding the finger on the pad.
Pushing and releasing is sent as Midi note data (on and off) which I can read with the midi note node. Turning faders or knobs is sent as Midi controller data which I can read with the midi controller node. Aftertouch is an independent midi data type and unfortunately there’s no node for it.
Anyhow, I managed to read Aftertouch data with the MidiShort node.
With the Message output pin I can S+H all messages concerning nr. 160 (Chan 1 Polyphonic Aftertouch). Data 1 & 2 then give me note# & aftertouch value. BUT: How can I get data of simultaneous pushed pads?
With MidiNote or MidiController you can just put an I-Spread from 0-128 into ‘note’ or ‘controller’ and in the resulting spread you see simultaneous midi events.
MidiShort doesn’t seem to work after this principle. So what’s the deal here?
this is called poly aftertouch. the message will have the pressed note encoded in the midi bits (not sure which). so you would have to look out for the right notes, they should all be coming in. maybe you have to increase the buffer size that none gets lost.
actually you better try with todo nodes, it can even send feedback to your controller. And i know my LPD8 sends me this annoying pressure value instead of toggle by default hehe, you can’t imagine how much i spend time before, i founded out why buttons work only half of the times haha… adding >0 solves this problem bu anyway…
as for midi short, you can try my old patch for lpd8 sure it same more or less for all the controllers
Seems I was a bit too fast with enthusiastic “that should to it”…
I tried the todo nodes now.
Works quite nice with learn mode etc.
But same thing here: I can’t map aftertouch data.
When a pad is set to ‘control pressure message’ mode whilst assigning a variable with Learn Mode, I can see the changing aftertouch value while holding my finger onto the pad. The control data column of the Input table then says: CH : 0 : value (changing with my finger pressure). As soon as I release the finger it says: CH : 0 : Note : 48.
So I don’t have the possibility to assign the aftertouch value.
If I set the pad to ‘polyphonic pressure message’ the aftertouch value can’t even be seen whilst in Learn Mode of the Todo mapper.
If I’m missing something here and somebody else got it to work with the todo nodes please(!) let me know.
Even though I managed to read aftertouch data with the MidiShort node it doesn’t seem to be usable for my purposes cause it just outputs one set of data at a time. means that if I push two or more pads simultaneously only the one that was pushed first is output.
MidiShort and KeySort is THE combination.
Everything works lovvvvely now, I feel like an idiot and my knowledge about midi has grown a bit, again.
Thanks tonfilm, by the way.
I set the pads on my mpd26 to send aftertouch data via ppr (polyphonic pressure message).
With that setting, MidiShort spits out the note number on ‘data1’ and the pressure value on ‘data2’.
KeySort splits up the serial data when several pads are pressed simultaneously. The note numbers of the pads have to be used as sort key.