Thanks a lot for the answer.
I've just tried put the data3 to 0 and it still crash. In fact, this
error occurs also for
values of data1 >= 192  (I tried 193, 194, etc.)

Yeah, but that's logical.
"192" means "now I'm going to send a program change which refers to the first MIDI channel", 193 means the same for the second channel and so on up to 207.


It's not only strange, but also a bit annoying for my purpose ... ;-)

Yes, quite so. It should be less strange and less annoying :-).


Seems to be linked to linux version ?


Confirmed. The code below is what I posted to the list to demonstrate program change. This works on my Win laptop and on this machine (Demudi, stable) I get the same error that you did. (you can also insert "0 => msg.data3;" for the same results)

-----------------
MidiOut mout;
MidiMsg msg;
mout.open(0);

//refers to a program change on the first channel
//add to it for following channels
192 => msg.data1;
//refers to the program to be loaded
4 => msg.data2;

mout.send(msg);
---------------

So, erm, the Linux version lacks the undocumented feature that the Windows version has. :-)

Sorry,
Kas.