Making instruments and FXs in MaxMSP/M4L and Osmose : trying to figure out the basics

Hi there, I’m quite new to MPE, but have some experience with Max.
I’m trying to decipher the output of Osmose (port 2) with the help of Max, with the goal to make my own instruments and Midi FXs mainly in M4L.
I’m looking for practical resources. Do you have tips ? Good practice advices ? Please let me know !

So far, what I understood is (please feel free to comment/correct me !) :

Using mpeparse and midi parse objects, I found that :
Each voice has its own channel from 2 to 16. Per channel, I’ve witnessed 4 messages :

  • pitch bend (you have to use the @hires 1 attribute to make it useable)
  • aftertouch : this is the press of the ‘first press zone’ of the key, [0-127]
  • CC 74 and 87: cc74 relays the pressing of the key. Once you’ve reach the end of the ‘aftertouch zone’, cc74 goes [0-127]. CC87 happens concurrently to the ‘aftertouch zone’ : but I don’t get what is the nature of this value.
  • a pair of note and velocity : velocity is either 0 or 127 (off and on), and ignore the ‘note on’ threshold in the ‘sensitivity’ settings.

‘Poly key pressure’ output of midi parse never outputs anything : what is it used for ?

Then, how do you use this data ?
My assumptions are :
[polymidiin] is an object that helps dealing with mpe data in a [poly~] patcher
What else ?

I hope you’ll forgive my chaotic/heuristic approach to this. Looking forward for your help !


it would be easier to use port one not port two.

port one is ‘standard mpe’, which Max has built-in support for.
(strictly speak port one is whatever you set Ext Midi too)

port two is Haken’s own MPE+ which you could implement, but will be more effort.
I personally do NOT think you will gain much with MPE+

one of the primary reasons for MPE+ was to get 21bit pitchbend, since for the largest continuum 14 bit was not enough.
this is a mute point for the Osmose which has a very small range of movement on the X axis.

for sure MPE+ also makes Z/Y 14 bit, but with appropriate interpolation, you’ll find 7 bit fine.

as for specs… well midi association has MPE specs
and there are details on the HakenAudio website for the MPE+ specs


I’ll go into the documentation again. But what I’m missing, I guess, is some tutorial, or at least examples of MPE devices coded in Max/MSP, that could help a lot.
I mean, look at… roughly ZERO MPE synths !

CC87 is just used to provide the extra resolution of MPE+. I wont go into detail since its already described on Hakens page about MPE+ and you’ll need to be familiar with concepts such as msb and lsb. If you completely ignore the CC87 messages then you’ll mostly end up with normal MPE, since MPE+ is backwards compatible in that way.

the max help page for polymidiin… has an example, though quite simple.

the main thing is, max will do the voicing for you, which can be the tricky bit…

apart from that… the main usage, you already have…

CC74 = Y
channel AT = pressure/Z
for pitch you use note + pitchbend

as for using note on/velocity, thats your choice…
often I prefer to simply use Z to control the VCA.

I tend to only use the note on/velocity if I want to have ‘punchy’ sound,
something that is faster than the surface can provide.

generally I don’t tend to use as much automation, or envelopes for mpe synths,
rather we ‘play’ the envelope with our fingers.

but experiment, see what you like… its very personal, and also highly dependent on the surface.
… the Osmose is going to be very different in this regard to many mpe controllers.

one question though…
why use Max to create a synth?
you can use the Eagan Matrix to do so much… and it’ll be standalone.

is there something particular you are trying to create?
things based off samples, would be a reason to go external… as EM doesn’t do anything in this area.
but, personally, Im not a huge fan of samples with expressive controllers… you tend to lack control.

1 Like

Thanks !

Many reasons : samples, share to others, MIDI FXs…

That’s to be explored. I think wavetables could be awesome. Also, granular “travel” across a sample with Z axis seems to be worth exploring, don’t you think ?

1 Like

For some of those explorations and more in the way of instant gratification, consider using Surge XT since it has plenty of features, already works with MPE and is free.

1 Like

Oh, thank you for the suggestion !

No problem, although it Is probably missing a couple of the types of synthesis/sound sources that you mention, in which case you could consider exploring the MPE side of something like VCV rack.

eg you can probably explore wavetable stuff using Surge XT, but maybe not samples or granular.

1 Like

Oh and you can also blend those two different options because Surge XT modules are available for VCV rack, so you could reuse Surge familiarity in a modular context and then use other VCV modules to offer the bits that the main Surge XT doesnt offer.

1 Like

yeah, Ive done this with the Madrona Labs Soundplane …
(though as its continuous I could use X/Y to do scrub through samples)

wavetable synths are indeed fun, using Y to scan through is a very natural fit.

as @SteveElbows menioned, vcvrack is a fun choice too… as there are so many modules, and you can play with the expression lanes very easily as they are ‘just voltages’

I wasn’t implying we don’t need other synths etc… I use an eclectic mix of software/hardware with my controllers :slight_smile:

anyway, I was just curious what your motivations were, what you were thinking of doing.

enjoy your explorations

1 Like