Can max convert a note off message to a program change message ?
Hey !
I do this today with bome midi translator , and it works perfectly , but if its doable in max for live , thats one less app open ..
In bome any note off message will automatically get translated into a program change message based on the note number , for example the a note off message on c -2 gets translated into a program change message 00 , and a c# - 2 gets translated into a program change message 01 etc . and sent to the midi output of that track , does Max have the ability to do something similar ?
easy thing to do, also several ways to do so.
depends what you use for note input.
if note in, than connect it to
if $i2 == 0 then $i1
and output key number to pgmout or midiout with raw midi byte for program change prepended

cool !
so , what i use for note input .. its a note written in a midi clip on a midi track in ableton , is that what you mean ?
So i tried to just copy the patch you shared a picture off , and it just flat out works !
pretty awesome , makes me want to get more into max actually !
So one weird thing , c -2 and c# - 2 both output program change 000 for some reason , but an octave higher at c -1 and c# -1 they spit out two different ones , does this makes sense somehow ?
anyway thanks a bunch

you either use midiin or notein.
You don't connect midiin to notein.
pgmout is using numbering 1 -128 for actual 0 -127.
So you insert + 1 or use midiout instead.
here are both options, use one or the other,
but not some strange combination of both...

hehe , im truly a newbie here , thanks a lot !
I tried both the ways, and still the two lowest notes c -2 and c# - 2 spits out the same program change message , its really not a problem , i just start using notes from c# - 2 and it works as it should :)
i have a dummy midi effect rack on the track which names the notes the correct A1 , A2 etc that my digitakt patterns are called , and now i am just moving all of them one step up
i just thought it was an interesting behaviour ..
i dont understand how it works , but it does , which is awesome
the simple truth is that midi program change message has raw midi status byte 192 - 207 for channels 1 - 16 and program change value ranging from 0 - 127, end of story.
If one midi device displays received 0 - 127 as 1 -128 or not is irrelevant.
max pgmin and pgmout objects do shift real range 0 -127 to displayed range 1 -128.
If you input 1 to pgmout it will transmit 0 to the the midi pipe.
If you input 0 it will clip it to it's valid range 1-128.
That explains why both 0 and 1 produce 0 at output.
If object that receives message is set to display 0 - 127 or 1- 128 it, is it's own decision.
But midi transmitted is limited to 0 -127.
So you have some missmatch in your system, I can't say what.
"max pgmin and pgmout objects do shift real range 0 -127 to displayed range 1 -128."
which leaves a lot of room to fight over how useful this behaviour is.
it comes from old times before midi existance,no one wanted to see any zeroes( = nothing)
displayed at their old gear displays.
Presets were named form 1 upwards , similar to bar count which starts with 1.1.0 in any sequencer, being acutually 0.0.0 or zero elapsed time.
how much time elapsed in 11/8 time signature at timeline point 54 bars, 7 beats and 33 ticks ?
you take 53 bars, 6 beats and add the rest...
same way one has to live with pgm... max objects - thinking it right.