Forum

Getting MIDI Aftertouch data into vvvv

Good evvvvening.

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					  */

oki dingdong. thanks for the input karistouf.

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.

KeySort (Spreads) could be handy in that case…

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

but better to start todo

Akai LPD8 (Devices MIDI).v4p (14.2 kB)

thanks guys. that should do it.

Ho ho! Learning every day a new thing… My lpd8 is aftertouching?

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.

http://avp.stackexchange.com/questions/460/how-does-the-midi-data-for-polyphonic-aftertouch-differ-from-normal-aftertouch

@antokhio:

i have my lpd8 logged: no aftertouch signal once pressed. are you sure about after touch with LPD8 ( Key On on first press then note ? )

or where youworking in CC mode ?

i still did’t get what is midi aftertouch i thought it’s a pressure actually

technically exactly the same as control change. don’t get irritated by the name and normal use, you can use it for whatever you want.

ok, so there is no after touch on LPD8 !

for those who care:

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.

perhaps, you could provide a patch that explains your knowledge gains?